Do refresh the currently viewed headers when clicking on Send&Receive
authorSergio Villar Senin <svillar@igalia.com>
Sat, 22 Aug 2009 09:42:51 +0000 (11:42 +0200)
committerSergio Villar Senin <svillar@igalia.com>
Sat, 22 Aug 2009 11:02:11 +0000 (13:02 +0200)
Pass the refresh parametter to the get_folders call

src/modest-ui-actions.c
src/widgets/modest-header-view.c

index 61dd61f..e7b2b93 100644 (file)
@@ -2152,17 +2152,15 @@ modest_ui_actions_on_sort (GtkAction *action,
 }
 
 static void
 }
 
 static void
-new_messages_arrived (ModestMailOperation *self,
-                     TnyList *new_headers,
-                     gpointer user_data)
+update_account_cb (ModestMailOperation *self,
+                  TnyList *new_headers,
+                  gpointer user_data)
 {
        GObject *source;
        gboolean show_visual_notifications;
 
        source = modest_mail_operation_get_source (self);
        show_visual_notifications = (source) ? FALSE : TRUE;
 {
        GObject *source;
        gboolean show_visual_notifications;
 
        source = modest_mail_operation_get_source (self);
        show_visual_notifications = (source) ? FALSE : TRUE;
-       if (source)
-               g_object_unref (source);
 
        /* Notify new messages have been downloaded. If the
           send&receive was invoked by the user then do not show any
 
        /* Notify new messages have been downloaded. If the
           send&receive was invoked by the user then do not show any
@@ -2210,6 +2208,32 @@ new_messages_arrived (ModestMailOperation *self,
                g_object_unref (actually_new_list);
        }
 
                g_object_unref (actually_new_list);
        }
 
+       if (source) {
+               ModestHeaderView *header_view = NULL;
+
+               /* Refresh the current view */
+#ifdef MODEST_TOOLKIT_HILDON2
+               if (MODEST_IS_HEADER_WINDOW (source))
+                       header_view = modest_header_window_get_header_view ((ModestHeaderWindow *) source);
+#else
+               if (MODEST_IS_MAIN_WINDOW (source))
+                       header_view = modest_main_window_get_child_widget ((ModestMainWindow *) source,
+                                                                          MODEST_MAIN_WINDOW_WIDGET_TYPE_HEADER_VIEW);
+#endif
+               if (header_view) {
+                       TnyFolder *folder = modest_header_view_get_folder (header_view);
+                       if (folder) {
+                               /* We must clear first, because otherwise set_folder will ignore
+                                  the change as the folders are the same */
+                               modest_header_view_clear (header_view);
+                               modest_header_view_set_folder (header_view, folder, TRUE,
+                                                              (ModestWindow *) source, NULL, NULL);
+                               g_object_unref (folder);
+                       }
+               }
+
+               g_object_unref (source);
+       }
 }
 
 typedef struct {
 }
 
 typedef struct {
@@ -2257,7 +2281,7 @@ do_send_receive_performer (gboolean canceled,
 
        /* Send & receive. */
        modest_mail_operation_update_account (info->mail_op, info->account_name, info->poke_status, info->interactive,
 
        /* Send & receive. */
        modest_mail_operation_update_account (info->mail_op, info->account_name, info->poke_status, info->interactive,
-                                             new_messages_arrived, info->win);
+                                             update_account_cb, info->win);
 
  clean:
        /* Frees */
 
  clean:
        /* Frees */
index bf9105d..34fdba4 100644 (file)
@@ -1119,7 +1119,9 @@ set_folder_intern_get_headers_async_cb (TnyFolder *folder,
 }
 
 static void
 }
 
 static void
-modest_header_view_set_folder_intern (ModestHeaderView *self, TnyFolder *folder)
+modest_header_view_set_folder_intern (ModestHeaderView *self,
+                                     TnyFolder *folder,
+                                     gboolean refresh)
 {
        TnyFolderType type;
        TnyList *headers;
 {
        TnyFolderType type;
        TnyList *headers;
@@ -1146,7 +1148,7 @@ modest_header_view_set_folder_intern (ModestHeaderView *self, TnyFolder *folder)
           be added again by tny_gtk_header_list_model_set_folder, so
           we'd end up with duplicate headers. sergio */
        tny_gtk_header_list_model_set_folder (TNY_GTK_HEADER_LIST_MODEL(headers),
           be added again by tny_gtk_header_list_model_set_folder, so
           we'd end up with duplicate headers. sergio */
        tny_gtk_header_list_model_set_folder (TNY_GTK_HEADER_LIST_MODEL(headers),
-                                             folder, FALSE,
+                                             folder, refresh,
                                              set_folder_intern_get_headers_async_cb,
                                              NULL, self);
 
                                              set_folder_intern_get_headers_async_cb,
                                              NULL, self);
 
@@ -1375,7 +1377,7 @@ modest_header_view_set_folder (ModestHeaderView *self,
                ModestMailOperation *mail_op = NULL;
 
                /* Set folder in the model */
                ModestMailOperation *mail_op = NULL;
 
                /* Set folder in the model */
-               modest_header_view_set_folder_intern (self, folder);
+               modest_header_view_set_folder_intern (self, folder, refresh);
 
                /* Pick my reference. Nothing to do with the mail operation */
                priv->folder = g_object_ref (folder);
 
                /* Pick my reference. Nothing to do with the mail operation */
                priv->folder = g_object_ref (folder);