Fixes NB#117618, autocomplete own user name with the proper name from Me Card
[modest] / src / modest-utils.c
index b65a0b5..b91f6e6 100644 (file)
@@ -618,8 +618,7 @@ launch_sort_headers_dialog (GtkWindow *parent_window,
        sort_ids[sort_key] = TNY_HEADER_FLAG_PRIORITY_MASK;
        priority_sort_id = sort_key;
        
-       sortable = GTK_TREE_SORTABLE (gtk_tree_model_filter_get_model
-                                     (GTK_TREE_MODEL_FILTER (gtk_tree_view_get_model (GTK_TREE_VIEW (header_view)))));
+       sortable = GTK_TREE_SORTABLE (gtk_tree_view_get_model (GTK_TREE_VIEW (header_view)));
        /* Launch dialogs */
        if (!gtk_tree_sortable_get_sort_column_id (sortable,
                                                   &current_sort_colid, &current_sort_type)) {
@@ -978,7 +977,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 +1025,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 +1040,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 */