[gcalctool] Sort currency names



commit f5af0d7d16bc218ae2b5f8911116e4049ca1e98b
Author: Robert Ancell <robert ancell canonical com>
Date:   Tue Feb 1 09:54:28 2011 +1100

    Sort currency names

 src/currency-manager.c |    2 +-
 src/currency-manager.h |    2 +-
 src/unit-manager.c     |   16 +++++++++++++---
 3 files changed, 15 insertions(+), 5 deletions(-)
---
diff --git a/src/currency-manager.c b/src/currency-manager.c
index 832034c..be9c905 100644
--- a/src/currency-manager.c
+++ b/src/currency-manager.c
@@ -121,7 +121,7 @@ currency_manager_get_default(void)
 }
 
 
-const GList *
+GList *
 currency_manager_get_currencies(CurrencyManager *manager)
 {
      return manager->priv->currencies;
diff --git a/src/currency-manager.h b/src/currency-manager.h
index 1bb9b90..028ba2a 100644
--- a/src/currency-manager.h
+++ b/src/currency-manager.h
@@ -26,7 +26,7 @@ GType currency_manager_get_type(void);
 
 CurrencyManager *currency_manager_get_default(void);
 
-const GList *currency_manager_get_currencies(CurrencyManager *manager);
+GList *currency_manager_get_currencies(CurrencyManager *manager);
 
 Currency *currency_manager_get_currency(CurrencyManager *manager, const gchar *name);
 
diff --git a/src/unit-manager.c b/src/unit-manager.c
index 3e96fb9..f67dcee 100644
--- a/src/unit-manager.c
+++ b/src/unit-manager.c
@@ -15,11 +15,18 @@ G_DEFINE_TYPE (UnitManager, unit_manager, G_TYPE_OBJECT);
 static UnitManager *default_unit_manager = NULL;
 
 
+static gint
+compare_currencies(gconstpointer a, gconstpointer b)
+{
+    return strcmp(currency_get_display_name((Currency *)a), currency_get_display_name((Currency *)b));
+}
+
+
 UnitManager *
 unit_manager_get_default(void)
 {
     UnitCategory *category = NULL;
-    const GList *iter;
+    GList *currencies, *iter;
     int i;
     const struct
     {
@@ -107,7 +114,9 @@ unit_manager_get_default(void)
     }
 
     category = unit_manager_add_category(default_unit_manager, "currency", _("Currency"));
-    for (iter = currency_manager_get_currencies(currency_manager_get_default()); iter; iter = iter->next)
+    currencies = g_list_copy(currency_manager_get_currencies(currency_manager_get_default()));
+    currencies = g_list_sort(currencies, compare_currencies);
+    for (iter = currencies; iter; iter = iter->next)
     {
         Currency *currency = iter->data;
         gchar *format;
@@ -118,7 +127,8 @@ unit_manager_get_default(void)
         g_free(format);
 
         unit_category_add_unit(category, unit);
-    }  
+    }
+    g_list_free(currencies);
 
     return default_unit_manager;
 }



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]