diff options
author | Matthew Barnes <mbarnes@redhat.com> | 2013-02-17 04:57:05 +0800 |
---|---|---|
committer | Matthew Barnes <mbarnes@redhat.com> | 2013-02-17 07:57:11 +0800 |
commit | af180464d1fb470cfde57acce153bb6b9aa932a5 (patch) | |
tree | 3f5e994ef09fcdfdd8d184ae6fedab930311f174 | |
parent | e85c9f204c37e9a2bfa4ce8d056bc475b85130d7 (diff) | |
download | gsoc2013-evolution-af180464d1fb470cfde57acce153bb6b9aa932a5.tar gsoc2013-evolution-af180464d1fb470cfde57acce153bb6b9aa932a5.tar.gz gsoc2013-evolution-af180464d1fb470cfde57acce153bb6b9aa932a5.tar.bz2 gsoc2013-evolution-af180464d1fb470cfde57acce153bb6b9aa932a5.tar.lz gsoc2013-evolution-af180464d1fb470cfde57acce153bb6b9aa932a5.tar.xz gsoc2013-evolution-af180464d1fb470cfde57acce153bb6b9aa932a5.tar.zst gsoc2013-evolution-af180464d1fb470cfde57acce153bb6b9aa932a5.zip |
ETaskShellSidebar: Remove internal client table.
No longer needed, replaced by EClientCache.
-rw-r--r-- | modules/calendar/e-task-shell-sidebar.c | 121 |
1 files changed, 14 insertions, 107 deletions
diff --git a/modules/calendar/e-task-shell-sidebar.c b/modules/calendar/e-task-shell-sidebar.c index a7008c61e4..bdd5c4d819 100644 --- a/modules/calendar/e-task-shell-sidebar.c +++ b/modules/calendar/e-task-shell-sidebar.c @@ -45,9 +45,6 @@ typedef struct _ConnectClosure ConnectClosure; struct _ETaskShellSidebarPrivate { 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 @@ task_shell_sidebar_emit_client_added (ETaskShellSidebar *task_shell_sidebar, static void task_shell_sidebar_emit_client_removed (ETaskShellSidebar *task_shell_sidebar, - ECalClient *client) + EClient *client) { guint signal_id = signals[CLIENT_REMOVED]; @@ -172,25 +169,6 @@ task_shell_sidebar_ref_client_cache (ETaskShellSidebar *task_shell_sidebar) } static void -task_shell_sidebar_backend_died_cb (ETaskShellSidebar *task_shell_sidebar, - ECalClient *client) -{ - GHashTable *client_table; - ESource *source; - gchar *uid; - - client_table = task_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); - task_shell_sidebar_emit_status_message (task_shell_sidebar, NULL); - - g_free (uid); -} - -static void task_shell_sidebar_handle_connect_error (ETaskShellSidebar *task_shell_sidebar, const gchar *parent_display_name, const gchar *source_display_name, @@ -505,26 +483,11 @@ task_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_task_shell_sidebar_parent_class)->dispose (object); } static void -task_shell_sidebar_finalize (GObject *object) -{ - ETaskShellSidebarPrivate *priv; - - priv = E_TASK_SHELL_SIDEBAR_GET_PRIVATE (object); - - g_hash_table_destroy (priv->client_table); - - /* Chain up to parent's finalize() method. */ - G_OBJECT_CLASS (e_task_shell_sidebar_parent_class)->finalize (object); -} - -static void task_shell_sidebar_constructed (GObject *object) { ETaskShellSidebarPrivate *priv; @@ -654,21 +617,11 @@ task_shell_sidebar_client_removed (ETaskShellSidebar *task_shell_sidebar, ECalClient *client) { ESourceSelector *selector; - GHashTable *client_table; ESource *source; - const gchar *uid; - - client_table = task_shell_sidebar->priv->client_table; - selector = e_task_shell_sidebar_get_selector (task_shell_sidebar); - - g_signal_handlers_disconnect_matched ( - client, G_SIGNAL_MATCH_DATA, 0, 0, - NULL, NULL, task_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_task_shell_sidebar_get_selector (task_shell_sidebar); e_source_selector_unselect_source (selector, source); task_shell_sidebar_emit_status_message (task_shell_sidebar, NULL); @@ -685,7 +638,6 @@ e_task_shell_sidebar_class_init (ETaskShellSidebarClass *class) object_class = G_OBJECT_CLASS (class); object_class->get_property = task_shell_sidebar_get_property; object_class->dispose = task_shell_sidebar_dispose; - object_class->finalize = task_shell_sidebar_finalize; object_class->constructed = task_shell_sidebar_constructed; shell_sidebar_class = E_SHELL_SIDEBAR_CLASS (class); @@ -753,17 +705,9 @@ e_task_shell_sidebar_class_finalize (ETaskShellSidebarClass *class) static void e_task_shell_sidebar_init (ETaskShellSidebar *task_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); - task_shell_sidebar->priv = E_TASK_SHELL_SIDEBAR_GET_PRIVATE (task_shell_sidebar); - task_shell_sidebar->priv->client_table = client_table; task_shell_sidebar->priv->loading_clients = g_cancellable_new (); /* Postpone widget construction until we have a shell view. */ @@ -812,28 +756,12 @@ e_task_shell_sidebar_add_client (ETaskShellSidebar *task_shell_sidebar, { ESource *source; ESourceSelector *selector; - GHashTable *client_table; const gchar *message; - const gchar *uid; g_return_if_fail (E_IS_TASK_SHELL_SIDEBAR (task_shell_sidebar)); g_return_if_fail (E_IS_CAL_CLIENT (client)); - client_table = task_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 (task_shell_sidebar_backend_died_cb), - task_shell_sidebar); selector = e_task_shell_sidebar_get_selector (task_shell_sidebar); e_source_selector_select_source (selector, source); @@ -850,36 +778,14 @@ e_task_shell_sidebar_add_source (ETaskShellSidebar *task_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_TASK_SHELL_SIDEBAR (task_shell_sidebar)); g_return_if_fail (E_IS_SOURCE (source)); - client_table = task_shell_sidebar->priv->client_table; - default_client = task_shell_sidebar->priv->default_client; selector = e_task_shell_sidebar_get_selector (task_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_task_shell_sidebar_add_client ( - task_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_task_shell_sidebar_remove_source (ETaskShellSidebar *task_shell_sidebar, ESource *source) { - GHashTable *client_table; - ECalClient *client; - const gchar *uid; + EClientCache *client_cache; + EClient *client; g_return_if_fail (E_IS_TASK_SHELL_SIDEBAR (task_shell_sidebar)); g_return_if_fail (E_IS_SOURCE (source)); - client_table = task_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 = + task_shell_sidebar_ref_client_cache (task_shell_sidebar); + client = e_client_cache_ref_cached_client ( + client_cache, source, E_SOURCE_EXTENSION_TASK_LIST); + g_object_unref (client_cache); - task_shell_sidebar_emit_client_removed (task_shell_sidebar, client); + if (client != NULL) { + task_shell_sidebar_emit_client_removed ( + task_shell_sidebar, client); + g_object_unref (client); + } } |