aboutsummaryrefslogtreecommitdiffstats
path: root/mail
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
parent8045a9c0feed0ff5eb2ea8975d0cd85f692c5229 (diff)
downloadgsoc2013-evolution-1594c1c07f7be8cf31804d48d1f3303c04c65761.tar
gsoc2013-evolution-1594c1c07f7be8cf31804d48d1f3303c04c65761.tar.gz
gsoc2013-evolution-1594c1c07f7be8cf31804d48d1f3303c04c65761.tar.bz2
gsoc2013-evolution-1594c1c07f7be8cf31804d48d1f3303c04c65761.tar.lz
gsoc2013-evolution-1594c1c07f7be8cf31804d48d1f3303c04c65761.tar.xz
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')
-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);