[gnome-photos] base-manager: Store any type of object that has a property called "id"
- From: Debarshi Ray <debarshir src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-photos] base-manager: Store any type of object that has a property called "id"
- Date: Wed, 2 May 2012 12:17:31 +0000 (UTC)
commit 90ea2eba4761eb3d43fe599b8e7715578a840d39
Author: Debarshi Ray <debarshir gnome org>
Date: Tue May 1 04:14:49 2012 +0200
base-manager: Store any type of object that has a property called "id"
src/photos-base-manager.c | 135 ++++++++++++++++---------------
src/photos-base-manager.h | 30 ++++----
src/photos-main-toolbar.c | 12 ++--
src/photos-organize-collection-model.c | 12 ++--
4 files changed, 96 insertions(+), 93 deletions(-)
---
diff --git a/src/photos-base-manager.c b/src/photos-base-manager.c
index f9728c7..0a118a8 100644
--- a/src/photos-base-manager.c
+++ b/src/photos-base-manager.c
@@ -28,15 +28,15 @@
struct _PhotosBaseManagerPrivate
{
- GHashTable *items;
- PhotosBaseItem *active_item;
+ GHashTable *objects;
+ GObject *active_object;
};
enum
{
ACTIVE_CHANGED,
- ITEM_ADDED,
- ITEM_REMOVED,
+ OBJECT_ADDED,
+ OBJECT_REMOVED,
LAST_SIGNAL
};
@@ -52,13 +52,13 @@ photos_base_manager_dispose (GObject *object)
PhotosBaseManager *self = PHOTOS_BASE_MANAGER (object);
PhotosBaseManagerPrivate *priv = self->priv;
- if (priv->items != NULL)
+ if (priv->objects != NULL)
{
- g_hash_table_unref (priv->items);
- priv->items = NULL;
+ g_hash_table_unref (priv->objects);
+ priv->objects = NULL;
}
- g_clear_object (&priv->active_item);
+ g_clear_object (&priv->active_object);
G_OBJECT_CLASS (photos_base_manager_parent_class)->dispose (object);
}
@@ -72,7 +72,7 @@ photos_base_manager_init (PhotosBaseManager *self)
self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, PHOTOS_TYPE_BASE_MANAGER, PhotosBaseManagerPrivate);
priv = self->priv;
- priv->items = g_hash_table_new_full (g_str_hash, g_str_equal, NULL, g_object_unref);
+ priv->objects = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_object_unref);
}
@@ -93,44 +93,46 @@ photos_base_manager_class_init (PhotosBaseManagerClass *class)
g_cclosure_marshal_VOID__OBJECT,
G_TYPE_NONE,
1,
- PHOTOS_TYPE_BASE_ITEM);
-
- signals[ITEM_ADDED] = g_signal_new ("item-added",
- G_TYPE_FROM_CLASS (class),
- G_SIGNAL_RUN_LAST,
- G_STRUCT_OFFSET (PhotosBaseManagerClass,
- item_added),
- NULL, /*accumulator */
- NULL, /* accu_data */
- g_cclosure_marshal_VOID__OBJECT,
- G_TYPE_NONE,
- 1,
- PHOTOS_TYPE_BASE_ITEM);
-
- signals[ITEM_REMOVED] = g_signal_new ("item-removed",
+ G_TYPE_OBJECT);
+
+ signals[OBJECT_ADDED] = g_signal_new ("object-added",
G_TYPE_FROM_CLASS (class),
G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET (PhotosBaseManagerClass,
- item_removed),
+ object_added),
NULL, /*accumulator */
- NULL, /*accu_data */
+ NULL, /* accu_data */
g_cclosure_marshal_VOID__OBJECT,
G_TYPE_NONE,
1,
- PHOTOS_TYPE_BASE_ITEM);
+ G_TYPE_OBJECT);
+
+ signals[OBJECT_REMOVED] = g_signal_new ("object-removed",
+ G_TYPE_FROM_CLASS (class),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (PhotosBaseManagerClass,
+ object_removed),
+ NULL, /*accumulator */
+ NULL, /*accu_data */
+ g_cclosure_marshal_VOID__OBJECT,
+ G_TYPE_NONE,
+ 1,
+ G_TYPE_OBJECT);
g_type_class_add_private (class, sizeof (PhotosBaseManagerPrivate));
}
void
-photos_base_manager_add_item (PhotosBaseManager *self, PhotosBaseItem *item)
+photos_base_manager_add_object (PhotosBaseManager *self, GObject *object)
{
- const gchar *id = photos_base_item_get_id (item);
+ gchar *id;
+
+ g_object_get (object, "id", &id, NULL);
- g_object_ref (item);
- g_hash_table_insert (self->priv->items, (gpointer) id, item);
- g_signal_emit (self, signals[ITEM_ADDED], 0, item);
+ g_object_ref (object);
+ g_hash_table_insert (self->priv->objects, (gpointer) id, object);
+ g_signal_emit (self, signals[OBJECT_ADDED], 0, object);
}
@@ -139,39 +141,39 @@ photos_base_manager_clear (PhotosBaseManager *self)
{
PhotosBaseManagerPrivate *priv = self->priv;
- g_hash_table_remove_all (priv->items);
- g_clear_object (&priv->active_item);
+ g_hash_table_remove_all (priv->objects);
+ g_clear_object (&priv->active_object);
}
-PhotosBaseItem *
-photos_base_manager_get_active_item (PhotosBaseManager *self)
+GObject *
+photos_base_manager_get_active_object (PhotosBaseManager *self)
{
- return self->priv->active_item;
+ return self->priv->active_object;
}
-PhotosBaseItem *
-photos_base_manager_get_item_by_id (PhotosBaseManager *self, const gchar *id)
+GObject *
+photos_base_manager_get_object_by_id (PhotosBaseManager *self, const gchar *id)
{
- return g_hash_table_lookup (self->priv->items, id);
+ return g_hash_table_lookup (self->priv->objects, id);
}
GHashTable *
-photos_base_manager_get_items (PhotosBaseManager *self)
+photos_base_manager_get_objects (PhotosBaseManager *self)
{
- return self->priv->items;
+ return self->priv->objects;
}
guint
-photos_base_manager_get_items_count (PhotosBaseManager *self)
+photos_base_manager_get_objects_count (PhotosBaseManager *self)
{
GList *keys;
guint count;
- keys = g_hash_table_get_keys (self->priv->items);
+ keys = g_hash_table_get_keys (self->priv->objects);
count = g_list_length (keys);
g_list_free (keys);
return count;
@@ -179,52 +181,55 @@ photos_base_manager_get_items_count (PhotosBaseManager *self)
void
-photos_base_manager_remove_item (PhotosBaseManager *self, PhotosBaseItem *item)
+photos_base_manager_remove_object (PhotosBaseManager *self, GObject *object)
{
- const gchar *id = photos_base_item_get_id (item);
- photos_base_manager_remove_item_by_id (self, id);
+ gchar *id;
+
+ g_object_get (object, "id", &id, NULL);
+ photos_base_manager_remove_object_by_id (self, id);
+ g_free (id);
}
void
-photos_base_manager_remove_item_by_id (PhotosBaseManager *self, const gchar *id)
+photos_base_manager_remove_object_by_id (PhotosBaseManager *self, const gchar *id)
{
- PhotosBaseItem *item;
+ GObject *object;
- item = photos_base_manager_get_item_by_id (self, id);
- if (item == NULL)
+ object = photos_base_manager_get_object_by_id (self, id);
+ if (object == NULL)
return;
- g_signal_emit (self, signals[ITEM_REMOVED], 0, item);
- g_hash_table_remove (self->priv->items, id);
+ g_signal_emit (self, signals[OBJECT_REMOVED], 0, object);
+ g_hash_table_remove (self->priv->objects, id);
}
gboolean
-photos_base_manager_set_active_item (PhotosBaseManager *self, PhotosBaseItem *item)
+photos_base_manager_set_active_object (PhotosBaseManager *self, GObject *object)
{
PhotosBaseManagerPrivate *priv = self->priv;
- if (item == priv->active_item)
+ if (object == priv->active_object)
return FALSE;
- if (priv->active_item != NULL)
- g_object_unref (priv->active_item);
+ if (priv->active_object != NULL)
+ g_object_unref (priv->active_object);
- if (item != NULL)
- g_object_ref (item);
+ if (object != NULL)
+ g_object_ref (object);
- priv->active_item = item;
- g_signal_emit (self, signals[ACTIVE_CHANGED], 0, item);
+ priv->active_object = object;
+ g_signal_emit (self, signals[ACTIVE_CHANGED], 0, object);
return TRUE;
}
gboolean
-photos_base_manager_set_active_item_by_id (PhotosBaseManager *self, const gchar *id)
+photos_base_manager_set_active_object_by_id (PhotosBaseManager *self, const gchar *id)
{
- PhotosBaseItem *item;
+ GObject *object;
- item = photos_base_manager_get_item_by_id (self, id);
- return photos_base_manager_set_active_item (self, item);
+ object = photos_base_manager_get_object_by_id (self, id);
+ return photos_base_manager_set_active_object (self, object);
}
diff --git a/src/photos-base-manager.h b/src/photos-base-manager.h
index d654768..126141d 100644
--- a/src/photos-base-manager.h
+++ b/src/photos-base-manager.h
@@ -23,8 +23,6 @@
#include <glib-object.h>
-#include "photos-base-item.h"
-
G_BEGIN_DECLS
#define PHOTOS_TYPE_BASE_MANAGER (photos_base_manager_get_type ())
@@ -62,32 +60,32 @@ struct _PhotosBaseManagerClass
{
GObjectClass parent_class;
- void (*active_changed) (PhotosBaseManager *self);
- void (*item_added) (PhotosBaseManager *self);
- void (*item_removed) (PhotosBaseManager *self);
+ void (*active_changed) (PhotosBaseManager *self);
+ void (*object_added) (PhotosBaseManager *self);
+ void (*object_removed) (PhotosBaseManager *self);
};
-GType photos_base_manager_get_type (void) G_GNUC_CONST;
+GType photos_base_manager_get_type (void) G_GNUC_CONST;
-void photos_base_manager_add_item (PhotosBaseManager *self, PhotosBaseItem *item);
+void photos_base_manager_add_object (PhotosBaseManager *self, GObject *object);
-void photos_base_manager_clear (PhotosBaseManager *self);
+void photos_base_manager_clear (PhotosBaseManager *self);
-PhotosBaseItem *photos_base_manager_get_active_item (PhotosBaseManager *self);
+GObject *photos_base_manager_get_active_object (PhotosBaseManager *self);
-PhotosBaseItem *photos_base_manager_get_item_by_id (PhotosBaseManager *self, const gchar *id);
+GObject *photos_base_manager_get_object_by_id (PhotosBaseManager *self, const gchar *id);
-GHashTable *photos_base_manager_get_items (PhotosBaseManager *self);
+GHashTable *photos_base_manager_get_objects (PhotosBaseManager *self);
-guint photos_base_manager_get_items_count (PhotosBaseManager *self);
+guint photos_base_manager_get_objects_count (PhotosBaseManager *self);
-void photos_base_manager_remove_item (PhotosBaseManager *self, PhotosBaseItem *item);
+void photos_base_manager_remove_object (PhotosBaseManager *self, GObject *object);
-void photos_base_manager_remove_item_by_id (PhotosBaseManager *self, const gchar *id);
+void photos_base_manager_remove_object_by_id (PhotosBaseManager *self, const gchar *id);
-gboolean photos_base_manager_set_active_item (PhotosBaseManager *self, PhotosBaseItem *item);
+gboolean photos_base_manager_set_active_object (PhotosBaseManager *self, GObject *object);
-gboolean photos_base_manager_set_active_item_by_id (PhotosBaseManager *self, const gchar *id);
+gboolean photos_base_manager_set_active_object_by_id (PhotosBaseManager *self, const gchar *id);
G_END_DECLS
diff --git a/src/photos-main-toolbar.c b/src/photos-main-toolbar.c
index 30acfb4..a0ab35a 100644
--- a/src/photos-main-toolbar.c
+++ b/src/photos-main-toolbar.c
@@ -68,11 +68,11 @@ photos_main_toolbar_set_toolbar_title (PhotosMainToolbar *self)
static void
-photos_main_toolbar_active_changed (PhotosBaseManager *manager, PhotosBaseItem *item, gpointer user_data)
+photos_main_toolbar_active_changed (PhotosBaseManager *manager, GObject *object, gpointer user_data)
{
PhotosMainToolbar *self = PHOTOS_MAIN_TOOLBAR (user_data);
- gd_main_toolbar_set_back_visible (GD_MAIN_TOOLBAR (self->priv->widget), item != NULL);
+ gd_main_toolbar_set_back_visible (GD_MAIN_TOOLBAR (self->priv->widget), object != NULL);
photos_main_toolbar_set_toolbar_title (self);
}
@@ -130,7 +130,7 @@ photos_main_toolbar_go_back_request (GdMainToolbar *toolbar, gpointer user_data)
if (mode == PHOTOS_WINDOW_MODE_PREVIEW)
photos_mode_controller_set_window_mode (priv->mode_cntrlr, PHOTOS_WINDOW_MODE_OVERVIEW);
else
- photos_base_manager_set_active_item (priv->col_mngr, NULL);
+ photos_base_manager_set_active_object (priv->col_mngr, NULL);
}
@@ -138,7 +138,7 @@ static void
photos_main_toolbar_populate_for_overview (PhotosMainToolbar *self)
{
PhotosMainToolbarPrivate *priv = self->priv;
- PhotosBaseItem *item;
+ GObject *object;
gd_main_toolbar_set_mode (GD_MAIN_TOOLBAR (priv->widget), GD_MAIN_TOOLBAR_MODE_OVERVIEW);
priv->collection_id = g_signal_connect (priv->col_mngr,
@@ -146,8 +146,8 @@ photos_main_toolbar_populate_for_overview (PhotosMainToolbar *self)
G_CALLBACK (photos_main_toolbar_active_changed),
self);
- item = photos_base_manager_get_active_item (priv->col_mngr);
- photos_main_toolbar_active_changed (priv->col_mngr, item, self);
+ object = photos_base_manager_get_active_object (priv->col_mngr);
+ photos_main_toolbar_active_changed (priv->col_mngr, object, self);
gtk_widget_show_all (priv->widget);
}
diff --git a/src/photos-organize-collection-model.c b/src/photos-organize-collection-model.c
index 83094c9..b146080 100644
--- a/src/photos-organize-collection-model.c
+++ b/src/photos-organize-collection-model.c
@@ -38,13 +38,13 @@ G_DEFINE_TYPE (PhotosOrganizeCollectionModel, photos_organize_collection_model,
static void
-photos_organize_collection_model_item_added (PhotosBaseManager *manager, GObject *item, gpointer user_data)
+photos_organize_collection_model_object_added (PhotosBaseManager *manager, GObject *object, gpointer user_data)
{
}
static void
-photos_organize_collection_model_item_removed (PhotosBaseManager *manager, GObject *item, gpointer user_data)
+photos_organize_collection_model_object_removed (PhotosBaseManager *manager, GObject *object, gpointer user_data)
{
}
@@ -93,12 +93,12 @@ photos_organize_collection_model_init (PhotosOrganizeCollectionModel *self)
priv->manager = photos_collection_manager_new ();
priv->coll_added_id = g_signal_connect (priv->manager,
- "item-added",
- G_CALLBACK (photos_organize_collection_model_item_added),
+ "object-added",
+ G_CALLBACK (photos_organize_collection_model_object_added),
self);
priv->coll_removed_id = g_signal_connect (priv->manager,
- "item-removed",
- G_CALLBACK (photos_organize_collection_model_item_removed),
+ "object-removed",
+ G_CALLBACK (photos_organize_collection_model_object_removed),
self);
/* TODO: populate the model */
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]