X-Git-Url: http://git.maemo.org/git/?a=blobdiff_plain;f=src%2Fgnome%2Fmodest-gnome-global-settings-dialog.c;h=c4e88c130e91593d87176917082c0fb877d5d03b;hb=90340a01ab45830f2f392a54c729209eb12f7355;hp=57cb86ceadab1a11c30766d5a31a9fcda976571e;hpb=2b58f5abfb171a82424c14cd9777ea5ee460db61;p=modest diff --git a/src/gnome/modest-gnome-global-settings-dialog.c b/src/gnome/modest-gnome-global-settings-dialog.c index 57cb86c..c4e88c1 100644 --- a/src/gnome/modest-gnome-global-settings-dialog.c +++ b/src/gnome/modest-gnome-global-settings-dialog.c @@ -34,7 +34,6 @@ #include #include #include -#include #include #include #include @@ -42,6 +41,8 @@ #include #include "widgets/modest-global-settings-dialog-priv.h" #include "widgets/modest-combo-box.h" +#include "modest-runtime.h" +#include "modest-defs.h" #include "gnome/modest-gnome-global-settings-dialog.h" #include "widgets/modest-ui-constants.h" @@ -60,6 +61,7 @@ enum { LAST_SIGNAL }; +static void modest_gnome_global_settings_dialog_load_settings (ModestGlobalSettingsDialog *self); static GtkWidget* create_updating_page (ModestGnomeGlobalSettingsDialog *self); static GtkWidget* create_composing_page (ModestGnomeGlobalSettingsDialog *self); static ModestConnectedVia current_connection (void); @@ -122,18 +124,23 @@ modest_gnome_global_settings_dialog_init (ModestGnomeGlobalSettingsDialog *self) ppriv = MODEST_GLOBAL_SETTINGS_DIALOG_GET_PRIVATE (self); + gtk_dialog_set_has_separator (GTK_DIALOG (self), FALSE); + ppriv->updating_page = create_updating_page (self); - ppriv->composing_page = create_composing_page (self); + ppriv->composing_page = NULL; + + gtk_container_add (GTK_CONTAINER (GTK_DIALOG (self)->vbox), ppriv->updating_page); + gtk_box_set_spacing (GTK_BOX (GTK_DIALOG (self)->vbox), 12); + gtk_container_set_border_width (GTK_CONTAINER (self), 12); + gtk_window_set_default_size (GTK_WINDOW (self), 480, -1); + + gtk_container_set_border_width (GTK_CONTAINER (GTK_DIALOG (self)->action_area), 0); + + /* Add the buttons: */ + gtk_dialog_add_button (GTK_DIALOG (self), GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL); + gtk_dialog_add_button (GTK_DIALOG (self), GTK_STOCK_SAVE, GTK_RESPONSE_OK); - /* Add the notebook pages: */ - gtk_notebook_append_page (GTK_NOTEBOOK (ppriv->notebook), ppriv->updating_page, - gtk_label_new (_("mcen_ti_options_updating"))); - gtk_notebook_append_page (GTK_NOTEBOOK (ppriv->notebook), ppriv->composing_page, - gtk_label_new (_("mcen_ti_options_composing"))); - - gtk_container_add (GTK_CONTAINER (GTK_DIALOG (self)->vbox), ppriv->notebook); - gtk_container_set_border_width (GTK_CONTAINER (GTK_DIALOG (self)->vbox), MODEST_MARGIN_HALF); - gtk_widget_show_all (ppriv->notebook); + gtk_widget_show_all (ppriv->updating_page); } static void @@ -146,7 +153,12 @@ modest_gnome_global_settings_dialog_finalize (GObject *obj) GtkWidget* modest_gnome_global_settings_dialog_new (void) { - return GTK_WIDGET(g_object_new(MODEST_TYPE_GNOME_GLOBAL_SETTINGS_DIALOG, NULL)); + GtkWidget *self = GTK_WIDGET(g_object_new(MODEST_TYPE_GNOME_GLOBAL_SETTINGS_DIALOG, NULL)); + + /* Load settings */ + modest_gnome_global_settings_dialog_load_settings (MODEST_GLOBAL_SETTINGS_DIALOG (self)); + + return self; } @@ -166,14 +178,14 @@ add_to_table (GtkTable *table, gtk_table_attach (table, left, 0, 1, n_rows, n_rows + 1, - GTK_SHRINK|GTK_FILL, - GTK_SHRINK|GTK_FILL, + GTK_FILL, + GTK_FILL, 0, 0); gtk_table_attach (table, right, 1, 2, n_rows, n_rows + 1, - GTK_EXPAND|GTK_FILL, - GTK_SHRINK|GTK_FILL, + GTK_EXPAND | GTK_FILL, + GTK_FILL, 0, 0); } @@ -188,6 +200,7 @@ create_label (const gchar *text) label_name = g_strdup_printf ("%s:", text); label = gtk_label_new (label_name); + gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); g_free (label_name); return label; @@ -200,35 +213,35 @@ static GtkWidget* create_updating_page (ModestGnomeGlobalSettingsDialog *self) { GtkWidget *vbox, *table_update, *table_limit; - GtkWidget *label, *check, *combo, *spin; + GtkWidget *label; + ModestGlobalSettingsDialogPrivate *ppriv; - vbox = gtk_vbox_new (FALSE, MODEST_MARGIN_DEFAULT); + ppriv = MODEST_GLOBAL_SETTINGS_DIALOG_GET_PRIVATE (self); + + vbox = gtk_vbox_new (FALSE, 0); table_update = gtk_table_new (3, 2, FALSE); table_limit = gtk_table_new (2, 2, FALSE); /* FIXME: set proper values (HIG) */ - gtk_table_set_row_spacings (GTK_TABLE (table_update), 6); + gtk_table_set_row_spacings (GTK_TABLE (table_update), 3); gtk_table_set_col_spacings (GTK_TABLE (table_update), 12); - gtk_table_set_row_spacings (GTK_TABLE (table_limit), 6); + gtk_table_set_row_spacings (GTK_TABLE (table_limit), 3); gtk_table_set_col_spacings (GTK_TABLE (table_limit), 12); /* Autoupdate */ label = create_label (_("mcen_fi_options_autoupdate")); - check = gtk_check_button_new (); - add_to_table (GTK_TABLE (table_update), label, check); + ppriv->auto_update = gtk_check_button_new (); + add_to_table (GTK_TABLE (table_update), label, ppriv->auto_update); /* Connected via */ label = create_label (_("mcen_fi_options_connectiontype")); - ModestGlobalSettingsDialogPrivate *ppriv = - MODEST_GLOBAL_SETTINGS_DIALOG_GET_PRIVATE (self); - /* Note: This ModestPairList* must exist for as long as the combo * that uses it, because the ModestComboBox uses the ID opaquely, * so it can't know how to manage its memory. */ ppriv->connect_via_list = _modest_global_settings_dialog_get_connected_via (); - combo = modest_combo_box_new (ppriv->connect_via_list, g_int_equal); + ppriv->connect_via = modest_combo_box_new (ppriv->connect_via_list, g_int_equal); - add_to_table (GTK_TABLE (table_update), label, combo); + add_to_table (GTK_TABLE (table_update), label, ppriv->connect_via); /* Update interval */ label = create_label (_("mcen_fi_options_updateinterval")); @@ -237,9 +250,9 @@ create_updating_page (ModestGnomeGlobalSettingsDialog *self) * that uses it, because the ModestComboBox uses the ID opaquely, * so it can't know how to manage its memory. */ ppriv->update_interval_list = _modest_global_settings_dialog_get_update_interval (); - combo = modest_combo_box_new (ppriv->update_interval_list, g_int_equal); + ppriv->update_interval = modest_combo_box_new (ppriv->update_interval_list, g_int_equal); - add_to_table (GTK_TABLE (table_update), label, combo); + add_to_table (GTK_TABLE (table_update), label, ppriv->update_interval); /* Add to vbox */ gtk_box_pack_start (GTK_BOX (vbox), table_update, FALSE, FALSE, MODEST_MARGIN_HALF); @@ -249,16 +262,17 @@ create_updating_page (ModestGnomeGlobalSettingsDialog *self) /* Limits */ label = create_label (_("mcen_fi_advsetup_sizelimit")); - spin = gtk_spin_button_new (GTK_ADJUSTMENT (gtk_adjustment_new (1000, 1, 5000, 1, 1, 16)), - 1, 0); - add_to_table (GTK_TABLE (table_limit), label, spin); + ppriv->size_limit = gtk_spin_button_new (GTK_ADJUSTMENT (gtk_adjustment_new (1000, 1, 5000, 1, 1, 16)), + 1, 0); + add_to_table (GTK_TABLE (table_limit), label, ppriv->size_limit); label = create_label (_("mcen_fi_options_playsound")); - check = gtk_check_button_new (); - add_to_table (GTK_TABLE (table_limit), label, check); + ppriv->play_sound = gtk_check_button_new (); + add_to_table (GTK_TABLE (table_limit), label, ppriv->play_sound); /* Add to vbox */ gtk_box_pack_start (GTK_BOX (vbox), table_limit, FALSE, FALSE, MODEST_MARGIN_HALF); + gtk_container_set_border_width (GTK_CONTAINER (vbox), 12); return vbox; } @@ -270,12 +284,12 @@ static GtkWidget* create_composing_page (ModestGnomeGlobalSettingsDialog *self) { GtkWidget *vbox, *table; - GtkWidget *label, *check, *combo; + GtkWidget *label; vbox = gtk_vbox_new (FALSE, MODEST_MARGIN_DEFAULT); table = gtk_table_new (2, 2, FALSE); /* FIXME: set proper values */ - gtk_table_set_row_spacings (GTK_TABLE (table), 6); + gtk_table_set_row_spacings (GTK_TABLE (table), 3); gtk_table_set_col_spacings (GTK_TABLE (table), 12); /* Update interval */ @@ -288,16 +302,13 @@ create_composing_page (ModestGnomeGlobalSettingsDialog *self) * that uses it, because the ModestComboBox uses the ID opaquely, * so it can't know how to manage its memory. */ ppriv->msg_format_list = _modest_global_settings_dialog_get_msg_formats (); - combo = modest_combo_box_new (ppriv->msg_format_list, g_int_equal); - - add_to_table (GTK_TABLE (table), label, combo); + ppriv->msg_format = modest_combo_box_new (ppriv->msg_format_list, g_int_equal); - label = create_label (_("mcen_va_options_include_original_inreply")); - check = gtk_check_button_new (); - add_to_table (GTK_TABLE (table), label, check); + add_to_table (GTK_TABLE (table), label, ppriv->msg_format); /* Add to vbox */ - gtk_box_pack_start (GTK_BOX (vbox), table, FALSE, FALSE, MODEST_MARGIN_HALF); + gtk_box_pack_start (GTK_BOX (vbox), table, FALSE, FALSE, 0); + gtk_container_set_border_width (GTK_CONTAINER (vbox), 12); return vbox; } @@ -307,3 +318,82 @@ current_connection (void) { return MODEST_CONNECTED_VIA_ANY; } + +static void +modest_gnome_global_settings_dialog_load_settings (ModestGlobalSettingsDialog *self) +{ + ModestConf *conf; + gboolean checked; + gint combo_id, value; + GError *error = NULL; + ModestGlobalSettingsDialogPrivate *priv; + + priv = MODEST_GLOBAL_SETTINGS_DIALOG_GET_PRIVATE (self); + conf = modest_runtime_get_conf (); + + /* Autoupdate */ + checked = modest_conf_get_bool (conf, MODEST_CONF_AUTO_UPDATE, &error); + if (error) { + g_clear_error (&error); + error = NULL; + checked = FALSE; + } + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (priv->auto_update), checked); + priv->initial_state.auto_update = checked; + + /* Connected by */ + combo_id = modest_conf_get_int (conf, MODEST_CONF_UPDATE_WHEN_CONNECTED_BY, &error); + if (error) { + g_error_free (error); + error = NULL; + combo_id = MODEST_CONNECTED_VIA_WLAN_OR_WIMAX; + } + modest_combo_box_set_active_id (MODEST_COMBO_BOX (priv->connect_via), + (gpointer) &combo_id); + priv->initial_state.connect_via = combo_id; + + /* Update interval */ + combo_id = modest_conf_get_int (conf, MODEST_CONF_UPDATE_INTERVAL, &error); + if (error) { + g_error_free (error); + error = NULL; + combo_id = MODEST_UPDATE_INTERVAL_15_MIN; + } + modest_combo_box_set_active_id (MODEST_COMBO_BOX (priv->update_interval), + (gpointer) &combo_id); + priv->initial_state.update_interval = combo_id; + + /* Size limit */ + value = modest_conf_get_int (conf, MODEST_CONF_MSG_SIZE_LIMIT, &error); + if (error) { + g_error_free (error); + error = NULL; + value = 1000; + } + /* It's better to do this in the subclasses, but it's just one + line, so we'll leave it here for the moment */ + gtk_spin_button_set_value (GTK_SPIN_BUTTON (priv->size_limit), value); + priv->initial_state.size_limit = value; + + /* Play sound */ + checked = modest_conf_get_bool (conf, MODEST_CONF_PLAY_SOUND_MSG_ARRIVE, &error); + if (error) { + g_error_free (error); + error = NULL; + checked = FALSE; + } + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (priv->play_sound), checked); + priv->initial_state.play_sound = checked; + + /* Msg format */ + checked = modest_conf_get_bool (conf, MODEST_CONF_PREFER_FORMATTED_TEXT, &error); + if (error) { + g_error_free (error); + error = NULL; + combo_id = MODEST_FILE_FORMAT_FORMATTED_TEXT; + } + combo_id = (checked) ? MODEST_FILE_FORMAT_FORMATTED_TEXT : MODEST_FILE_FORMAT_PLAIN_TEXT; + modest_combo_box_set_active_id (MODEST_COMBO_BOX (priv->msg_format), + (gpointer) &combo_id); + priv->initial_state.prefer_formatted_text = checked; +}