Create the Outbox folder with a ui-locker
[modest] / src / modest-tny-local-folders-account.c
index 01202d0..8929330 100644 (file)
@@ -39,6 +39,7 @@
 #include <tny-camel-folder.h>
 #include <tny-merge-folder.h>
 #include <tny-simple-list.h>
+#include <tny-gtk-lockable.h>
 
 G_DEFINE_TYPE (ModestTnyLocalFoldersAccount, 
        modest_tny_local_folders_account, 
@@ -113,7 +114,7 @@ modest_tny_local_folders_account_query_passes (TnyFolderStoreQuery *query, TnyFo
                        TnyFolderStoreQueryItem *item = (TnyFolderStoreQueryItem*) tny_iterator_get_current (iterator);
                        if (item) {
                                TnyFolderStoreQueryOption options = tny_folder_store_query_item_get_options (item);
-                               regex_t *regex = tny_folder_store_query_item_get_regex (item);
+                               const regex_t *regex = tny_folder_store_query_item_get_regex (item);
 
                                if ((options & TNY_FOLDER_STORE_QUERY_OPTION_SUBSCRIBED) &&
                                   tny_folder_is_subscribed (folder))
@@ -239,7 +240,7 @@ modest_tny_local_folders_account_add_folder_to_outbox (ModestTnyLocalFoldersAcco
 
        /* Create on-demand */
        if (!priv->outbox_folder) {
-               priv->outbox_folder = TNY_MERGE_FOLDER (tny_merge_folder_new (_("mcen_me_folder_outbox")));
+               priv->outbox_folder = TNY_MERGE_FOLDER (tny_merge_folder_new_with_ui_locker (_("mcen_me_folder_outbox"), tny_gtk_lockable_new ()));
        
                /* Set type to outbox */
                tny_merge_folder_set_folder_type (priv->outbox_folder, TNY_FOLDER_TYPE_OUTBOX);
@@ -248,3 +249,28 @@ modest_tny_local_folders_account_add_folder_to_outbox (ModestTnyLocalFoldersAcco
        /* Add outbox to the global OUTBOX folder */
        tny_merge_folder_add_folder (priv->outbox_folder, per_account_outbox);
 }
+
+void 
+modest_tny_local_folders_account_remove_folder_from_outbox (ModestTnyLocalFoldersAccount *self, 
+                                                           TnyFolder *per_account_outbox)
+{
+       ModestTnyLocalFoldersAccountPrivate *priv;
+       TnyList *merged_folders = NULL;
+
+       g_return_if_fail (MODEST_IS_TNY_LOCAL_FOLDERS_ACCOUNT (self));
+       g_return_if_fail (TNY_IS_FOLDER (per_account_outbox));
+
+       priv = TNY_LOCAL_FOLDERS_ACCOUNT_GET_PRIVATE (self);
+
+       /* Remove outbox from the global OUTBOX folder */
+       tny_merge_folder_remove_folder (priv->outbox_folder, per_account_outbox);
+
+       /* If there is no folder in the outbox the delete it */
+       merged_folders = tny_simple_list_new ();
+       tny_merge_folder_get_folders (priv->outbox_folder, merged_folders);
+       if (tny_list_get_length (merged_folders) == 0) {
+               g_object_unref (priv->outbox_folder);
+               priv->outbox_folder = NULL;
+       }
+       g_object_unref (merged_folders);
+}