Fix for NB#59458 (should dim sort button when the selected folder
[modest] / src / modest-ui-dimming-rules.c
index 6e45a6d..83ca705 100644 (file)
@@ -44,6 +44,7 @@ static gboolean _already_opened_msg (ModestWindow *win);
 static gboolean _selected_msg_marked_as (ModestWindow *win, TnyHeaderFlags mask, gboolean opposite);
 static gboolean _selected_folder_not_writeable (ModestMainWindow *win);
 static gboolean _selected_folder_is_any_of_type (ModestMainWindow *win, TnyFolderType types[], guint ntypes);
+static gboolean _selected_folder_is_root_or_inbox (ModestMainWindow *win);
 static gboolean _selected_folder_is_root (ModestMainWindow *win);
 static gboolean _selected_folder_is_empty (ModestMainWindow *win);
 static gboolean _msg_download_in_progress (ModestMsgViewWindow *win);
@@ -89,15 +90,10 @@ modest_ui_dimming_rules_on_new_folder (ModestWindow *win, gpointer user_data)
                        TNY_ACCOUNT (parent_folder)))
                        return FALSE;
                else {
-                       /* If it's the MMC root folder then dim it */
-                       if (!strcmp (tny_account_get_id (TNY_ACCOUNT (parent_folder)), MODEST_MMC_ACCOUNT_ID)) {
-                               dimmed = TRUE;
-                       } else {
-                               const gchar *proto_str = tny_account_get_proto (TNY_ACCOUNT (parent_folder));
-                               /* If it's POP then dim */
-                               dimmed = (modest_protocol_info_get_transport_store_protocol (proto_str) == 
-                                         MODEST_PROTOCOL_STORE_POP) ? TRUE : FALSE;
-                       }
+                       const gchar *proto_str = tny_account_get_proto (TNY_ACCOUNT (parent_folder));
+                       /* If it's POP then dim */
+                       dimmed = (modest_protocol_info_get_transport_store_protocol (proto_str) == 
+                                 MODEST_PROTOCOL_STORE_POP) ? TRUE : FALSE;
                }
        } else {
                /* TODO: the specs say that only one level of subfolder is allowed, is this true ? */
@@ -120,9 +116,24 @@ modest_ui_dimming_rules_on_delete_folder (ModestWindow *win, gpointer user_data)
        if (!dimmed)
                dimmed = _selected_folder_not_writeable (MODEST_MAIN_WINDOW(win));
        if (!dimmed)
+               dimmed = _selected_folder_is_root_or_inbox (MODEST_MAIN_WINDOW(win));
+
+       return dimmed;
+}
+
+gboolean
+modest_ui_dimming_rules_on_sort (ModestWindow *win, gpointer user_data)
+{
+       gboolean dimmed = FALSE;
+
+       g_return_val_if_fail (MODEST_IS_MAIN_WINDOW(win), FALSE);
+               
+       /* Check dimmed rule */ 
+       if (!dimmed)
                dimmed = _selected_folder_is_root (MODEST_MAIN_WINDOW(win));
 
        return dimmed;
+       
 }
 
 gboolean 
@@ -136,7 +147,7 @@ modest_ui_dimming_rules_on_rename_folder (ModestWindow *win, gpointer user_data)
        if (!dimmed)
                dimmed = _selected_folder_not_writeable (MODEST_MAIN_WINDOW(win));
        if (!dimmed)
-               dimmed = _selected_folder_is_root (MODEST_MAIN_WINDOW(win));
+               dimmed = _selected_folder_is_root_or_inbox (MODEST_MAIN_WINDOW(win));
 
        return dimmed;
 }
@@ -509,7 +520,7 @@ _selected_folder_not_writeable (ModestMainWindow *win)
 }
 
 static gboolean
-_selected_folder_is_root (ModestMainWindow *win)
+_selected_folder_is_root_or_inbox (ModestMainWindow *win)
 {
        TnyFolderType types[2];
        gboolean result = FALSE;
@@ -555,6 +566,22 @@ _selected_folder_is_root (ModestMainWindow *win)
        return result;
 }
 
+static gboolean
+_selected_folder_is_root (ModestMainWindow *win)
+{
+       TnyFolderType types[1];
+       gboolean result = FALSE;
+
+       g_return_val_if_fail (MODEST_IS_MAIN_WINDOW(win), FALSE);
+
+       types[0] = TNY_FOLDER_TYPE_ROOT; 
+
+       /* Check folder type */
+       result = _selected_folder_is_any_of_type (win, types, 1);
+               
+       return result;
+}
+
 
 static gboolean
 _selected_folder_is_empty (ModestMainWindow *win)