diff options
author | Matthew Barnes <mbarnes@redhat.com> | 2011-08-10 11:50:51 +0800 |
---|---|---|
committer | Matthew Barnes <mbarnes@redhat.com> | 2011-08-10 12:14:32 +0800 |
commit | 1594c1c07f7be8cf31804d48d1f3303c04c65761 (patch) | |
tree | ec12e0fada90f2b0127253a493c5493ce26882f5 /mail/em-account-editor.c | |
parent | 8045a9c0feed0ff5eb2ea8975d0cd85f692c5229 (diff) | |
download | gsoc2013-evolution-1594c1c07f7be8cf31804d48d1f3303c04c65761.tar.gz gsoc2013-evolution-1594c1c07f7be8cf31804d48d1f3303c04c65761.tar.zst gsoc2013-evolution-1594c1c07f7be8cf31804d48d1f3303c04c65761.zip |
EMAccountEditor: Simplify real junk/trash folder selection.
Limit the folder choices to the current account so we don't have to
check after the fact if the chosen folder is from the current account.
Diffstat (limited to 'mail/em-account-editor.c')
-rw-r--r-- | mail/em-account-editor.c | 40 |
1 files changed, 21 insertions, 19 deletions
diff --git a/mail/em-account-editor.c b/mail/em-account-editor.c index c689ca61b7..f852441450 100644 --- a/mail/em-account-editor.c +++ b/mail/em-account-editor.c @@ -3056,12 +3056,12 @@ emae_real_url_toggled (GtkToggleButton *check, EMAccountEditor *emae) } static void -emae_real_url_folder_changed (EMFolderSelectionButton *folder, EMAccountEditor *emae) +emae_real_url_folder_changed (EMFolderSelectionButton *folder, + EMAccountEditor *emae) { CamelURL *url; guint32 flag; GtkWidget *check = NULL; - gboolean changed = FALSE; const gchar *param_key = NULL, *curi_selected; g_return_if_fail (folder != NULL); @@ -3083,34 +3083,34 @@ emae_real_url_folder_changed (EMFolderSelectionButton *folder, EMAccountEditor * curi_selected = em_folder_selection_button_get_folder_uri (folder); if (!curi_selected || !*curi_selected) { camel_url_set_param (url, param_key, NULL); - changed = TRUE; } else { - gboolean passed; gchar *selected_folder_name = NULL; CamelStore *selected_store = NULL; - CamelSession *session = CAMEL_SESSION (e_mail_backend_get_session (em_account_editor_get_backend (emae))); + EMailBackend *backend; + EMailSession *session; + gboolean valid; - passed = e_mail_folder_uri_parse (session, curi_selected, &selected_store, &selected_folder_name, NULL); - if (passed) { - passed = selected_store && emae->priv->modified_account && emae->priv->modified_account->uid - && g_strcmp0 (camel_service_get_uid (CAMEL_SERVICE (selected_store)), emae->priv->modified_account->uid) == 0; - } + backend = em_account_editor_get_backend (emae); + session = e_mail_backend_get_session (backend); - if (passed && selected_folder_name && *selected_folder_name) { - camel_url_set_param (url, param_key, (*selected_folder_name) == '/' ? selected_folder_name + 1 : selected_folder_name); - changed = TRUE; - } else { - e_notice (NULL, GTK_MESSAGE_ERROR, "%s", _("Please select a folder from the current account.")); - em_folder_selection_button_set_folder_uri (folder, ""); - } + valid = e_mail_folder_uri_parse ( + CAMEL_SESSION (session), curi_selected, + &selected_store, &selected_folder_name, NULL); + g_return_if_fail (valid); + + if (*selected_folder_name == '/') + camel_url_set_param ( + url, param_key, selected_folder_name + 1); + else + camel_url_set_param ( + url, param_key, selected_folder_name); g_free (selected_folder_name); if (selected_store) g_object_unref (selected_store); } - if (changed) - emae_uri_changed (&emae->priv->source, url); + emae_uri_changed (&emae->priv->source, url); camel_url_free (url); } @@ -3233,6 +3233,7 @@ emae_defaults_page (EConfig *ec, widget = e_builder_get_widget (builder, "trash_folder_butt"); button = EM_FOLDER_SELECTION_BUTTON (widget); + em_folder_selection_button_set_account (button, account); em_folder_selection_button_set_backend (button, backend); priv->trash_folder_button = GTK_BUTTON (button); @@ -3246,6 +3247,7 @@ emae_defaults_page (EConfig *ec, widget = e_builder_get_widget (builder, "junk_folder_butt"); button = EM_FOLDER_SELECTION_BUTTON (widget); + em_folder_selection_button_set_account (button, account); em_folder_selection_button_set_backend (button, backend); priv->junk_folder_button = GTK_BUTTON (button); |