aboutsummaryrefslogtreecommitdiffstats
path: root/mail/em-account-editor.c
diff options
context:
space:
mode:
authorMatthew Barnes <mbarnes@redhat.com>2011-08-10 11:50:51 +0800
committerMatthew Barnes <mbarnes@redhat.com>2011-08-10 12:14:32 +0800
commit1594c1c07f7be8cf31804d48d1f3303c04c65761 (patch)
treeec12e0fada90f2b0127253a493c5493ce26882f5 /mail/em-account-editor.c
parent8045a9c0feed0ff5eb2ea8975d0cd85f692c5229 (diff)
downloadgsoc2013-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.c40
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);