Emit the folder updated signal on message move
[modest] / src / modest-mail-operation.c
index 2786f08..20f58fc 100644 (file)
@@ -1773,6 +1773,8 @@ inbox_refreshed_cb (TnyFolder *inbox,
                new_headers_iter = tny_list_create_iterator (((InternalFolderObserver *) info->inbox_observer)->new_headers);
                if (!tny_iterator_is_done (new_headers_iter)) {
                        modest_platform_emit_folder_updated_signal (info->account_name, tny_folder_get_id (TNY_FOLDER (inbox)));
+                       modest_account_mgr_set_has_new_mails (modest_runtime_get_account_mgr (),
+                                                             info->account_name, TRUE);
                }
                while (!tny_iterator_is_done (new_headers_iter)) {
                        TnyHeader *header = NULL;
@@ -3343,6 +3345,23 @@ modest_mail_operation_remove_msgs (ModestMailOperation *self,
        if (!remove_headers)
                remove_headers = g_object_ref (headers);
 
+       /* Notify messages are "read" */
+       iter = tny_list_create_iterator (remove_headers);
+       while (!tny_iterator_is_done (iter)) {
+               gchar *msg_uid;
+               TnyHeader *header;
+
+               header = TNY_HEADER (tny_iterator_get_current (iter));
+               msg_uid =  modest_tny_folder_get_header_unique_id (header);
+               if (msg_uid) {
+                       modest_platform_emit_msg_read_changed_signal (msg_uid, TRUE);
+                       g_free (msg_uid);
+               }
+               g_object_unref (header);
+               tny_iterator_next (iter);
+       }
+       g_object_unref (iter);
+
        /* remove message from folder */
        modest_mail_operation_notify_start (self);
        tny_folder_remove_msgs_async (folder, remove_headers, remove_msgs_async_cb, 
@@ -3497,6 +3516,34 @@ transfer_msgs_cb (TnyFolder *folder, gboolean cancelled, GError *err, gpointer u
        }
 
        if (finished) {
+               TnyAccount *src_account;
+               TnyAccount *dest_account;
+
+               /* send the notification that the source folder might have changed */
+               src_account = modest_tny_folder_get_account (folder);
+               if (src_account) {
+                       const gchar *src_folder_id;
+                       const gchar *src_account_name;
+
+                       src_folder_id = tny_folder_get_id (folder);
+                       src_account_name =
+                               modest_tny_account_get_parent_modest_account_name_for_server_account (src_account);
+                       modest_platform_emit_folder_updated_signal (src_account_name, src_folder_id);
+                       g_object_unref (src_account);
+               }
+               /* send the notification that the destination folder might have changed */
+               dest_account = modest_tny_folder_get_account (helper->dest_folder);
+               if (dest_account) {
+                       const gchar *dest_folder_id;
+                       const gchar *dest_account_name;
+
+                       dest_folder_id = tny_folder_get_id (helper->dest_folder);
+                       dest_account_name =
+                               modest_tny_account_get_parent_modest_account_name_for_server_account (dest_account);
+                       modest_platform_emit_folder_updated_signal (dest_account_name, dest_folder_id);
+                       g_object_unref (dest_account);
+               }
+
                /* Synchronize the source folder contents. This should
                   be done by tinymail but the camel_folder_sync it's
                   actually disabled in transfer_msgs_thread_clean