Fixes NB#115922, do not show duplicate entries in Country list
authorSergio Villar Senín <svillar@igalia.com>
Tue, 12 May 2009 18:18:13 +0000 (20:18 +0200)
committerSergio Villar Senín <svillar@igalia.com>
Tue, 12 May 2009 18:19:12 +0000 (20:19 +0200)
src/modest-init.c
src/modest-utils.c

index b848f20..5d3189a 100644 (file)
@@ -580,22 +580,12 @@ init_debug_logging (void)
 static void
 init_i18n (void)
 {
-       /* little trick make en_GB the fallback language, instead
-        * of the logical IDs
-        * we need the ugly ifdefs, because modest_platform_init is
-        * too late.
-        */
        const gchar *lc_messages = getenv ("LC_MESSAGES");
 
        if (!lc_messages) {
                setenv ("LANGUAGE", "en_GB", 1);
                setenv ("LC_MESSAGES", "en_GB", 1);
-       } else {
-               gchar *language = g_strdup_printf ("%s:en_GB", lc_messages);
-               setenv ("LC_MESSAGES", language, 1);
-               g_free (language);
        }
-       /* end of little trick */
 
        bindtextdomain (GETTEXT_PACKAGE, MODEST_LOCALE_DIR);
        bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
index b65a0b5..afd91eb 100644 (file)
@@ -978,7 +978,7 @@ modest_utils_fill_country_model (GtkTreeModel *model, gint *locale_mcc)
        char line[MCC_FILE_MAX_LINE_LEN];
        guint previous_mcc = 0;
        gchar *territory;
-
+       GHashTable *country_hash;
        FILE *file;
 
        /* First we need to know our current region */
@@ -1026,10 +1026,13 @@ modest_utils_fill_country_model (GtkTreeModel *model, gint *locale_mcc)
                g_warning ("Could not open mcc_mapping file");
                return;
        }
+
+       country_hash = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL);
        while (fgets (line, MCC_FILE_MAX_LINE_LEN, file) != NULL) {
 
                int mcc;
                char *country = NULL;
+               GtkTreeIter iter;
                const gchar *name_translated;
 
                mcc = parse_mcc_mapping_line (line, &country);
@@ -1038,22 +1041,27 @@ modest_utils_fill_country_model (GtkTreeModel *model, gint *locale_mcc)
                        continue;
                }
 
-               if (mcc == previous_mcc) {
-                       /* g_warning ("already seen: %s", line); */
+               if (mcc == previous_mcc ||
+                   g_hash_table_lookup (country_hash, country)) {
+                       g_message ("already seen: '%s' %d", country, mcc);
                        continue;
                }
                previous_mcc = mcc;
 
+               g_hash_table_insert (country_hash, g_strdup (country), GINT_TO_POINTER (mcc));
+
                name_translated = dgettext ("osso-countries", country);
 
                /* Add the row to the model: */
-               GtkTreeIter iter;
                gtk_list_store_append (GTK_LIST_STORE (model), &iter);
                gtk_list_store_set(GTK_LIST_STORE (model), &iter, 
                                   MODEST_UTILS_COUNTRY_MODEL_COLUMN_MCC, mcc, 
                                   MODEST_UTILS_COUNTRY_MODEL_COLUMN_NAME, name_translated, 
                                   -1);
        }
+
+
+       g_hash_table_unref (country_hash);
        fclose (file);
 
        /* Fallback to Finland */