aboutsummaryrefslogtreecommitdiffstats
path: root/modules/calendar/e-memo-shell-sidebar.c
diff options
context:
space:
mode:
authorMatthew Barnes <mbarnes@redhat.com>2013-02-17 04:51:35 +0800
committerMatthew Barnes <mbarnes@redhat.com>2013-02-17 07:57:11 +0800
commite85c9f204c37e9a2bfa4ce8d056bc475b85130d7 (patch)
tree17edab4c7a5b7e4df4b59bcf617d84c0822a46d0 /modules/calendar/e-memo-shell-sidebar.c
parent0d8bd54b5867ccdc3e39eb5b912193046eed0c0d (diff)
downloadgsoc2013-evolution-e85c9f204c37e9a2bfa4ce8d056bc475b85130d7.tar.gz
gsoc2013-evolution-e85c9f204c37e9a2bfa4ce8d056bc475b85130d7.tar.zst
gsoc2013-evolution-e85c9f204c37e9a2bfa4ce8d056bc475b85130d7.zip
EMemoShellSidebar: Remove internal client table.
No longer needed, replaced by EClientCache.
Diffstat (limited to 'modules/calendar/e-memo-shell-sidebar.c')
-rw-r--r--modules/calendar/e-memo-shell-sidebar.c121
1 files changed, 14 insertions, 107 deletions
diff --git a/modules/calendar/e-memo-shell-sidebar.c b/modules/calendar/e-memo-shell-sidebar.c
index bc09d90972..74942fa5fd 100644
--- a/modules/calendar/e-memo-shell-sidebar.c
+++ b/modules/calendar/e-memo-shell-sidebar.c
@@ -45,9 +45,6 @@ typedef struct _ConnectClosure ConnectClosure;
struct _EMemoShellSidebarPrivate {
GtkWidget *selector;
- /* UID -> Client */
- GHashTable *client_table;
-
/* The default client is for ECalModel. It follows the
* sidebar's primary selection, even if the highlighted
* source is not selected. The tricky part is we don't
@@ -139,7 +136,7 @@ memo_shell_sidebar_emit_client_added (EMemoShellSidebar *memo_shell_sidebar,
static void
memo_shell_sidebar_emit_client_removed (EMemoShellSidebar *memo_shell_sidebar,
- ECalClient *client)
+ EClient *client)
{
guint signal_id = signals[CLIENT_REMOVED];
@@ -172,25 +169,6 @@ memo_shell_sidebar_ref_client_cache (EMemoShellSidebar *memo_shell_sidebar)
}
static void
-memo_shell_sidebar_backend_died_cb (EMemoShellSidebar *memo_shell_sidebar,
- ECalClient *client)
-{
- GHashTable *client_table;
- ESource *source;
- gchar *uid;
-
- client_table = memo_shell_sidebar->priv->client_table;
-
- source = e_client_get_source (E_CLIENT (client));
- uid = e_source_dup_uid (source);
-
- g_hash_table_remove (client_table, uid);
- memo_shell_sidebar_emit_status_message (memo_shell_sidebar, NULL);
-
- g_free (uid);
-}
-
-static void
memo_shell_sidebar_handle_connect_error (EMemoShellSidebar *memo_shell_sidebar,
const gchar *parent_display_name,
const gchar *source_display_name,
@@ -505,26 +483,11 @@ memo_shell_sidebar_dispose (GObject *object)
priv->loading_clients = NULL;
}
- g_hash_table_remove_all (priv->client_table);
-
/* Chain up to parent's dispose() method. */
G_OBJECT_CLASS (e_memo_shell_sidebar_parent_class)->dispose (object);
}
static void
-memo_shell_sidebar_finalize (GObject *object)
-{
- EMemoShellSidebarPrivate *priv;
-
- priv = E_MEMO_SHELL_SIDEBAR_GET_PRIVATE (object);
-
- g_hash_table_destroy (priv->client_table);
-
- /* Chain up to parent's finalize() method. */
- G_OBJECT_CLASS (e_memo_shell_sidebar_parent_class)->finalize (object);
-}
-
-static void
memo_shell_sidebar_constructed (GObject *object)
{
EMemoShellSidebarPrivate *priv;
@@ -654,21 +617,11 @@ memo_shell_sidebar_client_removed (EMemoShellSidebar *memo_shell_sidebar,
ECalClient *client)
{
ESourceSelector *selector;
- GHashTable *client_table;
ESource *source;
- const gchar *uid;
-
- client_table = memo_shell_sidebar->priv->client_table;
- selector = e_memo_shell_sidebar_get_selector (memo_shell_sidebar);
-
- g_signal_handlers_disconnect_matched (
- client, G_SIGNAL_MATCH_DATA, 0, 0,
- NULL, NULL, memo_shell_sidebar);
source = e_client_get_source (E_CLIENT (client));
- uid = e_source_get_uid (source);
- g_hash_table_remove (client_table, uid);
+ selector = e_memo_shell_sidebar_get_selector (memo_shell_sidebar);
e_source_selector_unselect_source (selector, source);
memo_shell_sidebar_emit_status_message (memo_shell_sidebar, NULL);
@@ -685,7 +638,6 @@ e_memo_shell_sidebar_class_init (EMemoShellSidebarClass *class)
object_class = G_OBJECT_CLASS (class);
object_class->get_property = memo_shell_sidebar_get_property;
object_class->dispose = memo_shell_sidebar_dispose;
- object_class->finalize = memo_shell_sidebar_finalize;
object_class->constructed = memo_shell_sidebar_constructed;
shell_sidebar_class = E_SHELL_SIDEBAR_CLASS (class);
@@ -753,17 +705,9 @@ e_memo_shell_sidebar_class_finalize (EMemoShellSidebarClass *class)
static void
e_memo_shell_sidebar_init (EMemoShellSidebar *memo_shell_sidebar)
{
- GHashTable *client_table;
-
- client_table = g_hash_table_new_full (
- g_str_hash, g_str_equal,
- (GDestroyNotify) g_free,
- (GDestroyNotify) g_object_unref);
-
memo_shell_sidebar->priv =
E_MEMO_SHELL_SIDEBAR_GET_PRIVATE (memo_shell_sidebar);
- memo_shell_sidebar->priv->client_table = client_table;
memo_shell_sidebar->priv->loading_clients = g_cancellable_new ();
/* Postpone widget construction until we have a shell view. */
@@ -812,28 +756,12 @@ e_memo_shell_sidebar_add_client (EMemoShellSidebar *memo_shell_sidebar,
{
ESource *source;
ESourceSelector *selector;
- GHashTable *client_table;
const gchar *message;
- const gchar *uid;
g_return_if_fail (E_IS_MEMO_SHELL_SIDEBAR (memo_shell_sidebar));
g_return_if_fail (E_IS_CAL_CLIENT (client));
- client_table = memo_shell_sidebar->priv->client_table;
-
source = e_client_get_source (client);
- uid = e_source_get_uid (source);
-
- if (g_hash_table_contains (client_table, uid))
- return;
-
- g_hash_table_insert (
- client_table, g_strdup (uid), g_object_ref (client));
-
- g_signal_connect_swapped (
- client, "backend-died",
- G_CALLBACK (memo_shell_sidebar_backend_died_cb),
- memo_shell_sidebar);
selector = e_memo_shell_sidebar_get_selector (memo_shell_sidebar);
e_source_selector_select_source (selector, source);
@@ -850,36 +778,14 @@ e_memo_shell_sidebar_add_source (EMemoShellSidebar *memo_shell_sidebar,
{
ESourceSelector *selector;
EClientCache *client_cache;
- GHashTable *client_table;
- EClient *default_client;
const gchar *display_name;
- const gchar *uid;
gchar *message;
g_return_if_fail (E_IS_MEMO_SHELL_SIDEBAR (memo_shell_sidebar));
g_return_if_fail (E_IS_SOURCE (source));
- client_table = memo_shell_sidebar->priv->client_table;
- default_client = memo_shell_sidebar->priv->default_client;
selector = e_memo_shell_sidebar_get_selector (memo_shell_sidebar);
- uid = e_source_get_uid (source);
-
- if (g_hash_table_contains (client_table, uid))
- return;
-
- if (default_client != NULL) {
- ESource *default_source;
-
- default_source = e_client_get_source (default_client);
-
- if (e_source_equal (source, default_source)) {
- e_memo_shell_sidebar_add_client (
- memo_shell_sidebar, default_client);
- return;
- }
- }
-
e_source_selector_select_source (selector, source);
display_name = e_source_get_display_name (source);
@@ -904,20 +810,21 @@ void
e_memo_shell_sidebar_remove_source (EMemoShellSidebar *memo_shell_sidebar,
ESource *source)
{
- GHashTable *client_table;
- ECalClient *client;
- const gchar *uid;
+ EClientCache *client_cache;
+ EClient *client;
g_return_if_fail (E_IS_MEMO_SHELL_SIDEBAR (memo_shell_sidebar));
g_return_if_fail (E_IS_SOURCE (source));
- client_table = memo_shell_sidebar->priv->client_table;
-
- uid = e_source_get_uid (source);
- client = g_hash_table_lookup (client_table, uid);
-
- if (client == NULL)
- return;
+ client_cache =
+ memo_shell_sidebar_ref_client_cache (memo_shell_sidebar);
+ client = e_client_cache_ref_cached_client (
+ client_cache, source, E_SOURCE_EXTENSION_MEMO_LIST);
+ g_object_unref (client_cache);
- memo_shell_sidebar_emit_client_removed (memo_shell_sidebar, client);
+ if (client != NULL) {
+ memo_shell_sidebar_emit_client_removed (
+ memo_shell_sidebar, client);
+ g_object_unref (client);
+ }
}