From dd57574c0427b4571c1daac42b6ffa636a8c80c1 Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Wed, 17 Aug 2011 21:21:22 -0400 Subject: Use new CamelService:display-name property. Simplify, simplify... --- mail/e-mail-backend.c | 12 ++++------ mail/e-mail-local.c | 2 ++ mail/e-mail-session.c | 10 +++++---- mail/e-mail-store.c | 47 +++++++++++++-------------------------- mail/e-mail-store.h | 5 ++--- mail/em-composer-utils.c | 14 +++++++----- mail/em-folder-selection-button.c | 3 +-- mail/em-folder-tree-model.c | 14 +++++++----- mail/em-folder-tree-model.h | 3 +-- mail/em-subscription-editor.c | 14 +++++------- mail/mail-vfolder.c | 19 ++++++---------- mail/message-list.c | 14 ++++-------- 12 files changed, 63 insertions(+), 94 deletions(-) (limited to 'mail') diff --git a/mail/e-mail-backend.c b/mail/e-mail-backend.c index 17007f2c72..479b92ed59 100644 --- a/mail/e-mail-backend.c +++ b/mail/e-mail-backend.c @@ -107,7 +107,6 @@ mail_backend_store_operation_done_cb (CamelStore *store, /* Helper for mail_backend_prepare_for_offline_cb() */ static void mail_store_prepare_for_offline_cb (CamelService *service, - gpointer unused, EActivity *activity) { /* FIXME Not passing a GCancellable. */ @@ -141,13 +140,12 @@ mail_backend_prepare_for_offline_cb (EShell *shell, } e_mail_store_foreach ( - (GHFunc) mail_store_prepare_for_offline_cb, activity); + (GFunc) mail_store_prepare_for_offline_cb, activity); } /* Helper for mail_backend_prepare_for_online_cb() */ static void mail_store_prepare_for_online_cb (CamelService *service, - gpointer unused, EActivity *activity) { /* FIXME Not passing a GCancellable. */ @@ -168,13 +166,12 @@ mail_backend_prepare_for_online_cb (EShell *shell, camel_session_set_online (CAMEL_SESSION (session), TRUE); e_mail_store_foreach ( - (GHFunc) mail_store_prepare_for_online_cb, activity); + (GFunc) mail_store_prepare_for_online_cb, activity); } /* Helper for mail_backend_prepare_for_quit_cb() */ static void mail_backend_delete_junk (CamelStore *store, - gpointer unused, EMailBackend *backend) { CamelFolder *folder; @@ -206,7 +203,6 @@ mail_backend_delete_junk (CamelStore *store, /* Helper for mail_backend_prepare_for_quit_cb() */ static void mail_backend_final_sync (CamelStore *store, - gpointer unused, gpointer user_data) { struct { @@ -268,12 +264,12 @@ mail_backend_prepare_for_quit_cb (EShell *shell, if (delete_junk) e_mail_store_foreach ( - (GHFunc) mail_backend_delete_junk, backend); + (GFunc) mail_backend_delete_junk, backend); sync_data.activity = activity; sync_data.empty_trash = empty_trash; - e_mail_store_foreach ((GHFunc) mail_backend_final_sync, &sync_data); + e_mail_store_foreach ((GFunc) mail_backend_final_sync, &sync_data); /* Now we poll until all activities are actually cancelled or finished. * Reffing the activity delays quitting; the reference count diff --git a/mail/e-mail-local.c b/mail/e-mail-local.c index 183635a30b..1f33c08ab8 100644 --- a/mail/e-mail-local.c +++ b/mail/e-mail-local.c @@ -78,6 +78,8 @@ e_mail_local_init (EMailSession *session, CAMEL_PROVIDER_STORE, &error); g_free (temp); + camel_service_set_display_name (service, _("On This Computer")); + /* Shouldn't need to worry about other mail applications * altering files in our local mail store. */ g_object_set (service, "need-summary-check", FALSE, NULL); diff --git a/mail/e-mail-session.c b/mail/e-mail-session.c index 6c96eca4be..ffcbb57e58 100644 --- a/mail/e-mail-session.c +++ b/mail/e-mail-session.c @@ -819,10 +819,12 @@ mail_session_get_password (CamelSession *session, GError **error) { EAccount *account = NULL; + const gchar *display_name = NULL; const gchar *uid = NULL; gchar *ret = NULL; if (CAMEL_IS_SERVICE (service)) { + display_name = camel_service_get_display_name (service); uid = camel_service_get_uid (service); account = e_get_account_by_uid (uid); } @@ -856,18 +858,18 @@ mail_session_get_password (CamelSession *session, gchar *title; if (flags & CAMEL_SESSION_PASSPHRASE) { - if (account) + if (display_name != NULL) title = g_strdup_printf ( _("Enter Passphrase for %s"), - account->name); + display_name); else title = g_strdup ( _("Enter Passphrase")); } else { - if (account) + if (display_name != NULL) title = g_strdup_printf ( _("Enter Password for %s"), - account->name); + display_name); else title = g_strdup ( _("Enter Password")); diff --git a/mail/e-mail-store.c b/mail/e-mail-store.c index 948683d5e4..f9d18456b4 100644 --- a/mail/e-mail-store.c +++ b/mail/e-mail-store.c @@ -50,7 +50,6 @@ struct _StoreInfo { gint ref_count; CamelStore *store; - gchar *display_name; /* Hold a reference to keep them alive. */ CamelFolder *vtrash; @@ -65,27 +64,17 @@ CamelStore *vfolder_store; /* XXX write a get () function for this */ static GHashTable *store_table; static StoreInfo * -store_info_new (CamelStore *store, - const gchar *display_name) +store_info_new (CamelStore *store) { - CamelService *service; StoreInfo *store_info; g_return_val_if_fail (CAMEL_IS_STORE (store), NULL); - service = CAMEL_SERVICE (store); - store_info = g_slice_new0 (StoreInfo); store_info->ref_count = 1; store_info->store = g_object_ref (store); - if (display_name == NULL) - store_info->display_name = - camel_service_get_name (service, TRUE); - else - store_info->display_name = g_strdup (display_name); - /* If these are vfolders then they need to be opened now, * otherwise they won't keep track of all folders. */ if (store->flags & CAMEL_STORE_VTRASH) @@ -118,7 +107,6 @@ store_info_unref (StoreInfo *store_info) if (g_atomic_int_dec_and_test (&store_info->ref_count)) { g_object_unref (store_info->store); - g_free (store_info->display_name); if (store_info->vtrash != NULL) g_object_unref (store_info->vtrash); @@ -167,7 +155,6 @@ mail_store_note_store_cb (MailFolderCache *folder_cache, static void mail_store_add (EMailSession *session, CamelStore *store, - const gchar *display_name, AddStoreCallback callback) { EMFolderTreeModel *default_model; @@ -187,13 +174,12 @@ mail_store_add (EMailSession *session, default_model = em_folder_tree_model_get_default (); folder_cache = e_mail_session_get_folder_cache (session); - store_info = store_info_new (store, display_name); + store_info = store_info_new (store); store_info->callback = callback; g_hash_table_insert (store_table, store, store_info); - em_folder_tree_model_add_store ( - default_model, store, store_info->display_name); + em_folder_tree_model_add_store (default_model, store); mail_folder_cache_note_store ( folder_cache, CAMEL_SESSION (session), store, NULL, @@ -231,8 +217,8 @@ mail_store_load_accounts (EMailSession *session, local_store = e_mail_local_get_store (); mail_store_add ( - session, local_store, _("On This Computer"), - (AddStoreCallback) mail_store_add_local_done_cb); + session, local_store, (AddStoreCallback) + mail_store_add_local_done_cb); /* Set up remote stores. */ @@ -280,14 +266,12 @@ e_mail_store_init (EMailSession *session, void e_mail_store_add (EMailSession *session, - CamelStore *store, - const gchar *display_name) + CamelStore *store) { g_return_if_fail (E_IS_MAIL_SESSION (session)); g_return_if_fail (CAMEL_IS_STORE (store)); - g_return_if_fail (display_name != NULL); - mail_store_add (session, store, display_name, NULL); + mail_store_add (session, store, NULL); } CamelStore * @@ -319,6 +303,8 @@ e_mail_store_add_by_account (EMailSession *session, account->uid, account->source->url, CAMEL_PROVIDER_STORE, &error); + camel_service_set_display_name (service, account->name); + handle_transport: if (account->transport) { @@ -358,8 +344,7 @@ handle_transport: } if (!skip && (provider->flags & CAMEL_PROVIDER_IS_STORAGE)) - e_mail_store_add ( - session, CAMEL_STORE (service), account->name); + e_mail_store_add (session, CAMEL_STORE (service)); return CAMEL_STORE (service); @@ -434,11 +419,11 @@ e_mail_store_remove_by_account (EMailSession *session, } void -e_mail_store_foreach (GHFunc func, +e_mail_store_foreach (GFunc func, gpointer user_data) { GHashTableIter iter; - gpointer key, value; + gpointer store; g_return_if_fail (func != NULL); @@ -448,13 +433,11 @@ e_mail_store_foreach (GHFunc func, g_hash_table_iter_init (&iter, store_table); - while (g_hash_table_iter_next (&iter, &key, &value)) { - StoreInfo *store_info = value; + while (g_hash_table_iter_next (&iter, &store, NULL)) { /* Just being paranoid. */ - g_return_if_fail (CAMEL_IS_STORE (key)); - g_return_if_fail (store_info != NULL); + g_return_if_fail (CAMEL_IS_STORE (store)); - func (key, store_info->display_name, user_data); + func (store, user_data); } } diff --git a/mail/e-mail-store.h b/mail/e-mail-store.h index 76a6ee5701..b26b4c15ad 100644 --- a/mail/e-mail-store.h +++ b/mail/e-mail-store.h @@ -31,15 +31,14 @@ G_BEGIN_DECLS void e_mail_store_init (EMailSession *session, const gchar *data_dir); void e_mail_store_add (EMailSession *session, - CamelStore *store, - const gchar *display_name); + CamelStore *store); CamelStore * e_mail_store_add_by_account (EMailSession *session, EAccount *account); void e_mail_store_remove (EMailSession *session, CamelStore *store); void e_mail_store_remove_by_account (EMailSession *session, EAccount *account); -void e_mail_store_foreach (GHFunc func, +void e_mail_store_foreach (GFunc func, gpointer user_data); G_END_DECLS diff --git a/mail/em-composer-utils.c b/mail/em-composer-utils.c index 161eb5b613..afbf81ccfa 100644 --- a/mail/em-composer-utils.c +++ b/mail/em-composer-utils.c @@ -992,7 +992,7 @@ em_utils_compose_new_message_with_mailto (EShell *shell, { EMsgComposer *composer; EComposerHeaderTable *table; - EAccount *account = NULL; + CamelService *service = NULL; g_return_val_if_fail (E_IS_SHELL (shell), NULL); @@ -1008,15 +1008,17 @@ em_utils_compose_new_message_with_mailto (EShell *shell, if (folder != NULL) { CamelStore *store; - const gchar *uid; store = camel_folder_get_parent_store (folder); - uid = camel_service_get_uid (CAMEL_SERVICE (store)); - account = e_get_account_by_uid (uid); + service = CAMEL_SERVICE (store); } - if (account != NULL) - e_composer_header_table_set_account_name (table, account->name); + if (service != NULL) { + const gchar *display_name; + + display_name = camel_service_get_display_name (service); + e_composer_header_table_set_account_name (table, display_name); + } composer_set_no_change (composer); diff --git a/mail/em-folder-selection-button.c b/mail/em-folder-selection-button.c index 0b43812e82..e675fc0eee 100644 --- a/mail/em-folder-selection-button.c +++ b/mail/em-folder-selection-button.c @@ -282,8 +282,7 @@ folder_selection_button_clicked (GtkButton *button) model = em_folder_tree_model_new (); em_folder_tree_model_set_session (model, session); em_folder_tree_model_add_store ( - model, CAMEL_STORE (service), - priv->account->name); + model, CAMEL_STORE (service)); } } diff --git a/mail/em-folder-tree-model.c b/mail/em-folder-tree-model.c index f9ed371430..295d9d0865 100644 --- a/mail/em-folder-tree-model.c +++ b/mail/em-folder-tree-model.c @@ -228,8 +228,7 @@ account_changed_cb (EAccountList *accounts, em_utils_is_local_delivery_mbox_file (camel_service_get_camel_url (service))) return; - em_folder_tree_model_add_store ( - model, CAMEL_STORE (service), account->name); + em_folder_tree_model_add_store (model, CAMEL_STORE (service)); } static void @@ -1005,20 +1004,20 @@ folder_renamed_cb (CamelStore *store, void em_folder_tree_model_add_store (EMFolderTreeModel *model, - CamelStore *store, - const gchar *display_name) + CamelStore *store) { EMFolderTreeModelStoreInfo *si; GtkTreeRowReference *reference; GtkTreeStore *tree_store; GtkTreeIter root, iter; GtkTreePath *path; + CamelService *service; CamelURL *service_url; + const gchar *display_name; gchar *uri; g_return_if_fail (EM_IS_FOLDER_TREE_MODEL (model)); g_return_if_fail (CAMEL_IS_STORE (store)); - g_return_if_fail (display_name != NULL); tree_store = GTK_TREE_STORE (model); @@ -1026,7 +1025,10 @@ em_folder_tree_model_add_store (EMFolderTreeModel *model, if (si != NULL) em_folder_tree_model_remove_store (model, store); - service_url = camel_service_get_camel_url (CAMEL_SERVICE (store)); + service = CAMEL_SERVICE (store); + service_url = camel_service_get_camel_url (service); + display_name = camel_service_get_display_name (service); + uri = camel_url_to_string (service_url, CAMEL_URL_HIDE_ALL); /* Add the store to the tree. */ diff --git a/mail/em-folder-tree-model.h b/mail/em-folder-tree-model.h index 40c2afc741..66984fc904 100644 --- a/mail/em-folder-tree-model.h +++ b/mail/em-folder-tree-model.h @@ -132,8 +132,7 @@ void em_folder_tree_model_set_folder_info gint fully_loaded); void em_folder_tree_model_add_store (EMFolderTreeModel *model, - CamelStore *store, - const gchar *display_name); + CamelStore *store); void em_folder_tree_model_remove_store (EMFolderTreeModel *model, CamelStore *store); diff --git a/mail/em-subscription-editor.c b/mail/em-subscription-editor.c index 6c24e841c3..e484b5a121 100644 --- a/mail/em-subscription-editor.c +++ b/mail/em-subscription-editor.c @@ -805,7 +805,7 @@ subscription_editor_add_store (EMSubscriptionEditor *editor, CamelStore *store) { StoreData *data; - EAccount *account; + CamelService *service; GtkListStore *list_store; GtkTreeStore *tree_store; GtkTreeViewColumn *column; @@ -814,17 +814,13 @@ subscription_editor_add_store (EMSubscriptionEditor *editor, GtkComboBoxText *combo_box; GtkWidget *container; GtkWidget *widget; - const gchar *uid; + const gchar *display_name; - /* Neither of the built-in stores ("local" or "vfolder") support - * folder subscriptions. Therefore there should be a corresponding - * EAccount for the store from which we can grab a display name. */ - uid = camel_service_get_uid (CAMEL_SERVICE (store)); - account = e_get_account_by_uid (uid); - g_return_if_fail (account != NULL); + service = CAMEL_SERVICE (store); + display_name = camel_service_get_display_name (service); combo_box = GTK_COMBO_BOX_TEXT (editor->priv->combo_box); - gtk_combo_box_text_append_text (combo_box, account->name); + gtk_combo_box_text_append_text (combo_box, display_name); tree_store = gtk_tree_store_new ( N_COLUMNS, diff --git a/mail/mail-vfolder.c b/mail/mail-vfolder.c index 64b31f3497..a24d9dcb45 100644 --- a/mail/mail-vfolder.c +++ b/mail/mail-vfolder.c @@ -208,11 +208,10 @@ struct _adduri_msg { static gchar * vfolder_adduri_desc (struct _adduri_msg *m) { - EAccount *account; CamelStore *store; + CamelService *service; EMailSession *session; const gchar *display_name; - const gchar *uid; gchar *folder_name; gchar *description; gboolean success; @@ -226,13 +225,8 @@ vfolder_adduri_desc (struct _adduri_msg *m) if (!success) return NULL; - uid = camel_service_get_uid (CAMEL_SERVICE (store)); - account = e_get_account_by_uid (uid); - - if (account != NULL) - display_name = account->name; - else - display_name = _("On This Computer"); + service = CAMEL_SERVICE (store); + display_name = camel_service_get_display_name (service); description = g_strdup_printf ( _("Updating Search Folders for '%s' : %s"), @@ -1123,9 +1117,10 @@ vfolder_load_storage (EMailBackend *backend) service = camel_session_add_service ( CAMEL_SESSION (session), "vfolder", storeuri, CAMEL_PROVIDER_STORE, NULL); - if (service != NULL) + if (service != NULL) { + camel_service_set_display_name (service, _("Search Folders")); em_utils_connect_service_sync (service, NULL, NULL); - else { + } else { g_warning("Cannot open vfolder store - no vfolders available"); return; } @@ -1162,7 +1157,7 @@ vfolder_load_storage (EMailBackend *backend) G_CALLBACK (context_rule_removed), context); /* load store to mail component */ - e_mail_store_add (session, vfolder_store, _("Search Folders")); + e_mail_store_add (session, vfolder_store); /* and setup the rules we have */ rule = NULL; diff --git a/mail/message-list.c b/mail/message-list.c index 66432a930f..70922b8e05 100644 --- a/mail/message-list.c +++ b/mail/message-list.c @@ -1688,12 +1688,11 @@ ml_tree_value_at_ex (ETreeModel *etm, } case COL_LOCATION: { /* Fixme : freeing memory stuff (mem leaks) */ - CamelFolder *folder; CamelStore *store; - EAccount *account; + CamelFolder *folder; + CamelService *service; const gchar *store_name; const gchar *folder_name; - const gchar *uid; folder = message_list->folder; @@ -1705,13 +1704,8 @@ ml_tree_value_at_ex (ETreeModel *etm, store = camel_folder_get_parent_store (folder); folder_name = camel_folder_get_full_name (folder); - uid = camel_service_get_uid (CAMEL_SERVICE (store)); - account = e_get_account_by_uid (uid); - - if (account != NULL) - store_name = account->name; - else - store_name = _("On This Computer"); + service = CAMEL_SERVICE (store); + store_name = camel_service_get_display_name (service); return g_strdup_printf ("%s : %s", store_name, folder_name); } -- cgit v1.2.3