[gnome-photos] source-manager: Store PhotosSource objects not GoaObject
- From: Debarshi Ray <debarshir src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-photos] source-manager: Store PhotosSource objects not GoaObject
- Date: Sun, 16 Dec 2012 20:33:01 +0000 (UTC)
commit a8b0c5786687fc15655d0b7328fe367fa3d3737e
Author: Debarshi Ray <debarshir gnome org>
Date: Mon Dec 17 02:00:11 2012 +0530
source-manager: Store PhotosSource objects not GoaObject
... because PhotosBaseManager is meant to store PhotosFilterable
implementations, which GoaObject is not. This exploits the fact that
PhotosSource:id is the same as GoaAccount:id.
src/photos-source-manager.c | 27 ++++++++++++++++++++-------
1 files changed, 20 insertions(+), 7 deletions(-)
---
diff --git a/src/photos-source-manager.c b/src/photos-source-manager.c
index 0e67208..9651aab 100644
--- a/src/photos-source-manager.c
+++ b/src/photos-source-manager.c
@@ -46,24 +46,33 @@ static void
photos_source_manager_client_account_added (GoaClient *client, GoaObject *object, gpointer user_data)
{
PhotosSourceManager *self = PHOTOS_SOURCE_MANAGER (user_data);
- photos_base_manager_add_object (PHOTOS_BASE_MANAGER (self), G_OBJECT (object));
+ PhotosSource *source;
+
+ source = photos_source_new_from_goa_object (object);
+ photos_base_manager_add_object (PHOTOS_BASE_MANAGER (self), G_OBJECT (source));
+ g_object_unref (source);
}
static void
-photos_source_manager_client_account_changed (GoaClient *client, GoaObject *object, gpointer user_data)
+photos_source_manager_client_account_removed (GoaClient *client, GoaObject *object, gpointer user_data)
{
PhotosSourceManager *self = PHOTOS_SOURCE_MANAGER (user_data);
- photos_base_manager_remove_object (PHOTOS_BASE_MANAGER (self), G_OBJECT (object));
- photos_base_manager_add_object (PHOTOS_BASE_MANAGER (self), G_OBJECT (object));
+ GoaAccount *account;
+ const gchar *id;
+
+ account = goa_object_peek_account (object);
+ id = goa_account_get_id (account);
+ photos_base_manager_remove_object_by_id (PHOTOS_BASE_MANAGER (self), id);
}
static void
-photos_source_manager_client_account_removed (GoaClient *client, GoaObject *object, gpointer user_data)
+photos_source_manager_client_account_changed (GoaClient *client, GoaObject *object, gpointer user_data)
{
PhotosSourceManager *self = PHOTOS_SOURCE_MANAGER (user_data);
- photos_base_manager_remove_object (PHOTOS_BASE_MANAGER (self), G_OBJECT (object));
+ photos_source_manager_client_account_removed (client, object, user_data);
+ photos_source_manager_client_account_added (client, object, user_data);
}
@@ -77,11 +86,15 @@ photos_source_manager_refresh_accounts (PhotosSourceManager *self)
accounts = goa_client_get_accounts (priv->client);
for (l = accounts; l != NULL; l = l->next)
{
+ PhotosSource *source;
+
if (goa_object_peek_account (GOA_OBJECT (l->data)) == NULL)
continue;
/* TODO: uncomment when we start supporting online providers */
- /* photos_base_manager_add_object (PHOTOS_BASE_MANAGER (self), G_OBJECT (l->data)); */
+ /* source = photos_source_new_from_goa_object (GOA_OBJECT (l->data)); */
+ /* photos_base_manager_add_object (PHOTOS_BASE_MANAGER (self), G_OBJECT (source)); */
+ /* g_object_unref (source); */
}
g_list_free_full (accounts, g_object_unref);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]