From f67a5f3d42aa9d743e6b78ace26a6ed1dbdc43e7 Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Tue, 30 Aug 2011 19:05:30 -0400 Subject: 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. --- mail/em-folder-selection-button.c | 143 ++++++++++++++++++-------------------- 1 file changed, 67 insertions(+), 76 deletions(-) (limited to 'mail/em-folder-selection-button.c') 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 #include #include -#include #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) @@ -340,16 +331,6 @@ em_folder_selection_button_class_init (EMFolderSelectionButtonClass *class) button_class = GTK_BUTTON_CLASS (class); button_class->clicked = folder_selection_button_clicked; - 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, @@ -383,6 +364,16 @@ em_folder_selection_button_class_init (EMFolderSelectionButtonClass *class) G_PARAM_READWRITE | G_PARAM_CONSTRUCT)); + 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, @@ -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) { -- cgit v1.2.3