* Connect an insensitive-press signal handler to
authorJavier Fernandez Garcia-Boente <jfernandez@igalia.com>
Wed, 27 Jun 2007 14:49:37 +0000 (14:49 +0000)
committerJavier Fernandez Garcia-Boente <jfernandez@igalia.com>
Wed, 27 Jun 2007 14:49:37 +0000 (14:49 +0000)
OK button of new folder dialog.
* Add a new dimming rules to check folder depth, only
for Context Sensitive Menu of folder view.
* Fixes NB#60458, NB#61835

pmo-trunk-r2463

src/maemo/modest-main-window-ui-dimming.h
src/maemo/modest-platform.c
src/modest-ui-dimming-rules.c
src/modest-ui-dimming-rules.h

index ad662a4..51056a4 100644 (file)
@@ -73,7 +73,7 @@ static const ModestDimmingEntry modest_main_window_menu_dimming_entries [] = {
        { "/HeaderViewCSM/HeaderViewCSMHelp", NULL },
 
        /* Contextual Menus (Folder View) */
-       { "/FolderViewCSM/FolderViewCSMNewFolder", G_CALLBACK(modest_ui_dimming_rules_on_new_folder) },
+       { "/FolderViewCSM/FolderViewCSMNewFolder", G_CALLBACK(modest_ui_dimming_rules_on_csm_new_folder) },
        { "/FolderViewCSM/FolderViewCSMRenameFolder", G_CALLBACK(modest_ui_dimming_rules_on_rename_folder) },
        { "/FolderViewCSM/FolderViewCSMPasteMsgs", G_CALLBACK(modest_ui_dimming_rules_on_paste_msgs) },
        { "/FolderViewCSM/FolderViewCSMDeleteFolder", G_CALLBACK(modest_ui_dimming_rules_on_delete_folder) },
index 4482a9a..28cba13 100644 (file)
@@ -54,6 +54,8 @@
 #define URI_ACTION_COPY "copy:"
 
 static osso_context_t *osso_context = NULL;
+
+static void  folder_name_insensitive_press (GtkWidget *widget, ModestWindow *window);
        
 static void    
 on_modest_conf_update_interval_changed (ModestConf* self, const gchar *key, 
@@ -742,7 +744,9 @@ modest_platform_run_folder_name_dialog (GtkWindow *parent_window,
                                        const gchar *suggested_name,
                                        gchar **folder_name)
 {
+       GtkWidget *accept_btn = NULL; 
        GtkWidget *dialog, *entry, *label, *hbox;
+       GList *buttons = NULL;
        gint result;
 
        /* Ask the user for the folder name */
@@ -755,6 +759,11 @@ modest_platform_run_folder_name_dialog (GtkWindow *parent_window,
                                              GTK_RESPONSE_REJECT,
                                              NULL);
 
+       /* Add accept button (with unsensitive handler) */
+       buttons = gtk_container_get_children (GTK_CONTAINER (GTK_DIALOG (dialog)->action_area));
+       accept_btn = GTK_WIDGET (buttons->next->data);
+       g_signal_connect (G_OBJECT (accept_btn), "insensitive-press", G_CALLBACK (folder_name_insensitive_press), parent_window);
+
        /* Create label and entry */
        label = gtk_label_new (label_text);
        /* TODO: check that the suggested name does not exist */
@@ -798,6 +807,12 @@ modest_platform_run_folder_name_dialog (GtkWindow *parent_window,
        return result;
 }
 
+static void  
+folder_name_insensitive_press (GtkWidget *widget, ModestWindow *window)
+{
+       hildon_banner_show_information (NULL, NULL, _("(empty)"));
+}
+
 gint
 modest_platform_run_new_folder_dialog (GtkWindow *parent_window,
                                       TnyFolderStore *parent_folder,
index bf20d71..7d6dbf5 100644 (file)
@@ -86,6 +86,29 @@ modest_ui_dimming_rules_on_new_msg (ModestWindow *win, gpointer user_data)
 }
 
 gboolean 
+modest_ui_dimming_rules_on_csm_new_folder (ModestWindow *win, gpointer user_data)
+{
+       ModestDimmingRule *rule = NULL;
+       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);
+
+       /* Check common new folder menu item dimming rules */   
+       dimmed = modest_ui_dimming_rules_on_new_folder (win, user_data);
+       
+       /* Check CSM specific dimming rules */
+       if (!dimmed) {
+               dimmed = _selected_folder_is_snd_level (MODEST_MAIN_WINDOW(win));
+               if (dimmed)
+                       modest_dimming_rule_set_notification (rule, _("mail_in_ui_folder_create_error"));
+       }
+       
+       return dimmed;
+}
+
+gboolean 
 modest_ui_dimming_rules_on_new_folder (ModestWindow *win, gpointer user_data)
 {
        ModestDimmingRule *rule = NULL;
@@ -127,11 +150,6 @@ modest_ui_dimming_rules_on_new_folder (ModestWindow *win, gpointer user_data)
 
                /* Apply folder rules */        
                if (!dimmed) {
-                       dimmed = _selected_folder_is_snd_level (MODEST_MAIN_WINDOW(win));
-                       if (dimmed)
-                               modest_dimming_rule_set_notification (rule, _("mail_in_ui_folder_create_error"));
-               }
-               if (!dimmed) {
                        dimmed = _selected_folder_not_writeable (MODEST_MAIN_WINDOW(win));
                        if (dimmed)
                                modest_dimming_rule_set_notification (rule, _("mail_in_ui_folder_create_error"));
@@ -1209,7 +1227,7 @@ _selected_folder_is_snd_level (ModestMainWindow *win)
        if (!gtk_tree_selection_get_selected (sel, &model, &iter))
                goto frees;
        path = gtk_tree_model_get_path (model, &iter);
-       result = gtk_tree_path_get_depth (path) > 1;
+       result = gtk_tree_path_get_depth (path) > 2;
        
  frees:
        if (folder != NULL)
index 6e29376..d22c65f 100644 (file)
@@ -39,6 +39,7 @@ G_BEGIN_DECLS
 /* Menu & toolbar dimming rules */
 gboolean modest_ui_dimming_rules_on_new_msg (ModestWindow *win, gpointer user_data);
 gboolean modest_ui_dimming_rules_on_new_folder (ModestWindow *win, gpointer user_data);
+gboolean modest_ui_dimming_rules_on_csm_new_folder (ModestWindow *win, gpointer user_data);
 gboolean modest_ui_dimming_rules_on_delete_folder (ModestWindow *win, gpointer user_data);
 gboolean modest_ui_dimming_rules_on_rename_folder (ModestWindow *win, gpointer user_data);
 gboolean modest_ui_dimming_rules_on_sort (ModestWindow *win, gpointer user_data);