/* Restore sort column id */
if (cols) {
type = modest_tny_folder_guess_folder_type (folder);
+ if (type == TNY_FOLDER_TYPE_INVALID)
+ g_warning ("%s: BUG: TNY_FOLDER_TYPE_INVALID", __FUNCTION__);
+
sort_colid = modest_header_view_get_sort_column_id (self, type);
sort_type = modest_header_view_get_sort_type (self, type);
gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE(sortable),
/* Sort tree model */
type = modest_tny_folder_guess_folder_type (priv->folder);
- gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE(sortable),
+ if (type == TNY_FOLDER_TYPE_INVALID)
+ g_warning ("%s: BUG: TNY_FOLDER_TYPE_INVALID", __FUNCTION__);
+ else {
+ gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE(sortable),
sort_colid,
sort_type);
- /* Store new sort parameters */
- modest_header_view_set_sort_params (self, sort_colid, sort_type, type);
-
- /* Save GConf parameters */
-/* modest_widget_memory_save (modest_runtime_get_conf(), */
-/* G_OBJECT(self), "header-view"); */
-
+ /* Store new sort parameters */
+ modest_header_view_set_sort_params (self, sort_colid, sort_type, type);
+ }
}
void
gpointer user_data)
{
ModestHeaderViewPrivate *priv;
- ModestWindowMgr *mgr = NULL;
- GObject *source = NULL;
SetFolderHelper *info;
-
- priv = MODEST_HEADER_VIEW_GET_PRIVATE(self);
+ ModestWindow *main_win;
+
+ g_return_if_fail (self);
+
+ priv = MODEST_HEADER_VIEW_GET_PRIVATE(self);
+ main_win = modest_window_mgr_get_main_window (modest_runtime_get_window_mgr (),
+ FALSE); /* don't create */
+ if (!main_win) {
+ g_warning ("%s: BUG: no main window", __FUNCTION__);
+ return;
+ }
+
if (priv->folder) {
g_mutex_lock (priv->observers_lock);
tny_folder_remove_observer (priv->folder, TNY_FOLDER_OBSERVER (self));
ModestMailOperation *mail_op = NULL;
GtkTreeSelection *selection;
- /* Get main window to use it as source of mail operation */
- mgr = modest_runtime_get_window_mgr ();
- source = G_OBJECT (modest_window_mgr_get_main_window (modest_runtime_get_window_mgr ()));
-
/* Set folder in the model */
modest_header_view_set_folder_intern (self, folder);
-
+
/* Pick my reference. Nothing to do with the mail operation */
priv->folder = g_object_ref (folder);
info->user_data = user_data;
/* Create the mail operation (source will be the parent widget) */
- mail_op = modest_mail_operation_new (source);
+ mail_op = modest_mail_operation_new (G_OBJECT(main_win));
modest_mail_operation_queue_add (modest_runtime_get_mail_operation_queue (),
mail_op);
static gint compare_priorities (TnyHeaderFlags p1, TnyHeaderFlags p2)
{
- p1 = p1 & TNY_HEADER_FLAG_PRIORITY;
- p2 = p2 & TNY_HEADER_FLAG_PRIORITY;
- if (p1 == 0)
- p1 = TNY_HEADER_FLAG_LOW_PRIORITY + 1;
- if (p2 == 0)
- p2 = TNY_HEADER_FLAG_LOW_PRIORITY + 1;
- return p1 - p2;
+
+ /* HH, LL, NN */
+ if (p1 == p2)
+ return 0;
+
+ /* HL HN */
+ if (p1 == TNY_HEADER_FLAG_HIGH_PRIORITY)
+ return 1;
+
+ /* LH LN */
+ if (p1 == TNY_HEADER_FLAG_LOW_PRIORITY)
+ return -1;
+
+ /* NH */
+ if ((p1 == TNY_HEADER_FLAG_NORMAL_PRIORITY) && (p2 == TNY_HEADER_FLAG_HIGH_PRIORITY))
+ return -1;
+
+ /* NL */
+ return 1;
+
}
static gint
return cmp ? cmp : t1 - t2;
- case TNY_HEADER_FLAG_PRIORITY:
- gtk_tree_model_get (tree_model, iter1, TNY_GTK_HEADER_LIST_MODEL_FLAGS_COLUMN, &val1,
+ case TNY_HEADER_FLAG_PRIORITY_MASK: {
+ TnyHeader *header1 = NULL, *header2 = NULL;
+
+ gtk_tree_model_get (tree_model, iter1, TNY_GTK_HEADER_LIST_MODEL_INSTANCE_COLUMN, &header1,
TNY_GTK_HEADER_LIST_MODEL_DATE_SENT_TIME_T_COLUMN, &t1,-1);
- gtk_tree_model_get (tree_model, iter2, TNY_GTK_HEADER_LIST_MODEL_FLAGS_COLUMN, &val2,
+ gtk_tree_model_get (tree_model, iter2, TNY_GTK_HEADER_LIST_MODEL_INSTANCE_COLUMN, &header2,
TNY_GTK_HEADER_LIST_MODEL_DATE_SENT_TIME_T_COLUMN, &t2,-1);
/* This is for making priority values respect the intuitive sort relationship
- * as HIGH is 11, LOW is 01, and we put NORMAL AS 10 (2) */
- cmp = compare_priorities (val1, val2);
+ * as HIGH is 01, LOW is 10, and NORMAL is 00 */
- return cmp ? cmp : t1 - t2;
+ if (header1 && header2) {
+ cmp = compare_priorities (tny_header_get_priority (header1),
+ tny_header_get_priority (header2));
+ g_object_unref (header1);
+ g_object_unref (header2);
+ return cmp ? cmp : t1 - t2;
+ }
+
+ return t1 - t2;
+ }
default:
return &iter1 - &iter2; /* oughhhh */
}