X-Git-Url: http://git.maemo.org/git/?a=blobdiff_plain;f=src%2Fwidgets%2Fmodest-header-view.c;h=41512822b9d167121cd252234ce5e3b7ab7588bb;hb=b70734073cfc2ac74c63fa8e299d97cab7df7962;hp=aeddf0ca0ab524d2297220df3916b8ba1a64f544;hpb=537099bbfb23c90bd7770f0fc3cbcedaf1c54faa;p=modest diff --git a/src/widgets/modest-header-view.c b/src/widgets/modest-header-view.c index aeddf0c..4151282 100644 --- a/src/widgets/modest-header-view.c +++ b/src/widgets/modest-header-view.c @@ -115,10 +115,9 @@ static void modest_header_view_notify_observers( GtkTreeModel *model, const gchar *tny_folder_id); -static gboolean modest_header_view_on_expose_event( - GtkTreeView *header_view, - GdkEventExpose *event, - gpointer user_data); +static gboolean modest_header_view_on_expose_event (GtkTreeView *header_view, + GdkEventExpose *event, + gpointer user_data); typedef enum { HEADER_VIEW_NON_EMPTY, @@ -381,8 +380,10 @@ modest_header_view_set_columns (ModestHeaderView *self, const GList *columns, Tn g_object_set_data (G_OBJECT (renderer_recpt_box), "date-renderer", renderer_compact_date_or_status); g_object_set (G_OBJECT (renderer_subject_box), "yalign", 1.0, NULL); +#ifdef MODEST_PLATFORM_MAEMO gtk_cell_renderer_set_fixed_size (renderer_subject_box, -1, 32); gtk_cell_renderer_set_fixed_size (renderer_recpt_box, -1, 32); +#endif g_object_set (G_OBJECT (renderer_recpt_box), "yalign", 0.0, NULL); g_object_set(G_OBJECT(renderer_header), "ellipsize", PANGO_ELLIPSIZE_END, @@ -404,9 +405,15 @@ modest_header_view_set_columns (ModestHeaderView *self, const GList *columns, Tn g_object_set (G_OBJECT (renderer_attach), "yalign", 0.0, NULL); +#ifdef MODEST_PLATFORM_MAEMO gtk_cell_renderer_set_fixed_size (renderer_attach, 32, 26); gtk_cell_renderer_set_fixed_size (renderer_priority, 32, 26); gtk_cell_renderer_set_fixed_size (renderer_compact_header, -1, 64); +#else + gtk_cell_renderer_set_fixed_size (renderer_attach, 16, 16); + gtk_cell_renderer_set_fixed_size (renderer_priority, 16, 16); + /* gtk_cell_renderer_set_fixed_size (renderer_compact_header, -1, 64); */ +#endif remove_all_columns (self); @@ -952,27 +959,6 @@ modest_header_view_on_expose_event(GtkTreeView *header_view, return FALSE; } -/* - * This function sets a sortable model in the header view. It's just - * used for developing purposes, because it only does a - * gtk_tree_view_set_model - */ -static void -modest_header_view_set_model (GtkTreeView *header_view, GtkTreeModel *model) -{ -/* GtkTreeModel *old_model_sort = gtk_tree_view_get_model (GTK_TREE_VIEW (header_view)); */ -/* if (old_model_sort && GTK_IS_TREE_MODEL_SORT (old_model_sort)) { */ -/* GtkTreeModel *old_model; */ -/* ModestHeaderViewPrivate *priv; */ -/* priv = MODEST_HEADER_VIEW_GET_PRIVATE (header_view); */ -/* old_model = gtk_tree_model_sort_get_model (GTK_TREE_MODEL_SORT (old_model_sort)); */ - -/* /\* Set new model *\/ */ -/* gtk_tree_view_set_model (header_view, model); */ -/* } else */ - gtk_tree_view_set_model (header_view, model); -} - TnyFolder* modest_header_view_get_folder (ModestHeaderView *self) { @@ -1003,6 +989,9 @@ set_folder_intern_get_headers_async_cb (TnyFolder *folder, self = MODEST_HEADER_VIEW (user_data); priv = MODEST_HEADER_VIEW_GET_PRIVATE(self); + if (cancelled || err) + return; + /* Add IDLE observer (monitor) and another folder observer for new messages (self) */ g_mutex_lock (priv->observers_lock); @@ -1087,12 +1076,10 @@ modest_header_view_set_folder_intern (ModestHeaderView *self, TnyFolder *folder) } /* Set new model */ - modest_header_view_set_model (GTK_TREE_VIEW (self), filter_model); + gtk_tree_view_set_model (GTK_TREE_VIEW (self), filter_model); modest_header_view_notify_observers(self, GTK_TREE_MODEL(filter_model), tny_folder_get_id(folder)); g_object_unref (G_OBJECT (filter_model)); -/* modest_header_view_set_model (GTK_TREE_VIEW (self), sortable); */ -/* g_object_unref (G_OBJECT (sortable)); */ /* Free */ g_list_free (cols); @@ -1249,11 +1236,11 @@ refresh_folder_error_handler (ModestMailOperation *mail_op, void modest_header_view_set_folder (ModestHeaderView *self, TnyFolder *folder, + gboolean refresh, RefreshAsyncUserCallback callback, gpointer user_data) { ModestHeaderViewPrivate *priv; - SetFolderHelper *info; ModestWindow *main_win; g_return_if_fail (self); @@ -1281,8 +1268,9 @@ modest_header_view_set_folder (ModestHeaderView *self, } if (folder) { - ModestMailOperation *mail_op = NULL; GtkTreeSelection *selection; + SetFolderHelper *info; + ModestMailOperation *mail_op = NULL; /* Set folder in the model */ modest_header_view_set_folder_intern (self, folder); @@ -1303,7 +1291,7 @@ modest_header_view_set_folder (ModestHeaderView *self, 0, TRUE, NULL); /* create the helper */ - info = g_malloc0 (sizeof(SetFolderHelper)); + info = g_malloc0 (sizeof (SetFolderHelper)); info->header_view = g_object_ref (self); info->cb = callback; info->user_data = user_data; @@ -1312,15 +1300,18 @@ modest_header_view_set_folder (ModestHeaderView *self, mail_op = modest_mail_operation_new_with_error_handling (G_OBJECT(main_win), refresh_folder_error_handler, NULL, NULL); - modest_mail_operation_queue_add (modest_runtime_get_mail_operation_queue (), - mail_op); - - /* Refresh the folder asynchronously */ - modest_mail_operation_refresh_folder (mail_op, - folder, - folder_refreshed_cb, - info); - + if (refresh) { + modest_mail_operation_queue_add (modest_runtime_get_mail_operation_queue (), + mail_op); + + /* Refresh the folder asynchronously */ + modest_mail_operation_refresh_folder (mail_op, + folder, + folder_refreshed_cb, + info); + } else { + folder_refreshed_cb (mail_op, folder, info); + } /* Free */ g_object_unref (mail_op); } else { @@ -1331,7 +1322,7 @@ modest_header_view_set_folder (ModestHeaderView *self, g_object_unref (G_OBJECT (priv->monitor)); priv->monitor = NULL; } - modest_header_view_set_model (GTK_TREE_VIEW (self), NULL); + gtk_tree_view_set_model (GTK_TREE_VIEW (self), NULL); modest_header_view_notify_observers(self, NULL, NULL); @@ -1783,7 +1774,7 @@ on_button_press_event(GtkWidget * self, GdkEventButton * event, gpointer userdat { GtkTreeSelection *selection = NULL; GtkTreePath *path = NULL; - gboolean already_selected = FALSE; + gboolean already_selected = FALSE, already_opened = FALSE; ModestTnySendQueueStatus status = MODEST_TNY_SEND_QUEUE_UNKNOWN; if (gtk_tree_view_get_path_at_pos(GTK_TREE_VIEW(self), event->x, event->y, &path, NULL, NULL, NULL)) { @@ -1803,22 +1794,30 @@ on_button_press_event(GtkWidget * self, GdkEventButton * event, gpointer userdat TNY_GTK_HEADER_LIST_MODEL_INSTANCE_COLUMN, &value); header = (TnyHeader *) g_value_get_object (&value); - if (TNY_IS_HEADER (header)) + if (TNY_IS_HEADER (header)) { status = modest_tny_all_send_queues_get_msg_status (header); + already_opened = modest_window_mgr_find_registered_header (modest_runtime_get_window_mgr (), + header, NULL); + } g_value_unset (&value); } } - /* Enable drag and drop onlly if the user clicks on a row that + /* Enable drag and drop only if the user clicks on a row that it's already selected. If not, let him select items using - the pointer. If the message is in an outbos and in sending + the pointer. If the message is in an OUTBOX and in sending status disable drag and drop as well */ - if (!already_selected || status == MODEST_TNY_SEND_QUEUE_SENDING) + if (!already_selected || + status == MODEST_TNY_SEND_QUEUE_SENDING || + already_opened) disable_drag_and_drop(self); if (path != NULL) gtk_tree_path_free(path); + /* If it's already opened then do not let the button-press + event go on because it'll perform a message open because + we're clicking on to an already selected header */ return FALSE; } @@ -1906,7 +1905,7 @@ modest_header_view_clear (ModestHeaderView *self) { g_return_if_fail (self && MODEST_IS_HEADER_VIEW(self)); - modest_header_view_set_folder (self, NULL, NULL, NULL); + modest_header_view_set_folder (self, NULL, FALSE, NULL, NULL); } void