diff options
author | Matthew Barnes <mbarnes@redhat.com> | 2011-08-31 07:05:30 +0800 |
---|---|---|
committer | Rodrigo Moya <rodrigo@gnome-db.org> | 2011-09-14 20:08:58 +0800 |
commit | db1a2dd8aad57fb222daa6f82838b33a26f8e742 (patch) | |
tree | 42d90c8e93a4cf035bb9c92de676ad8dcca36fe3 /mail/em-folder-selection-button.c | |
parent | 629700ced0d5f84031e514cdb31cd97f985a2598 (diff) | |
download | gsoc2013-evolution-db1a2dd8aad57fb222daa6f82838b33a26f8e742.tar gsoc2013-evolution-db1a2dd8aad57fb222daa6f82838b33a26f8e742.tar.gz gsoc2013-evolution-db1a2dd8aad57fb222daa6f82838b33a26f8e742.tar.bz2 gsoc2013-evolution-db1a2dd8aad57fb222daa6f82838b33a26f8e742.tar.lz gsoc2013-evolution-db1a2dd8aad57fb222daa6f82838b33a26f8e742.tar.xz gsoc2013-evolution-db1a2dd8aad57fb222daa6f82838b33a26f8e742.tar.zst gsoc2013-evolution-db1a2dd8aad57fb222daa6f82838b33a26f8e742.zip |
Miscellaneous cleanups.
Reducing diff noise with the account-mgmt branch.
Trying to erode our dependency on EAccount as much as possible, or at
least isolate its usage, to make things easier for me on the branch.
Diffstat (limited to 'mail/em-folder-selection-button.c')
-rw-r--r-- | mail/em-folder-selection-button.c | 143 |
1 files changed, 67 insertions, 76 deletions
diff --git a/mail/em-folder-selection-button.c b/mail/em-folder-selection-button.c index e675fc0eee..3f05147078 100644 --- a/mail/em-folder-selection-button.c +++ b/mail/em-folder-selection-button.c @@ -27,7 +27,6 @@ #include <string.h> #include <glib/gi18n.h> #include <e-util/e-util.h> -#include <e-util/e-account-utils.h> #include "e-mail-folder-utils.h" #include "em-folder-tree.h" @@ -44,7 +43,7 @@ struct _EMFolderSelectionButtonPrivate { EMailBackend *backend; GtkWidget *icon; GtkWidget *label; - EAccount *account; + CamelStore *store; gchar *title; gchar *caption; @@ -53,10 +52,10 @@ struct _EMFolderSelectionButtonPrivate { enum { PROP_0, - PROP_ACCOUNT, PROP_BACKEND, PROP_CAPTION, PROP_FOLDER_URI, + PROP_STORE, PROP_TITLE }; @@ -87,9 +86,9 @@ folder_selection_button_set_contents (EMFolderSelectionButton *button) { EMailBackend *backend; CamelStore *store = NULL; - EAccount *account; + CamelService *service; GtkLabel *label; - const gchar *uid; + const gchar *display_name; gchar *folder_name = NULL; label = GTK_LABEL (button->priv->label); @@ -110,15 +109,14 @@ folder_selection_button_set_contents (EMFolderSelectionButton *button) return; } - uid = camel_service_get_uid (CAMEL_SERVICE (store)); - account = e_get_account_by_uid (uid); + service = CAMEL_SERVICE (store); + display_name = camel_service_get_display_name (service); - if (account != NULL) { + if (display_name != NULL) { gchar *text; text = g_strdup_printf ( - "%s/%s", e_account_get_string ( - account, E_ACCOUNT_NAME), _(folder_name)); + "%s/%s", display_name, _(folder_name)); gtk_label_set_text (label, text); g_free (text); } else @@ -135,12 +133,6 @@ folder_selection_button_set_property (GObject *object, GParamSpec *pspec) { switch (property_id) { - case PROP_ACCOUNT: - em_folder_selection_button_set_account ( - EM_FOLDER_SELECTION_BUTTON (object), - g_value_get_object (value)); - return; - case PROP_BACKEND: em_folder_selection_button_set_backend ( EM_FOLDER_SELECTION_BUTTON (object), @@ -159,6 +151,12 @@ folder_selection_button_set_property (GObject *object, g_value_get_string (value)); return; + case PROP_STORE: + em_folder_selection_button_set_store ( + EM_FOLDER_SELECTION_BUTTON (object), + g_value_get_object (value)); + return; + case PROP_TITLE: em_folder_selection_button_set_title ( EM_FOLDER_SELECTION_BUTTON (object), @@ -176,13 +174,6 @@ folder_selection_button_get_property (GObject *object, GParamSpec *pspec) { switch (property_id) { - case PROP_ACCOUNT: - g_value_set_object ( - value, - em_folder_selection_button_get_account ( - EM_FOLDER_SELECTION_BUTTON (object))); - return; - case PROP_BACKEND: g_value_set_object ( value, @@ -204,6 +195,13 @@ folder_selection_button_get_property (GObject *object, EM_FOLDER_SELECTION_BUTTON (object))); return; + case PROP_STORE: + g_value_set_object ( + value, + em_folder_selection_button_get_store ( + EM_FOLDER_SELECTION_BUTTON (object))); + return; + case PROP_TITLE: g_value_set_string ( value, @@ -222,16 +220,16 @@ folder_selection_button_dispose (GObject *object) priv = EM_FOLDER_SELECTION_BUTTON_GET_PRIVATE (object); - if (priv->account != NULL) { - g_object_unref (priv->account); - priv->account = NULL; - } - if (priv->backend != NULL) { g_object_unref (priv->backend); priv->backend = NULL; } + if (priv->store != NULL) { + g_object_unref (priv->store); + priv->store = NULL; + } + /* Chain up to parent's dispose() method. */ G_OBJECT_CLASS (em_folder_selection_button_parent_class)-> dispose (object); @@ -269,21 +267,14 @@ folder_selection_button_clicked (GtkButton *button) parent = gtk_widget_get_toplevel (GTK_WIDGET (button)); parent = gtk_widget_is_toplevel (parent) ? parent : NULL; - if (priv->account != NULL && priv->account->source != NULL) { + if (priv->store != NULL) { EMailSession *session; - CamelService *service; session = e_mail_backend_get_session (priv->backend); - service = camel_session_get_service ( - CAMEL_SESSION (session), priv->account->uid); - - if (CAMEL_IS_STORE (service)) { - model = em_folder_tree_model_new (); - em_folder_tree_model_set_session (model, session); - em_folder_tree_model_add_store ( - model, CAMEL_STORE (service)); - } + model = em_folder_tree_model_new (); + em_folder_tree_model_set_session (model, session); + em_folder_tree_model_add_store (model, priv->store); } if (model == NULL) @@ -342,16 +333,6 @@ em_folder_selection_button_class_init (EMFolderSelectionButtonClass *class) g_object_class_install_property ( object_class, - PROP_ACCOUNT, - g_param_spec_object ( - "account", - NULL, - NULL, - E_TYPE_ACCOUNT, - G_PARAM_READWRITE)); - - g_object_class_install_property ( - object_class, PROP_BACKEND, g_param_spec_object ( "backend", @@ -385,6 +366,16 @@ em_folder_selection_button_class_init (EMFolderSelectionButtonClass *class) g_object_class_install_property ( object_class, + PROP_STORE, + g_param_spec_object ( + "store", + NULL, + NULL, + CAMEL_TYPE_STORE, + G_PARAM_READWRITE)); + + g_object_class_install_property ( + object_class, PROP_TITLE, g_param_spec_string ( "title", @@ -439,33 +430,6 @@ em_folder_selection_button_new (EMailBackend *backend, "caption", caption, NULL); } -EAccount * -em_folder_selection_button_get_account (EMFolderSelectionButton *button) -{ - g_return_val_if_fail (EM_IS_FOLDER_SELECTION_BUTTON (button), NULL); - - return button->priv->account; -} - -void -em_folder_selection_button_set_account (EMFolderSelectionButton *button, - EAccount *account) -{ - g_return_if_fail (EM_IS_FOLDER_SELECTION_BUTTON (button)); - - if (account != NULL) { - g_return_if_fail (E_IS_ACCOUNT (account)); - g_object_ref (account); - } - - if (button->priv->account != NULL) - g_object_unref (button->priv->account); - - button->priv->account = account; - - g_object_notify (G_OBJECT (button), "account"); -} - EMailBackend * em_folder_selection_button_get_backend (EMFolderSelectionButton *button) { @@ -539,6 +503,33 @@ em_folder_selection_button_set_folder_uri (EMFolderSelectionButton *button, g_object_notify (G_OBJECT (button), "folder-uri"); } +CamelStore * +em_folder_selection_button_get_store (EMFolderSelectionButton *button) +{ + g_return_val_if_fail (EM_IS_FOLDER_SELECTION_BUTTON (button), NULL); + + return button->priv->store; +} + +void +em_folder_selection_button_set_store (EMFolderSelectionButton *button, + CamelStore *store) +{ + g_return_if_fail (EM_IS_FOLDER_SELECTION_BUTTON (button)); + + if (store != NULL) { + g_return_if_fail (CAMEL_IS_STORE (store)); + g_object_ref (store); + } + + if (button->priv->store != NULL) + g_object_unref (button->priv->store); + + button->priv->store = store; + + g_object_notify (G_OBJECT (button), "store"); +} + const gchar * em_folder_selection_button_get_title (EMFolderSelectionButton *button) { |