X-Git-Url: http://git.maemo.org/git/?a=blobdiff_plain;f=src%2Fwidgets%2Fmodest-global-settings-dialog.c;h=c21f03d3358f9c9cf10650f351a2eae0923065db;hb=633375fc06361329e8d3b8979558febb62d1cc21;hp=47ff698d12cf1b6a3f8041bae8abebced7c550ab;hpb=2898ebc01fda4931d8c45e159dd86bd7b18f7315;p=modest diff --git a/src/widgets/modest-global-settings-dialog.c b/src/widgets/modest-global-settings-dialog.c index 47ff698..c21f03d 100644 --- a/src/widgets/modest-global-settings-dialog.c +++ b/src/widgets/modest-global-settings-dialog.c @@ -42,11 +42,11 @@ #include "modest-platform.h" #include "widgets/modest-combo-box.h" #ifdef MODEST_PLATFORM_MAEMO -#ifdef MODEST_HILDON_VERSION_0 +#ifdef MODEST_HAVE_HILDON0_WIDGETS #include #else #include -#endif /*MODEST_HILDON_VERSION_0*/ +#endif /*MODEST_HAVE_HILDON0_WIDGETS*/ #endif /* include other impl specific header files */ @@ -63,6 +63,8 @@ static void on_response (GtkDialog *dialog, static void get_current_settings (ModestGlobalSettingsDialogPrivate *priv, ModestGlobalSettingsState *state); +static ModestConnectedVia current_connection_default (void); + /* list my signals */ enum { /* MY_SIGNAL_1, */ @@ -110,48 +112,41 @@ modest_global_settings_dialog_class_init (ModestGlobalSettingsDialogClass *klass gobject_class->finalize = modest_global_settings_dialog_finalize; g_type_class_add_private (gobject_class, sizeof(ModestGlobalSettingsDialogPrivate)); + + klass->current_connection_func = current_connection_default; } static void modest_global_settings_dialog_init (ModestGlobalSettingsDialog *self) { ModestGlobalSettingsDialogPrivate *priv; -/* GdkGeometry *geometry; */ priv = MODEST_GLOBAL_SETTINGS_DIALOG_GET_PRIVATE (self); priv->notebook = gtk_notebook_new (); - priv->changed = FALSE; /* Add the buttons: */ - gtk_dialog_add_button (GTK_DIALOG (self), GTK_STOCK_OK, GTK_RESPONSE_OK); - gtk_dialog_add_button (GTK_DIALOG (self), GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL); + gtk_dialog_add_button (GTK_DIALOG (self), _("mcen_bd_dialog_ok"), GTK_RESPONSE_OK); + gtk_dialog_add_button (GTK_DIALOG (self), _("mcen_bd_dialog_cancel"), GTK_RESPONSE_CANCEL); /* Connect to the dialog's response signal: */ g_signal_connect (G_OBJECT (self), "response", G_CALLBACK (on_response), self); /* Set title */ gtk_window_set_title (GTK_WINDOW (self), _("mcen_ti_options")); - - /* Set geometry */ -/* geometry = g_malloc0(sizeof (GdkGeometry)); */ -/* geometry->max_width = MODEST_DIALOG_WINDOW_MAX_WIDTH; */ -/* geometry->min_width = MODEST_DIALOG_WINDOW_MIN_WIDTH; */ -/* geometry->max_height = MODEST_DIALOG_WINDOW_MAX_HEIGHT; */ -/* geometry->min_height = MODEST_DIALOG_WINDOW_MIN_HEIGHT; */ -/* gtk_window_set_geometry_hints (GTK_WINDOW (self), */ -/* GTK_WIDGET (self), */ -/* geometry, */ -/* GDK_HINT_MIN_SIZE | GDK_HINT_MAX_SIZE); */ - gtk_widget_set_size_request (GTK_WIDGET (self), - MODEST_DIALOG_WINDOW_MAX_WIDTH, - MODEST_DIALOG_WINDOW_MAX_HEIGHT); } static void modest_global_settings_dialog_finalize (GObject *obj) { -/* free/unref instance resources here */ + ModestGlobalSettingsDialogPrivate *priv = + MODEST_GLOBAL_SETTINGS_DIALOG_GET_PRIVATE (obj); + + /* These had to stay alive as long as the comboboxes that used them: */ + modest_pair_list_free (priv->connect_via_list); + modest_pair_list_free (priv->update_interval_list); + modest_pair_list_free (priv->msg_format_list); + G_OBJECT_CLASS(parent_class)->finalize (obj); } @@ -178,8 +173,8 @@ _modest_global_settings_dialog_get_connected_via (void) { GSList *list = NULL; - add_to_modest_pair_list (MODEST_CONNECTED_VIA_WLAN, - _("mcen_va_options_connectiontype_wlan"), + add_to_modest_pair_list (MODEST_CONNECTED_VIA_WLAN_OR_WIMAX, + _("mcen_va_options_connectiontype_wlan_wimax"), &list); add_to_modest_pair_list (MODEST_CONNECTED_VIA_ANY, _("mcen_va_options_connectiontype_all"), @@ -237,13 +232,15 @@ _modest_global_settings_dialog_get_msg_formats (void) } void -_modest_global_settings_dialog_load_conf (ModestGlobalSettingsDialogPrivate *priv) +_modest_global_settings_dialog_load_conf (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 */ @@ -261,7 +258,7 @@ _modest_global_settings_dialog_load_conf (ModestGlobalSettingsDialogPrivate *pri if (error) { g_error_free (error); error = NULL; - combo_id = MODEST_CONNECTED_VIA_WLAN; + combo_id = MODEST_CONNECTED_VIA_WLAN_OR_WIMAX; } modest_combo_box_set_active_id (MODEST_COMBO_BOX (priv->connect_via), (gpointer) &combo_id); @@ -293,7 +290,7 @@ _modest_global_settings_dialog_load_conf (ModestGlobalSettingsDialogPrivate *pri #ifdef MODEST_PLATFORM_MAEMO hildon_number_editor_set_value (HILDON_NUMBER_EDITOR (priv->size_limit), value); #else - gtk_spin_button_set_value (GTK_SPIN_BUTTON (priv->size_limit, value)); + gtk_spin_button_set_value (GTK_SPIN_BUTTON (priv->size_limit), value); #endif priv->initial_state.size_limit = value; @@ -308,29 +305,16 @@ _modest_global_settings_dialog_load_conf (ModestGlobalSettingsDialogPrivate *pri priv->initial_state.play_sound = checked; /* Msg format */ - combo_id = modest_conf_get_int (conf, MODEST_CONF_PREFER_FORMATTED_TEXT, &error); + 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.msg_format = combo_id; - - /* Include reply */ - value = modest_conf_get_int (conf, MODEST_CONF_REPLY_TYPE, &error); - if (error) { - g_error_free (error); - error = NULL; - value = MODEST_TNY_MSG_REPLY_TYPE_QUOTE; - } - if (value == MODEST_TNY_MSG_REPLY_TYPE_QUOTE) - checked = TRUE; - else - checked = FALSE; - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (priv->include_reply), checked); - priv->initial_state.include_reply = checked; + priv->initial_state.prefer_formatted_text = checked; } static void @@ -346,22 +330,24 @@ get_current_settings (ModestGlobalSettingsDialogPrivate *priv, #ifdef MODEST_PLATFORM_MAEMO state->size_limit = hildon_number_editor_get_value (HILDON_NUMBER_EDITOR (priv->size_limit)); #else - state->size_limit = gtk_spin_button_set_value (GTK_SPIN_BUTTON (priv->size_limit)); + state->size_limit = gtk_spin_button_get_value (GTK_SPIN_BUTTON (priv->size_limit)); #endif id = modest_combo_box_get_active_id (MODEST_COMBO_BOX (priv->update_interval)); state->update_interval = *id; state->play_sound = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (priv->play_sound)); id = modest_combo_box_get_active_id (MODEST_COMBO_BOX (priv->msg_format)); - state->msg_format = *id; - state->include_reply = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (priv->include_reply)); + state->prefer_formatted_text = (*id == MODEST_FILE_FORMAT_FORMATTED_TEXT) ? TRUE : FALSE; } gboolean -_modest_global_settings_dialog_save_conf (ModestGlobalSettingsDialogPrivate *priv) +_modest_global_settings_dialog_save_conf (ModestGlobalSettingsDialog *self) { ModestConf *conf; ModestGlobalSettingsState current_state; GError *error = NULL; + ModestGlobalSettingsDialogPrivate *priv; + + priv = MODEST_GLOBAL_SETTINGS_DIALOG_GET_PRIVATE (self); conf = modest_runtime_get_conf (); @@ -378,13 +364,51 @@ _modest_global_settings_dialog_save_conf (ModestGlobalSettingsDialogPrivate *pri RETURN_FALSE_ON_ERROR(error); modest_conf_set_bool (conf, MODEST_CONF_PLAY_SOUND_MSG_ARRIVE, current_state.play_sound, NULL); RETURN_FALSE_ON_ERROR(error); - modest_conf_set_int (conf, MODEST_CONF_PREFER_FORMATTED_TEXT, current_state.msg_format, NULL); - RETURN_FALSE_ON_ERROR(error); - modest_conf_set_int (conf, MODEST_CONF_REPLY_TYPE, - (current_state.include_reply) ? MODEST_TNY_MSG_REPLY_TYPE_QUOTE : - MODEST_TNY_MSG_REPLY_TYPE_CITE, NULL); + modest_conf_set_bool (conf, MODEST_CONF_PREFER_FORMATTED_TEXT, current_state.prefer_formatted_text, NULL); RETURN_FALSE_ON_ERROR(error); + /* Apply changes */ + if (priv->initial_state.auto_update != current_state.auto_update || + priv->initial_state.connect_via != current_state.connect_via || + priv->initial_state.update_interval != current_state.update_interval) { + + TnyAccountStore *account_store; + TnyDevice *device; + + if (!current_state.auto_update) { + modest_platform_set_update_interval (0); + /* To avoid a new indentation level */ + goto exit; + } + + account_store = TNY_ACCOUNT_STORE (modest_runtime_get_account_store ()); + device = tny_account_store_get_device (account_store); + + if (tny_device_is_online (device)) { + /* If connected via any then set update interval */ + if (current_state.connect_via == MODEST_CONNECTED_VIA_ANY) { + modest_platform_set_update_interval (current_state.update_interval); + } else { + /* Set update interval only if we + selected the same connect_via + method than the one already used by + the device */ + ModestConnectedVia connect_via = + MODEST_GLOBAL_SETTINGS_DIALOG_GET_CLASS(self)->current_connection_func (); + + if (current_state.connect_via == connect_via) + modest_platform_set_update_interval (current_state.update_interval); + else + modest_platform_set_update_interval (0); + } + } else { + /* Disable autoupdate in offline mode */ + modest_platform_set_update_interval (0); + } + g_object_unref (device); + } + +exit: return TRUE; } @@ -397,8 +421,7 @@ settings_changed (ModestGlobalSettingsState initial_state, initial_state.update_interval != current_state.update_interval || initial_state.size_limit != current_state.size_limit || initial_state.play_sound != current_state.play_sound || - initial_state.msg_format != current_state.msg_format || - initial_state.include_reply != current_state.include_reply) + initial_state.prefer_formatted_text != current_state.prefer_formatted_text) return TRUE; else return FALSE; @@ -422,13 +445,14 @@ on_response (GtkDialog *dialog, if (changed) { gboolean saved; - saved = _modest_global_settings_dialog_save_conf (priv); - if (saved) + saved = _modest_global_settings_dialog_save_conf (MODEST_GLOBAL_SETTINGS_DIALOG (dialog)); + if (saved) { modest_platform_run_information_dialog (GTK_WINDOW (user_data), _("mcen_ib_advsetup_settings_saved")); - else + } else { modest_platform_run_information_dialog (GTK_WINDOW (user_data), _("mail_ib_setting_failed")); + } } } else { if (changed) { @@ -441,3 +465,10 @@ on_response (GtkDialog *dialog, } } } + +static ModestConnectedVia +current_connection_default (void) +{ + g_warning ("You must implement %s", __FUNCTION__); + g_return_val_if_reached (MODEST_CONNECTED_VIA_ANY); +}