* Fixes NB#101157, "Done" button apply changes in message settings dialog
authorSergio Villar Senin <svillar@igalia.com>
Mon, 9 Feb 2009 18:27:14 +0000 (18:27 +0000)
committerSergio Villar Senin <svillar@igalia.com>
Mon, 9 Feb 2009 18:27:14 +0000 (18:27 +0000)
* Some other cosmetic changes

pmo-trunk-r7437

src/hildon2/modest-accounts-window.c
src/hildon2/modest-msg-edit-window.c

index d083b0e..a9f9e59 100644 (file)
@@ -169,39 +169,36 @@ modest_accounts_window_disconnect_signals (ModestWindow *self)
 
 static void
 connect_signals (ModestAccountsWindow *self)
-{      
+{
        ModestAccountsWindowPrivate *priv;
-       
+
        priv = MODEST_ACCOUNTS_WINDOW_GET_PRIVATE(self);
 
        /* accounts view */
-       priv->sighandlers = modest_signal_mgr_connect (priv->sighandlers, 
-                                                      G_OBJECT (priv->account_view), "row-activated", 
-                                                      G_CALLBACK (on_account_activated), self);
-
-       priv->sighandlers = modest_signal_mgr_connect (priv->sighandlers,
-                                                      G_OBJECT (modest_runtime_get_window_mgr ()),
-                                                      "progress-list-changed",
-                                                      G_CALLBACK (on_progress_list_changed), self);
-                                                                
-
-       /* window */
-
-       /* we don't register this in sighandlers, as it should be run after disconnecting all signals,
-        * in destroy stage */
-
-       
+       priv->sighandlers = 
+               modest_signal_mgr_connect (priv->sighandlers,
+                                          G_OBJECT (priv->account_view), "row-activated", 
+                                          G_CALLBACK (on_account_activated), self);
+
+       priv->sighandlers = 
+               modest_signal_mgr_connect (priv->sighandlers,
+                                          G_OBJECT (modest_runtime_get_window_mgr ()),
+                                          "progress-list-changed",
+                                          G_CALLBACK (on_progress_list_changed), self);
+
+       /* we don't register this in sighandlers, as it should be run
+        * after disconnecting all signals, in destroy stage */
 }
 
 ModestWindow *
 modest_accounts_window_new (void)
 {
-       ModestAccountsWindow *self = NULL;      
+       ModestAccountsWindow *self = NULL;
        ModestAccountsWindowPrivate *priv = NULL;
        HildonProgram *app;
        GdkPixbuf *window_icon;
        GtkWidget *pannable;
-       
+
        self  = MODEST_ACCOUNTS_WINDOW(g_object_new(MODEST_TYPE_ACCOUNTS_WINDOW, NULL));
        priv = MODEST_ACCOUNTS_WINDOW_GET_PRIVATE(self);
 
@@ -303,7 +300,7 @@ on_account_activated (GtkTreeView *account_view,
        GtkWidget *folder_window;
 
        priv = MODEST_ACCOUNTS_WINDOW_GET_PRIVATE (self);
-       
+
        account_name = modest_account_view_get_path_account (MODEST_ACCOUNT_VIEW (priv->account_view), path);
        if (!account_name)
                return;
index 52c7bdb..660abed 100644 (file)
@@ -3628,6 +3628,8 @@ typedef struct _MessageSettingsHelper {
        ModestMsgEditWindow *window;
        GSList *priority_group;
        GSList *format_group;
+       GtkToggleButton *current_priority;
+       GtkToggleButton *current_format;
 } MessageSettingsHelper;
 
 static void
@@ -3647,12 +3649,7 @@ on_priority_toggle (GtkToggleButton *button,
                                gtk_toggle_button_set_active (node_button, FALSE);
                        }
                }
-               if (priv->priority_flags != (TnyHeaderFlags) g_object_get_data (G_OBJECT (button), "priority"))
-                       modest_msg_edit_window_set_priority_flags (helper->window,
-                                                                  (TnyHeaderFlags) 
-                                                                  g_object_get_data (G_OBJECT (button), 
-                                                                                     "priority"));
-               
+               helper->current_priority = button;
        } else {
                gboolean found = FALSE;
                /* If no one is active, activate it again */
@@ -3675,10 +3672,8 @@ on_format_toggle (GtkToggleButton *button,
 {
        GSList *node;
        ModestMsgEditWindowPrivate *priv;
-       ModestMsgEditFormat old_format;
 
        priv = MODEST_MSG_EDIT_WINDOW_GET_PRIVATE (helper->window);
-       old_format = modest_msg_edit_window_get_format (helper->window);
        if (gtk_toggle_button_get_active (button)) {
 
                for (node = helper->format_group; node != NULL; node = g_slist_next (node)) {
@@ -3688,11 +3683,7 @@ on_format_toggle (GtkToggleButton *button,
                                gtk_toggle_button_set_active (node_button, FALSE);
                        }
                }
-               if (old_format != (ModestMsgEditFormat) g_object_get_data (G_OBJECT (button), "format")) {
-                       modest_msg_edit_window_set_file_format (MODEST_MSG_EDIT_WINDOW (helper->window), 
-                                                               GPOINTER_TO_INT (g_object_get_data (G_OBJECT (button), "file-format")));
-               }
-               
+               helper->current_format = button;
        } else {
                gboolean found = FALSE;
                /* If no one is active, activate it again */
@@ -3814,14 +3805,30 @@ modest_msg_edit_window_show_msg_settings_dialog (ModestMsgEditWindow *window)
        g_signal_connect (G_OBJECT (html_toggle), "toggled", G_CALLBACK (on_format_toggle), &helper);
        g_signal_connect (G_OBJECT (text_toggle), "toggled", G_CALLBACK (on_format_toggle), &helper);
 
-       /* Show */
-       gtk_dialog_run (GTK_DIALOG (dialog));
+       /* Save settings if the user clicked on done */
+       if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT) {
+               TnyHeaderFlags flags;
+               ModestMsgEditFormat old_format, new_format;
+
+               /* Set priority flags */
+               flags = (TnyHeaderFlags) g_object_get_data (G_OBJECT (helper.current_priority), "priority");
+               if (priv->priority_flags !=  flags)
+                       modest_msg_edit_window_set_priority_flags (window, flags);
+
+               /* Set edit format */
+               old_format = modest_msg_edit_window_get_format (window);
+               new_format = (ModestMsgEditFormat) g_object_get_data (G_OBJECT (helper.current_format), "format");
+               if (old_format != new_format) {
+                       gint file_format = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (helper.current_format), "file-format"));
+                       modest_msg_edit_window_set_file_format (window, file_format);
+               }
+       }
 
        gtk_widget_destroy (dialog);
        g_slist_free (helper.priority_group);
 }
 
-static void 
+static void
 on_message_settings (GtkAction *action,
                     ModestMsgEditWindow *window)
 {