From: Jose Dapena Paz Date: Fri, 15 Jun 2007 10:23:28 +0000 (+0000) Subject: * src/modest-text-utils.[ch]: X-Git-Tag: git_migration_finished~3264 X-Git-Url: http://git.maemo.org/git/?p=modest;a=commitdiff_plain;h=3e8ecec4aa187f222e95e305f70b5f67ee60d4ce * src/modest-text-utils.[ch]: * (modest_text_utils_get_subject_prefix_len): added some strings to the subject filter. * src/widgets/modest-header-view.c: * Added (cmp_subject_rows), that compares the subjects filtering the Re:, Fwd:, etc. * Now it uses the new cmp_subject_rows function to sort the headers with subject field. pmo-trunk-r2252 --- diff --git a/src/modest-text-utils.c b/src/modest-text-utils.c index f35a127..df9b846 100644 --- a/src/modest-text-utils.c +++ b/src/modest-text-utils.c @@ -957,10 +957,11 @@ modest_text_utils_get_subject_prefix_len (const gchar *sub) { gint i; static const gchar* prefix[] = { - "Re:", "RE:", "Fwd:", "FWD:", "FW:", NULL + "Re:", "RE:", "RV:", "re:" + "Fwd:", "FWD:", "FW:", "fwd:", "Fw:", "fw:", NULL }; - if (!sub || (sub[0] != 'R' && sub[0] != 'F')) /* optimization */ + if (!sub || (sub[0] != 'R' && sub[0] != 'F' && sub[0] != 'r' && sub[0] != 'f')) /* optimization */ return 0; i = 0; diff --git a/src/widgets/modest-header-view.c b/src/widgets/modest-header-view.c index decad30..62e604d 100644 --- a/src/widgets/modest-header-view.c +++ b/src/widgets/modest-header-view.c @@ -60,6 +60,11 @@ static gint cmp_rows (GtkTreeModel *tree_model, GtkTreeIter *iter2, gpointer user_data); +static gint cmp_subject_rows (GtkTreeModel *tree_model, + GtkTreeIter *iter1, + GtkTreeIter *iter2, + gpointer user_data); + static void on_selection_changed (GtkTreeSelection *sel, gpointer user_data); @@ -445,6 +450,10 @@ modest_header_view_set_columns (ModestHeaderView *self, const GList *columns, Tn TNY_GTK_HEADER_LIST_MODEL_FLAGS_COLUMN, (GtkTreeIterCompareFunc) cmp_rows, compact_column, NULL); + gtk_tree_sortable_set_sort_func (GTK_TREE_SORTABLE (sortable), + TNY_GTK_HEADER_LIST_MODEL_SUBJECT_COLUMN, + (GtkTreeIterCompareFunc) cmp_subject_rows, + compact_column, NULL); } @@ -813,6 +822,10 @@ modest_header_view_set_folder_intern (ModestHeaderView *self, TnyFolder *folder) TNY_GTK_HEADER_LIST_MODEL_FLAGS_COLUMN, (GtkTreeIterCompareFunc) cmp_rows, cols->data, NULL); + gtk_tree_sortable_set_sort_func (GTK_TREE_SORTABLE(sortable), + TNY_GTK_HEADER_LIST_MODEL_SUBJECT_COLUMN, + (GtkTreeIterCompareFunc) cmp_subject_rows, + cols->data, NULL); } /* Set new model */ @@ -1093,6 +1106,30 @@ cmp_rows (GtkTreeModel *tree_model, GtkTreeIter *iter1, GtkTreeIter *iter2, } } +static gint +cmp_subject_rows (GtkTreeModel *tree_model, GtkTreeIter *iter1, GtkTreeIter *iter2, + gpointer user_data) +{ + gint t1, t2; + gchar *val1, *val2; + gint cmp; +/* static int counter = 0; */ + + g_return_val_if_fail (GTK_IS_TREE_VIEW_COLUMN(user_data), 0); + + gtk_tree_model_get (tree_model, iter1, TNY_GTK_HEADER_LIST_MODEL_SUBJECT_COLUMN, &val1, + TNY_GTK_HEADER_LIST_MODEL_DATE_SENT_TIME_T_COLUMN, &t1, -1); + gtk_tree_model_get (tree_model, iter2, TNY_GTK_HEADER_LIST_MODEL_SUBJECT_COLUMN, &val2, + TNY_GTK_HEADER_LIST_MODEL_DATE_SENT_TIME_T_COLUMN, &t2, -1); + + cmp = modest_text_utils_utf8_strcmp (val1 + modest_text_utils_get_subject_prefix_len(val1), + val2 + modest_text_utils_get_subject_prefix_len(val2), + TRUE); + g_free (val1); + g_free (val2); + return cmp; +} + /* Drag and drop stuff */ static void drag_data_get_cb (GtkWidget *widget, GdkDragContext *context,