Fixes NB#112513, show the proper account title when opening folders window from notif...
[modest] / src / hildon2 / modest-hildon2-global-settings-dialog.c
index 5f8afc6..0fb6e4b 100644 (file)
@@ -68,11 +68,11 @@ static ModestConnectedVia current_connection (void);
 
 static GtkWidget* create_updating_page   (ModestHildon2GlobalSettingsDialog *self);
 
-static gboolean   on_range_error         (HildonNumberEditor *editor, 
-                                         HildonNumberEditorErrorType type,
+static gboolean   on_range_error         (ModestNumberEditor *editor, 
+                                         ModestNumberEditorErrorType type,
                                          gpointer user_data);
 
-static void       on_size_notify         (HildonNumberEditor *editor, 
+static void       on_size_notify         (ModestNumberEditor *editor, 
                                          GParamSpec *arg1,
                                          gpointer user_data);
 
@@ -142,11 +142,16 @@ modest_hildon2_global_settings_dialog_init (ModestHildon2GlobalSettingsDialog *s
 {
        ModestHildon2GlobalSettingsDialogPrivate *priv;
        ModestGlobalSettingsDialogPrivate *ppriv;
+       GtkWidget *align;
+       GtkWidget *top_vbox;
 
        priv  = MODEST_HILDON2_GLOBAL_SETTINGS_DIALOG_GET_PRIVATE (self);
        ppriv = MODEST_GLOBAL_SETTINGS_DIALOG_GET_PRIVATE (self);
 
        ppriv->updating_page = create_updating_page (self);
+       top_vbox = gtk_vbox_new (FALSE, 0);
+       align = gtk_alignment_new (0.0, 0.0, 1.0, 1.0);
+       gtk_alignment_set_padding (GTK_ALIGNMENT (align), 0, 0, MODEST_MARGIN_DOUBLE, 0);
 
        /* Add the buttons: */
        gtk_dialog_add_button (GTK_DIALOG (self), _HL("wdgt_bd_save"), GTK_RESPONSE_OK);
@@ -155,9 +160,14 @@ modest_hildon2_global_settings_dialog_init (ModestHildon2GlobalSettingsDialog *s
        g_object_set_data (G_OBJECT(ppriv->updating_page), DEFAULT_FOCUS_WIDGET,
                           (gpointer)ppriv->auto_update);
 
-       gtk_container_add (GTK_CONTAINER (GTK_DIALOG (self)->vbox), ppriv->updating_page);
+       gtk_container_add (GTK_CONTAINER (top_vbox), ppriv->updating_page);
+       gtk_container_add (GTK_CONTAINER (align), top_vbox);
+       gtk_container_add (GTK_CONTAINER (GTK_DIALOG (self)->vbox), align);
        gtk_container_set_border_width (GTK_CONTAINER (GTK_DIALOG (self)->vbox), MODEST_MARGIN_HALF);
-       gtk_window_set_default_size (GTK_WINDOW (self), -1, 340);
+       gtk_window_set_default_size (GTK_WINDOW (self), -1, MODEST_DIALOG_WINDOW_MAX_HEIGHT);
+
+       gtk_widget_show (align);
+       gtk_widget_show (top_vbox);
 }
 
 static void
@@ -191,6 +201,7 @@ static GtkWidget*
 create_updating_page (ModestHildon2GlobalSettingsDialog *self)
 {
        GtkWidget *vbox, *vbox_update, *vbox_limit, *label, *hbox;
+       GtkWidget *align;
        GtkSizeGroup *title_size_group;
        GtkSizeGroup *value_size_group;
        ModestGlobalSettingsDialogPrivate *ppriv;
@@ -201,7 +212,7 @@ create_updating_page (ModestHildon2GlobalSettingsDialog *self)
        ppriv = MODEST_GLOBAL_SETTINGS_DIALOG_GET_PRIVATE (self);
        vbox = gtk_vbox_new (FALSE, MODEST_MARGIN_HALF);
 
-       vbox_update = gtk_vbox_new (FALSE, MODEST_MARGIN_HALF);
+       vbox_update = gtk_vbox_new (FALSE, 0);
        title_size_group = gtk_size_group_new (GTK_SIZE_GROUP_HORIZONTAL);
        value_size_group = gtk_size_group_new (GTK_SIZE_GROUP_HORIZONTAL);
 
@@ -224,7 +235,7 @@ create_updating_page (ModestHildon2GlobalSettingsDialog *self)
        modest_maemo_utils_set_vbutton_layout (title_size_group, 
                                               _("mcen_fi_options_connectiontype"),
                                               ppriv->connect_via);
-       gtk_box_pack_start (GTK_BOX (vbox_update), ppriv->connect_via, FALSE, FALSE, MODEST_MARGIN_HALF);
+       gtk_box_pack_start (GTK_BOX (vbox_update), ppriv->connect_via, FALSE, FALSE, 0);
 
        /* Update interval */
 
@@ -238,7 +249,7 @@ create_updating_page (ModestHildon2GlobalSettingsDialog *self)
        modest_maemo_utils_set_vbutton_layout (title_size_group, 
                                               _("mcen_fi_options_updateinterval"), 
                                               ppriv->update_interval);
-       gtk_box_pack_start (GTK_BOX (vbox_update), ppriv->update_interval, FALSE, FALSE, MODEST_MARGIN_HALF);
+       gtk_box_pack_start (GTK_BOX (vbox_update), ppriv->update_interval, FALSE, FALSE, 0);
 
        /* Default account selector */
        ppriv->accounts_list = get_accounts_list ();
@@ -264,30 +275,33 @@ create_updating_page (ModestHildon2GlobalSettingsDialog *self)
                                               _("mcen_ti_default_account"), 
                                               ppriv->default_account_selector);
        gtk_box_pack_start (GTK_BOX (vbox_update), ppriv->default_account_selector, 
-                           FALSE, FALSE, MODEST_MARGIN_HALF);
+                           FALSE, FALSE, 0);
 
        /* Add to vbox */
-       gtk_box_pack_start (GTK_BOX (vbox), vbox_update, FALSE, FALSE, MODEST_MARGIN_HALF);
+       gtk_box_pack_start (GTK_BOX (vbox), vbox_update, FALSE, FALSE, 0);
 
        g_object_unref (title_size_group);
        g_object_unref (value_size_group);
 
        /* Limits */
-       vbox_limit = gtk_vbox_new (FALSE, MODEST_MARGIN_HALF);
+       vbox_limit = gtk_vbox_new (FALSE, 0);
        title_size_group = gtk_size_group_new (GTK_SIZE_GROUP_HORIZONTAL);
        value_size_group = gtk_size_group_new (GTK_SIZE_GROUP_HORIZONTAL);
 
        /* Size limit */
-       ppriv->size_limit = hildon_number_editor_new (MSG_SIZE_MIN_VAL, MSG_SIZE_MAX_VAL);
-       hildon_number_editor_set_value (HILDON_NUMBER_EDITOR (ppriv->size_limit), MSG_SIZE_DEF_VAL);
+       ppriv->size_limit = modest_number_editor_new (MSG_SIZE_MIN_VAL, MSG_SIZE_MAX_VAL);
+       modest_number_editor_set_value (MODEST_NUMBER_EDITOR (ppriv->size_limit), MSG_SIZE_DEF_VAL);
        g_signal_connect (ppriv->size_limit, "range_error", G_CALLBACK (on_range_error), self);
        g_signal_connect (ppriv->size_limit, "notify", G_CALLBACK (on_size_notify), self);
        label = gtk_label_new (_("mcen_fi_advsetup_sizelimit"));
+       align = gtk_alignment_new (0.0, 0.0, 1.0, 1.0);
+       gtk_alignment_set_padding (GTK_ALIGNMENT (align), 0, 0, MODEST_MARGIN_DOUBLE, MODEST_MARGIN_TRIPLE);
        hbox = gtk_hbox_new (FALSE, MODEST_MARGIN_HALF);
-       gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0);
+       gtk_container_add (GTK_CONTAINER (align), label);
+       gtk_box_pack_start (GTK_BOX (hbox), align, FALSE, FALSE, 0);
        gtk_box_pack_start (GTK_BOX (hbox), ppriv->size_limit, TRUE, TRUE, 0);
-       gtk_box_pack_start (GTK_BOX (vbox_limit), hbox, FALSE, FALSE, MODEST_MARGIN_HALF);
-       gtk_box_pack_start (GTK_BOX (vbox), vbox_limit, FALSE, FALSE, MODEST_MARGIN_HALF);
+       gtk_box_pack_start (GTK_BOX (vbox_limit), hbox, FALSE, FALSE, 0);
+       gtk_box_pack_start (GTK_BOX (vbox), vbox_limit, FALSE, FALSE, 0);
        gtk_widget_show_all (vbox_limit);
 
        /* Note: This ModestPairList* must exist for as long as the picker
@@ -301,7 +315,7 @@ create_updating_page (ModestHildon2GlobalSettingsDialog *self)
                                               _("mcen_fi_options_messageformat"), 
                                               ppriv->msg_format);
 
-       gtk_box_pack_start (GTK_BOX (vbox), ppriv->msg_format, FALSE, FALSE, MODEST_MARGIN_HALF);
+       gtk_box_pack_start (GTK_BOX (vbox), ppriv->msg_format, FALSE, FALSE, 0);
 
        pannable = g_object_new (HILDON_TYPE_PANNABLE_AREA, "initial-hint", TRUE, NULL);
 
@@ -341,23 +355,23 @@ on_auto_update_clicked (GtkButton *button,
        update_sensitive ((ModestGlobalSettingsDialog *) user_data);
 }
 static gboolean
-on_range_error (HildonNumberEditor *editor, 
-               HildonNumberEditorErrorType type,
+on_range_error (ModestNumberEditor *editor, 
+               ModestNumberEditorErrorType type,
                gpointer user_data)
 {
        gchar *msg;
        gint new_val;
 
        switch (type) {
-       case HILDON_NUMBER_EDITOR_ERROR_MAXIMUM_VALUE_EXCEED:
+       case MODEST_NUMBER_EDITOR_ERROR_MAXIMUM_VALUE_EXCEED:
                msg = g_strdup_printf (dgettext("hildon-libs", "ckct_ib_maximum_value"), MSG_SIZE_MAX_VAL);
                new_val = MSG_SIZE_MAX_VAL;
                break;
-       case HILDON_NUMBER_EDITOR_ERROR_MINIMUM_VALUE_EXCEED:
+       case MODEST_NUMBER_EDITOR_ERROR_MINIMUM_VALUE_EXCEED:
                msg = g_strdup_printf (dgettext("hildon-libs", "ckct_ib_minimum_value"), MSG_SIZE_MIN_VAL);
                new_val = MSG_SIZE_MIN_VAL;
                break;
-       case HILDON_NUMBER_EDITOR_ERROR_ERRONEOUS_VALUE:
+       case MODEST_NUMBER_EDITOR_ERROR_ERRONEOUS_VALUE:
                msg = g_strdup_printf (dgettext("hildon-libs", "ckct_ib_set_a_value_within_range"), 
                                       MSG_SIZE_MIN_VAL, 
                                       MSG_SIZE_MAX_VAL);
@@ -369,7 +383,7 @@ on_range_error (HildonNumberEditor *editor,
        }
 
        /* Restore value */
-       hildon_number_editor_set_value (editor, new_val);
+       modest_number_editor_set_value (editor, new_val);
 
        /* Show error */
        hildon_banner_show_information (GTK_WIDGET (user_data), NULL, msg);
@@ -381,12 +395,12 @@ on_range_error (HildonNumberEditor *editor,
 }
 
 static void
-on_size_notify         (HildonNumberEditor *editor, 
+on_size_notify         (ModestNumberEditor *editor, 
                        GParamSpec *arg1,
                        gpointer user_data)
 {
        ModestHildon2GlobalSettingsDialog *dialog = MODEST_HILDON2_GLOBAL_SETTINGS_DIALOG (user_data);
-       gint value = hildon_number_editor_get_value (editor);
+       gint value = modest_number_editor_get_value (editor);
 
        gtk_dialog_set_response_sensitive (GTK_DIALOG (dialog), GTK_RESPONSE_OK, value > 0);
 }
@@ -397,7 +411,30 @@ current_connection (void)
        return modest_platform_get_current_connection ();
 }
 
-static ModestPairList * 
+static gint
+order_by_acc_name (gconstpointer a,
+                  gconstpointer b)
+{
+       ModestPair *pair_a, *pair_b;
+
+       pair_a = (ModestPair *) a;
+       pair_b = (ModestPair *) b;
+
+       if (pair_a->second && pair_b->second) {
+               gint compare = g_utf8_collate ((gchar *) pair_a->second,
+                                              (gchar *) pair_b->second);
+               if (compare > 0)
+                       compare = -1;
+               else if (compare < 0)
+                       compare = 1;
+
+               return compare;
+       } else {
+               return 0;
+       }
+}
+
+static ModestPairList *
 get_accounts_list (void)
 {
        GSList *list = NULL;
@@ -411,12 +448,13 @@ get_accounts_list (void)
                gchar *account_name;
                ModestAccountSettings *settings;
                ModestServerAccountSettings *store_settings;
-               
+
                account_name = (gchar*)cursor->data;
-               
+
                settings = modest_account_mgr_load_account_settings (account_mgr, account_name);
                if (!settings) {
                        g_printerr ("modest: failed to get account data for %s\n", account_name);
+                       cursor = cursor->next;
                        continue;
                }
                store_settings = modest_account_settings_get_store_settings (settings);
@@ -431,7 +469,7 @@ get_accounts_list (void)
                                        g_strdup (account_name),
                                        g_strdup (modest_account_settings_get_display_name (settings)),
                                        FALSE);
-                               list = g_slist_prepend (list, pair);
+                               list = g_slist_insert_sorted (list, pair, order_by_acc_name);
                        }
                }
 
@@ -500,7 +538,7 @@ modest_hildon2_global_settings_dialog_load_settings (ModestGlobalSettingsDialog
        }
        /* It's better to do this in the subclasses, but it's just one
           line, so we'll leave it here for the moment */
-       hildon_number_editor_set_value (HILDON_NUMBER_EDITOR (ppriv->size_limit), value);
+       modest_number_editor_set_value (MODEST_NUMBER_EDITOR (ppriv->size_limit), value);
        ppriv->initial_state.size_limit = value;
 
        /* Play sound */