aboutsummaryrefslogtreecommitdiffstats
path: root/mail/em-folder-selection-button.c
diff options
context:
space:
mode:
authorMatthew Barnes <mbarnes@redhat.com>2011-08-31 07:05:30 +0800
committerMatthew Barnes <mbarnes@redhat.com>2011-08-31 08:35:11 +0800
commitf67a5f3d42aa9d743e6b78ace26a6ed1dbdc43e7 (patch)
tree98d3c6e13879d356ed0a4236ed9d2f5d48627980 /mail/em-folder-selection-button.c
parent60383e0427e57bfb5e2fb836b450ec7cf9717b5f (diff)
downloadgsoc2013-evolution-f67a5f3d42aa9d743e6b78ace26a6ed1dbdc43e7.tar
gsoc2013-evolution-f67a5f3d42aa9d743e6b78ace26a6ed1dbdc43e7.tar.gz
gsoc2013-evolution-f67a5f3d42aa9d743e6b78ace26a6ed1dbdc43e7.tar.bz2
gsoc2013-evolution-f67a5f3d42aa9d743e6b78ace26a6ed1dbdc43e7.tar.lz
gsoc2013-evolution-f67a5f3d42aa9d743e6b78ace26a6ed1dbdc43e7.tar.xz
gsoc2013-evolution-f67a5f3d42aa9d743e6b78ace26a6ed1dbdc43e7.tar.zst
gsoc2013-evolution-f67a5f3d42aa9d743e6b78ace26a6ed1dbdc43e7.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.c143
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)
{