+ frees:
+ if (parent_folder != NULL)
+ g_object_unref (parent_folder);
+
+ return result;
+}
+
+static gboolean
+_selected_folder_not_deletable (ModestMainWindow *win)
+{
+ GtkWidget *folder_view = NULL;
+ TnyFolderStore *parent_folder = NULL;
+ ModestTnyFolderRules rules;
+ gboolean result = FALSE;
+
+ g_return_val_if_fail (MODEST_IS_MAIN_WINDOW(win), FALSE);
+
+ /* Get folder view */
+ folder_view = modest_main_window_get_child_widget (MODEST_MAIN_WINDOW(win),
+ MODEST_WIDGET_TYPE_FOLDER_VIEW);
+ /* If no folder view, always dimmed */
+ if (!folder_view)
+ return TRUE;
+
+ /* Get selected folder as parent of new folder to create */
+ parent_folder = modest_folder_view_get_selected (MODEST_FOLDER_VIEW(folder_view));
+ if (!(parent_folder && TNY_IS_FOLDER(parent_folder))) {
+ result = TRUE;
+ goto frees;
+ }
+
+ /* Check dimmed rule */
+ rules = modest_tny_folder_get_rules (TNY_FOLDER (parent_folder));
+ result = rules & MODEST_FOLDER_RULES_FOLDER_NON_DELETABLE;
+
+ /* free */
+ frees:
+ if (parent_folder != NULL)
+ g_object_unref (parent_folder);
+
+ return result;
+}
+
+static gboolean
+_selected_folder_not_moveable (ModestMainWindow *win)
+{
+ GtkWidget *folder_view = NULL;
+ TnyFolderStore *parent_folder = NULL;
+ ModestTnyFolderRules rules;
+ gboolean result = FALSE;
+
+ g_return_val_if_fail (MODEST_IS_MAIN_WINDOW(win), FALSE);
+
+ /* Get folder view */
+ folder_view = modest_main_window_get_child_widget (MODEST_MAIN_WINDOW(win),
+ MODEST_WIDGET_TYPE_FOLDER_VIEW);
+ /* If no folder view, always dimmed */
+ if (!folder_view)
+ return TRUE;
+
+ /* Get selected folder as parent of new folder to create */
+ parent_folder = modest_folder_view_get_selected (MODEST_FOLDER_VIEW(folder_view));
+ if (!(parent_folder && TNY_IS_FOLDER(parent_folder))) {
+ result = TRUE;
+ goto frees;
+ }
+
+ /* Check dimmed rule */
+ rules = modest_tny_folder_get_rules (TNY_FOLDER (parent_folder));
+ result = rules & MODEST_FOLDER_RULES_FOLDER_NON_MOVEABLE;
+
+ /* free */
+ frees:
+ if (parent_folder != NULL)
+ g_object_unref (parent_folder);
+
+ return result;
+}
+
+static gboolean
+_selected_folder_not_renameable (ModestMainWindow *win)
+{
+ GtkWidget *folder_view = NULL;
+ TnyFolderStore *parent_folder = NULL;
+ ModestTnyFolderRules rules;
+ gboolean result = FALSE;
+
+ g_return_val_if_fail (MODEST_IS_MAIN_WINDOW(win), FALSE);
+
+ /* Get folder view */
+ folder_view = modest_main_window_get_child_widget (MODEST_MAIN_WINDOW(win),
+ MODEST_WIDGET_TYPE_FOLDER_VIEW);
+ /* If no folder view, always dimmed */
+ if (!folder_view)
+ return TRUE;
+
+ /* Get selected folder as parent of new folder to create */
+ parent_folder = modest_folder_view_get_selected (MODEST_FOLDER_VIEW(folder_view));
+ if (!(parent_folder && TNY_IS_FOLDER(parent_folder))) {
+ result = TRUE;
+ goto frees;
+ }
+
+ /* Check dimmed rule */
+ rules = modest_tny_folder_get_rules (TNY_FOLDER (parent_folder));
+ result = rules & MODEST_FOLDER_RULES_FOLDER_NON_RENAMEABLE;
+
+ /* free */
+ frees:
+ if (parent_folder != NULL)
+ g_object_unref (parent_folder);