* Fixes NB#102386, replaced the add address to contact save button logical id
[modest] / src / modest-ui-dimming-rules.c
index e8ba566..9dc1b4f 100644 (file)
@@ -41,6 +41,7 @@
 #include "modest-tny-msg.h"
 #include "modest-tny-mime-part.h"
 #include "modest-text-utils.h"
+#include "widgets/modest-folder-view.h"
 #include "modest-address-book.h"
 #include <widgets/modest-attachments-view.h>
 #include <modest-runtime.h>
@@ -50,6 +51,7 @@
 #include <modest-runtime.h>
 #ifdef MODEST_TOOLKIT_HILDON2
 #include <modest-header-window.h>
+#include <modest-folder-window.h>
 #endif
 
 
@@ -82,7 +84,6 @@ static void fill_list_of_caches (gpointer key, gpointer value, gpointer userdata
 static gboolean _send_receive_in_progress (ModestWindow *win);
 static gboolean _msgs_send_in_progress (void);
 
-
 static DimmedState *
 _define_main_window_dimming_state (ModestMainWindow *window)
 {
@@ -468,15 +469,17 @@ modest_ui_dimming_rules_on_delete (ModestWindow *win, gpointer user_data)
                        dimmed = TRUE;
                        modest_dimming_rule_set_notification (rule, _CS("ckct_ib_nothing_to_delete"));
                }
-                       
+
 #ifdef MODEST_TOOLKIT_HILDON2
+       } else if (MODEST_IS_FOLDER_WINDOW (win)) {
+               dimmed = modest_ui_dimming_rules_on_folder_window_delete (win, user_data);
        } else if (MODEST_IS_HEADER_WINDOW (win)) {
 
-               if (!dimmed) {
+               if (!dimmed)
                        dimmed = _transfer_mode_enabled (win);
-               }
+
                if (dimmed)
-                       modest_dimming_rule_set_notification (rule, _("mail_ib_notavailable_downloading"));     
+                       modest_dimming_rule_set_notification (rule, _("mail_ib_notavailable_downloading"));
 
                if (!dimmed) {
                        GtkWidget *header_view;
@@ -575,24 +578,35 @@ modest_ui_dimming_rules_on_rename_folder (ModestWindow *win, gpointer user_data)
        TnyFolderType types[4];
        gboolean dimmed = FALSE;
 
-       g_return_val_if_fail (MODEST_IS_MAIN_WINDOW(win), FALSE);
        g_return_val_if_fail (MODEST_IS_DIMMING_RULE (user_data), FALSE);
        rule = MODEST_DIMMING_RULE (user_data);
 
-       types[0] = TNY_FOLDER_TYPE_DRAFTS; 
+       types[0] = TNY_FOLDER_TYPE_DRAFTS;
        types[1] = TNY_FOLDER_TYPE_OUTBOX;
        types[2] = TNY_FOLDER_TYPE_SENT;
        types[3] = TNY_FOLDER_TYPE_ARCHIVE;
-       
-       /* Check dimmed rule */ 
-       dimmed = _selected_folder_not_renameable (MODEST_MAIN_WINDOW(win));
-       if (dimmed)
-               modest_dimming_rule_set_notification (rule, "");
-       if (!dimmed) {
-               dimmed = _selected_folder_is_root_or_inbox (MODEST_MAIN_WINDOW(win));
+
+       /* Check dimmed rule */
+       if (MODEST_IS_MAIN_WINDOW (win)) {
+               dimmed = _selected_folder_not_renameable (MODEST_MAIN_WINDOW(win));
                if (dimmed)
                        modest_dimming_rule_set_notification (rule, "");
+               if (!dimmed) {
+                       dimmed = _selected_folder_is_root_or_inbox (MODEST_MAIN_WINDOW(win));
+                       if (dimmed)
+                               modest_dimming_rule_set_notification (rule, "");
+               }
        }
+
+#ifdef MODEST_TOOLKIT_HILDON2
+       if (MODEST_IS_FOLDER_WINDOW (win)) {
+               ModestFolderView *folder_view;
+               folder_view = modest_folder_window_get_folder_view (MODEST_FOLDER_WINDOW (win));
+               dimmed = !modest_folder_view_any_folder_fulfils_rules (folder_view,
+                                                                      MODEST_FOLDER_RULES_FOLDER_NON_RENAMEABLE);
+       }
+#endif
+
        if (!dimmed) {
                dimmed = _selected_folder_is_any_of_type (win, types, 4);
                if (dimmed)
@@ -659,9 +673,9 @@ modest_ui_dimming_rules_on_reply_msg (ModestWindow *win, gpointer user_data)
 
        /* main window dimming rules */
        if (MODEST_IS_MAIN_WINDOW(win)) {
-               
+
                if (!dimmed) {
-                       dimmed = _selected_folder_is_empty (MODEST_MAIN_WINDOW(win));                   
+                       dimmed = _selected_folder_is_empty (MODEST_MAIN_WINDOW(win));
                        if (dimmed)
                                modest_dimming_rule_set_notification (rule, _("mcen_ib_nothing_to_reply"));
                }
@@ -670,10 +684,18 @@ modest_ui_dimming_rules_on_reply_msg (ModestWindow *win, gpointer user_data)
                }
        /* msg view window dimming rules */
        } else if (MODEST_IS_MSG_VIEW_WINDOW(win)) {
-               
-               /* Check dimmed rule */ 
+
+               /* This could happen if we load the msg view window with a
+                  preview before loading the full message */
+               TnyMsg *msg = modest_msg_view_window_get_message (MODEST_MSG_VIEW_WINDOW (win));
+               if (!msg) {
+                       dimmed = TRUE;
+               } else {
+                       g_object_unref (msg);
+               }
+
                if (!dimmed) {
-                       dimmed = _transfer_mode_enabled (win);                  
+                       dimmed = _transfer_mode_enabled (win);
                        if (dimmed)
                                modest_dimming_rule_set_notification (rule, _("mail_ib_notavailable_downloading"));
                }
@@ -683,7 +705,7 @@ modest_ui_dimming_rules_on_reply_msg (ModestWindow *win, gpointer user_data)
                                modest_dimming_rule_set_notification (rule, _("mcen_ib_unable_to_reply"));
                }
        }
-       
+
        return dimmed;
 }
 
@@ -729,7 +751,7 @@ _message_already_sent (ModestMsgViewWindow *view_window)
                folder = tny_header_get_folder (header);
                if (folder) {
                        if (modest_tny_folder_guess_folder_type (folder) ==
-                           TNY_FOLDER_TYPE_OUTBOX) {                           
+                           TNY_FOLDER_TYPE_OUTBOX) {
                                ModestTnySendQueueStatus status = 
                                        modest_tny_all_send_queues_get_msg_status (header);
                                if (status == MODEST_TNY_SEND_QUEUE_UNKNOWN ||
@@ -753,13 +775,20 @@ modest_ui_dimming_rules_on_delete_msg (ModestWindow *win, gpointer user_data)
 
        g_return_val_if_fail (MODEST_IS_DIMMING_RULE (user_data), FALSE);
        rule = MODEST_DIMMING_RULE (user_data);
-       state = modest_window_get_dimming_state (win);          
-       
-       /* Check dimmed rule */         
+       state = modest_window_get_dimming_state (win);
+
+       /* If we're in transfer mode then do not allow to delete messages */
+       dimmed = _transfer_mode_enabled (win);
+       if (dimmed) {
+               modest_dimming_rule_set_notification (rule, _("mail_ib_notavailable_downloading"));
+               return dimmed;
+       }
+
+       /* Check dimmed rule */ 
        if (MODEST_IS_MAIN_WINDOW (win)) {
-               dimmed = _selected_folder_is_empty (MODEST_MAIN_WINDOW(win));                   
+               dimmed = _selected_folder_is_empty (MODEST_MAIN_WINDOW(win));
                if (dimmed)
-                       modest_dimming_rule_set_notification (rule, _CS("ckct_ib_nothing_to_delete"));  
+                       modest_dimming_rule_set_notification (rule, _CS("ckct_ib_nothing_to_delete"));
                if (!dimmed) {
                        dimmed = _invalid_msg_selected (MODEST_MAIN_WINDOW(win), FALSE, user_data);
                }
@@ -781,18 +810,24 @@ modest_ui_dimming_rules_on_delete_msg (ModestWindow *win, gpointer user_data)
                        if (dimmed) {
                                gchar *message = NULL;
 
-                               message = g_strdup_printf(_("mcen_nc_unable_to_delete_n_messages"), 
+                               message = g_strdup_printf(_("mcen_nc_unable_to_delete_n_messages"),
                                                          state->already_opened_msg);
                                modest_dimming_rule_set_notification (rule, message);
                                g_free(message);
                        }
-                       
+
                }
        } 
        else if (MODEST_IS_MSG_VIEW_WINDOW (win)) {
-               dimmed = _transfer_mode_enabled (win);                  
-               if (dimmed)
-                       modest_dimming_rule_set_notification (rule, _("mail_ib_notavailable_downloading"));             
+               /* This could happen if we load the msg view window with a
+                  preview before loading the full message */
+               TnyMsg *msg = modest_msg_view_window_get_message (MODEST_MSG_VIEW_WINDOW (win));
+               if (!msg) {
+                       dimmed = TRUE;
+               } else {
+                       g_object_unref (msg);
+               }
+
                if (!dimmed) {
                        dimmed = state->any_marked_as_deleted;
                        if (dimmed) {
@@ -811,7 +846,7 @@ modest_ui_dimming_rules_on_delete_msg (ModestWindow *win, gpointer user_data)
                   outbox that has been already sent */
                if (!dimmed)
                        dimmed = _message_already_sent (MODEST_MSG_VIEW_WINDOW(win));
-               
+
                /* The delete button should be dimmed when viewing an attachment,
                 * but should be enabled when viewing a message from the list, 
                 * or when viewing a search result.
@@ -912,17 +947,21 @@ modest_ui_dimming_rules_on_mark_as_read_msg_in_view (ModestWindow *win, gpointer
        TnyHeader *header;
        TnyHeaderFlags flags;
        gboolean dimmed = FALSE;
-       
+
 
        g_return_val_if_fail (MODEST_IS_MSG_VIEW_WINDOW(win), FALSE);
        g_return_val_if_fail (MODEST_IS_DIMMING_RULE (user_data), FALSE);
        rule = MODEST_DIMMING_RULE (user_data);
-       
+
        header = modest_msg_view_window_get_header (MODEST_MSG_VIEW_WINDOW (win));
        if (!header) {
                dimmed = TRUE;
        }
 
+       /* If the viewer is showing a message sent as attachment */
+       if (!dimmed)
+               dimmed = !modest_msg_view_window_has_headers_model (MODEST_MSG_VIEW_WINDOW (win));
+
        if (!dimmed) {
                flags = tny_header_get_flags (header);
                if (flags & TNY_HEADER_FLAG_SEEN)
@@ -953,6 +992,10 @@ modest_ui_dimming_rules_on_mark_as_unread_msg_in_view (ModestWindow *win, gpoint
                dimmed = TRUE;
        }
 
+       /* If the viewer is showing a message sent as attachment */
+       if (!dimmed)
+               dimmed = !modest_msg_view_window_has_headers_model (MODEST_MSG_VIEW_WINDOW (win));
+
        if (!dimmed) {
                flags = tny_header_get_flags (header);
                if (!(flags & TNY_HEADER_FLAG_SEEN))
@@ -1030,6 +1073,8 @@ modest_ui_dimming_rules_on_move_to (ModestWindow *win, gpointer user_data)
 #ifdef MODEST_TOOLKIT_HILDON2
        else if (MODEST_IS_HEADER_WINDOW (win))
                dimmed = modest_ui_dimming_rules_on_header_window_move_to (win, user_data);
+       else if (MODEST_IS_FOLDER_WINDOW (win))
+               dimmed = modest_ui_dimming_rules_on_folder_window_move_to (win, user_data);
 #endif
        else if (MODEST_IS_MSG_VIEW_WINDOW (win)) 
                 dimmed = modest_ui_dimming_rules_on_view_window_move_to (win, user_data);
@@ -1101,7 +1146,7 @@ modest_ui_dimming_rules_on_main_window_move_to (ModestWindow *win, gpointer user
        return dimmed;
 }
 
-gboolean 
+gboolean
 modest_ui_dimming_rules_on_view_window_move_to (ModestWindow *win, gpointer user_data)
 {
        ModestDimmingRule *rule = NULL;
@@ -1111,8 +1156,18 @@ modest_ui_dimming_rules_on_view_window_move_to (ModestWindow *win, gpointer user
        g_return_val_if_fail (MODEST_IS_DIMMING_RULE (user_data), FALSE);
        rule = MODEST_DIMMING_RULE (user_data);
 
-       /* Check dimmed rule */ 
-       dimmed = _transfer_mode_enabled (win);                  
+       /* This could happen if we load the msg view window with a
+          preview before loading the full message */
+       TnyMsg *msg = modest_msg_view_window_get_message (MODEST_MSG_VIEW_WINDOW (win));
+       if (!msg) {
+               return TRUE;
+       } else {
+               g_object_unref (msg);
+       }
+
+       /* Check dimmed rule */
+
+       dimmed = _transfer_mode_enabled (win);
        if (dimmed)
                modest_dimming_rule_set_notification (rule, _("mail_ib_notavailable_downloading"));     
        if (!dimmed) {
@@ -1154,35 +1209,6 @@ modest_ui_dimming_rules_on_view_window_move_to (ModestWindow *win, gpointer user
 }
 
 #ifdef MODEST_TOOLKIT_HILDON2
-gboolean 
-modest_ui_dimming_rules_on_header_window_move_to (ModestWindow *win, gpointer user_data)
-{
-       ModestDimmingRule *rule = NULL;
-       gboolean dimmed = FALSE;
-
-       g_return_val_if_fail (MODEST_IS_HEADER_WINDOW(win), FALSE);
-       g_return_val_if_fail (MODEST_IS_DIMMING_RULE (user_data), FALSE);
-       rule = MODEST_DIMMING_RULE (user_data);
-
-       /* Check dimmed rule */ 
-       dimmed = _transfer_mode_enabled (win);                  
-       if (dimmed)
-               modest_dimming_rule_set_notification (rule, _("mail_ib_notavailable_downloading"));     
-
-       if (!dimmed) {
-               GtkWidget *header_view;
-               TnyFolder *folder;
-
-               header_view = GTK_WIDGET (modest_header_window_get_header_view (MODEST_HEADER_WINDOW (win)));
-               folder = modest_header_view_get_folder (MODEST_HEADER_VIEW (header_view));
-               if (folder) {
-                       dimmed = (tny_folder_get_all_count (TNY_FOLDER (folder)) == 0);
-                       g_object_unref (folder);
-               }
-       }
-
-       return dimmed;
-}
 #endif
 
 gboolean 
@@ -1195,8 +1221,19 @@ modest_ui_dimming_rules_on_find_msg (ModestWindow *win, gpointer user_data)
        g_return_val_if_fail (MODEST_IS_DIMMING_RULE (user_data), FALSE);
        rule = MODEST_DIMMING_RULE (user_data);
 
+       /* This could happen if we load the msg view window with a
+          preview before loading the full message */
+       if (MODEST_IS_MSG_VIEW_WINDOW (win)) {
+               TnyMsg *msg = modest_msg_view_window_get_message (MODEST_MSG_VIEW_WINDOW (win));
+               if (!msg) {
+                       return TRUE;
+               } else {
+                       g_object_unref (msg);
+               }
+       }
+
        /* Check dimmed rule */ 
-       dimmed = _transfer_mode_enabled (win);                  
+       dimmed = _transfer_mode_enabled (win);
        if (dimmed)
                modest_dimming_rule_set_notification (rule, _("mail_ib_notavailable_downloading"));     
 
@@ -1440,8 +1477,8 @@ modest_ui_dimming_rules_on_undo (ModestWindow *win, gpointer user_data)
        if (!dimmed && MODEST_IS_MSG_EDIT_WINDOW (win)) {
                dimmed = !modest_msg_edit_window_can_undo (MODEST_MSG_EDIT_WINDOW (win));
        }
-                               
-       return dimmed;  
+
+       return dimmed;
 }
 
 gboolean 
@@ -1694,8 +1731,13 @@ modest_ui_dimming_rules_on_editor_remove_attachment (ModestWindow *win, gpointer
                                                                    MODEST_MSG_EDIT_WINDOW (win),
                                                                    MODEST_MSG_EDIT_WINDOW_WIDGET_TYPE_ATTACHMENTS);
        
+#ifdef MODEST_TOOLKIT_HILDON2
+       selected_attachments = modest_attachments_view_get_attachments (
+                                                                     MODEST_ATTACHMENTS_VIEW (attachments_view));
+#else
        selected_attachments = modest_attachments_view_get_selection (
                                                                      MODEST_ATTACHMENTS_VIEW (attachments_view));
+#endif
        n_att_selected = tny_list_get_length (selected_attachments);
        g_object_unref (selected_attachments);
        
@@ -1711,9 +1753,8 @@ modest_ui_dimming_rules_on_send (ModestWindow *win, gpointer user_data)
        const DimmedState *state = NULL;
        gboolean dimmed = FALSE;
        GtkWidget *subject_field, *body_field;
-       GtkTextBuffer *body_buffer;
        const gchar *subject = NULL;
-       
+
        g_return_val_if_fail (MODEST_IS_DIMMING_RULE (user_data), FALSE);
        g_return_val_if_fail (MODEST_IS_MSG_EDIT_WINDOW (win), TRUE);
        rule = MODEST_DIMMING_RULE (user_data);
@@ -1725,13 +1766,12 @@ modest_ui_dimming_rules_on_send (ModestWindow *win, gpointer user_data)
        subject_field = modest_msg_edit_window_get_child_widget (
                                                                 MODEST_MSG_EDIT_WINDOW (win),
                                                                 MODEST_MSG_EDIT_WINDOW_WIDGET_TYPE_SUBJECT);
-       body_buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (body_field));
        subject = gtk_entry_get_text (GTK_ENTRY (subject_field));
 
        dimmed = (subject == NULL || subject[0] == '\0');
        if (dimmed)
                modest_dimming_rule_set_notification (rule, _("mcen_ib_subject_not_modified"));
-              
+
        if (!dimmed) {
                GtkWidget *to_field, *cc_field, *bcc_field;
                GtkTextBuffer * to_buffer, *cc_buffer, *bcc_buffer;
@@ -1864,7 +1904,11 @@ modest_ui_dimming_rules_on_send_receive (ModestWindow *win, gpointer user_data)
 
        /* Check dimmed rule */
        account_name = modest_window_get_active_account (win);
-       dimmed = modest_account_mgr_account_is_busy (mgr, account_name);
+
+       if (account_name)
+               dimmed = modest_account_mgr_account_is_busy (mgr, account_name);
+       else
+               dimmed = TRUE;
 
        if (dimmed)
                modest_dimming_rule_set_notification (rule, _("mcen_nc_no_email_acnts_defined"));
@@ -2523,29 +2567,48 @@ _invalid_attach_selected (ModestWindow *win,
                        TnyIterator *iter;
                        iter = tny_list_create_iterator (attachments);
                        while (!tny_iterator_is_done (iter) && !result) {
+#ifdef MODEST_TOOLKIT_HILDON2
+                               gboolean not_selectable = FALSE;
+#endif
                                TnyMimePart *mime_part = TNY_MIME_PART (tny_iterator_get_current (iter));
                                TnyList *nested_list = tny_simple_list_new ();
+                               tny_mime_part_get_parts (mime_part, nested_list);
 
                                if (!for_remove && modest_tny_mime_part_is_msg (mime_part)) {
                                        TnyMsg *window_msg;
                                        window_msg = modest_msg_view_window_get_message (MODEST_MSG_VIEW_WINDOW (win));
                                        if ((TnyMimePart *) window_msg != mime_part) {
                                                selected_messages = TRUE;
+#ifdef MODEST_TOOLKIT_HILDON2
+                                               not_selectable = TRUE;
+#else
                                                result = TRUE;
+#endif
                                        }
                                        g_object_unref (window_msg);
                                }
-                               tny_mime_part_get_parts (mime_part, nested_list);
                                if (!for_remove && tny_list_get_length (nested_list) > 0) {
                                        nested_attachments = TRUE;
+#ifdef MODEST_TOOLKIT_HILDON2
+                                       not_selectable = TRUE;
+#else
                                        result = TRUE;
+#endif
                                }
+#ifdef MODEST_TOOLKIT_HILDON2
+                               if (not_selectable)
+                                       n_selected --;
+#endif
                                g_object_unref (nested_list);
                                g_object_unref (mime_part);
                                tny_iterator_next (iter);
                        }
                        g_object_unref (iter);
                }
+
+               /* No valid attachment available */
+               if (n_selected == 0)
+                       result = TRUE;
                
                /* Set notifications */
                if (result && rule != NULL) {
@@ -2770,6 +2833,8 @@ _transfer_mode_enabled (ModestWindow *win)
         } else if (MODEST_IS_MAIN_WINDOW(win)) {
                 result = modest_main_window_transfer_mode_enabled (MODEST_MAIN_WINDOW (win));
 #ifdef MODEST_TOOLKIT_HILDON2
+       } else if (MODEST_IS_FOLDER_WINDOW (win)) {
+               result = modest_folder_window_transfer_mode_enabled (MODEST_FOLDER_WINDOW (win));
        } else if (MODEST_IS_HEADER_WINDOW (win)) {
                result = modest_header_window_transfer_mode_enabled (MODEST_HEADER_WINDOW (win));
 #endif
@@ -2866,8 +2931,10 @@ _send_receive_in_progress (ModestWindow *win)
                }
        }
 
-       g_slist_foreach (op_list, (GFunc) g_object_unref, NULL);
-       g_slist_free (op_list);
+       if (op_list) {
+               g_slist_foreach (op_list, (GFunc) g_object_unref, NULL);
+               g_slist_free (op_list);
+       }
 
        return found_send_receive;
 }
@@ -2884,12 +2951,12 @@ _msgs_send_in_progress (void)
        cache_mgr = modest_runtime_get_cache_mgr ();
        send_queue_cache = modest_cache_mgr_get_cache (cache_mgr,
                                                       MODEST_CACHE_MGR_CACHE_TYPE_SEND_QUEUE);
-       
+
        g_hash_table_foreach (send_queue_cache, (GHFunc) fill_list_of_caches, &send_queues);
-               
+
        for (node = send_queues; node != NULL && !found; node = g_slist_next (node)) {
                send_queue = MODEST_TNY_SEND_QUEUE (node->data);
-               
+
                /* Check if msg uid is being processed inside send queue */
                if (modest_tny_send_queue_sending_in_progress (send_queue)) {
                        found = TRUE;
@@ -2901,3 +2968,95 @@ _msgs_send_in_progress (void)
 
        return found;
 }
+
+/*****************************************************************************/
+/********************** HILDON2 only dimming rules ***************************/
+/*****************************************************************************/
+
+#ifdef MODEST_TOOLKIT_HILDON2
+gboolean 
+modest_ui_dimming_rules_on_header_window_move_to (ModestWindow *win, gpointer user_data)
+{
+       ModestDimmingRule *rule = NULL;
+       gboolean dimmed = FALSE;
+
+       g_return_val_if_fail (MODEST_IS_HEADER_WINDOW(win), FALSE);
+       g_return_val_if_fail (MODEST_IS_DIMMING_RULE (user_data), FALSE);
+       rule = MODEST_DIMMING_RULE (user_data);
+
+       /* Check dimmed rule */ 
+       dimmed = _transfer_mode_enabled (win);
+       if (dimmed)
+               modest_dimming_rule_set_notification (rule, _("mail_ib_notavailable_downloading"));     
+
+       if (!dimmed) {
+               GtkWidget *header_view;
+               TnyFolder *folder;
+
+               header_view = GTK_WIDGET (modest_header_window_get_header_view (MODEST_HEADER_WINDOW (win)));
+               folder = modest_header_view_get_folder (MODEST_HEADER_VIEW (header_view));
+               if (folder) {
+                       dimmed = (tny_folder_get_all_count (TNY_FOLDER (folder)) == 0);
+                       g_object_unref (folder);
+               }
+       }
+
+       return dimmed;
+}
+
+gboolean 
+modest_ui_dimming_rules_on_folder_window_move_to (ModestWindow *win, gpointer user_data)
+{
+       ModestDimmingRule *rule = NULL;
+       gboolean dimmed = FALSE;
+
+       g_return_val_if_fail (MODEST_IS_FOLDER_WINDOW(win), FALSE);
+       g_return_val_if_fail (MODEST_IS_DIMMING_RULE (user_data), FALSE);
+       rule = MODEST_DIMMING_RULE (user_data);
+
+       /* Check dimmed rule */ 
+       dimmed = _transfer_mode_enabled (win);
+       if (dimmed)
+               modest_dimming_rule_set_notification (rule, _("mail_ib_notavailable_downloading"));     
+
+       if (MODEST_IS_FOLDER_WINDOW (win)) {
+               ModestFolderView *folder_view;
+               folder_view = modest_folder_window_get_folder_view (MODEST_FOLDER_WINDOW (win));
+               dimmed = !modest_folder_view_any_folder_fulfils_rules (folder_view,
+                                                                      MODEST_FOLDER_RULES_FOLDER_NON_MOVEABLE);
+       }
+
+       return dimmed;
+}
+
+gboolean 
+modest_ui_dimming_rules_on_folder_window_delete (ModestWindow *win, gpointer user_data)
+{
+       ModestDimmingRule *rule = NULL;
+       gboolean dimmed = FALSE;
+
+       g_return_val_if_fail (MODEST_IS_FOLDER_WINDOW(win), FALSE);
+       g_return_val_if_fail (MODEST_IS_DIMMING_RULE (user_data), FALSE);
+       rule = MODEST_DIMMING_RULE (user_data);
+
+       /* Check dimmed rule */ 
+       dimmed = _transfer_mode_enabled (win);
+       if (dimmed)
+               modest_dimming_rule_set_notification (rule, _("mail_ib_notavailable_downloading"));
+
+       if (MODEST_IS_FOLDER_WINDOW (win)) {
+               ModestFolderView *folder_view;
+               folder_view = modest_folder_window_get_folder_view (MODEST_FOLDER_WINDOW (win));
+               dimmed = !modest_folder_view_any_folder_fulfils_rules (folder_view,
+                                                                      MODEST_FOLDER_RULES_FOLDER_NON_DELETABLE);
+       }
+
+       return dimmed;
+}
+
+gboolean
+modest_ui_dimming_rules_on_edit_accounts (ModestWindow *win, gpointer user_data)
+{
+       return !modest_account_mgr_has_accounts (modest_runtime_get_account_mgr (), TRUE);
+}
+#endif