[gnome-photos] base-manager: Add a set_active_object virtual method
- From: Debarshi Ray <debarshir src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-photos] base-manager: Add a set_active_object virtual method
- Date: Thu, 3 May 2012 13:24:46 +0000 (UTC)
commit 3dc50d73f49acfb56345e2a1f8c315d5d19ae9a0
Author: Debarshi Ray <debarshir gnome org>
Date: Thu May 3 15:15:52 2012 +0200
base-manager: Add a set_active_object virtual method
PhotosItemManager overrides this virtual method instead of having its
own photos_item_manager_set_active_item.
src/photos-base-manager.c | 36 +++++++++++++++++++++-------------
src/photos-base-manager.h | 4 +++
src/photos-item-manager.c | 47 +++++++++++++++++++++++++++-----------------
src/photos-item-manager.h | 3 --
4 files changed, 55 insertions(+), 35 deletions(-)
---
diff --git a/src/photos-base-manager.c b/src/photos-base-manager.c
index 0a118a8..cc52b7a 100644
--- a/src/photos-base-manager.c
+++ b/src/photos-base-manager.c
@@ -46,6 +46,26 @@ static guint signals[LAST_SIGNAL] = { 0 };
G_DEFINE_TYPE (PhotosBaseManager, photos_base_manager, G_TYPE_OBJECT);
+static gboolean
+photos_base_manager_default_set_active_object (PhotosBaseManager *self, GObject *object)
+{
+ PhotosBaseManagerPrivate *priv = self->priv;
+
+ if (object == priv->active_object)
+ return FALSE;
+
+ if (priv->active_object != NULL)
+ g_object_unref (priv->active_object);
+
+ if (object != NULL)
+ g_object_ref (object);
+
+ priv->active_object = object;
+ g_signal_emit (self, signals[ACTIVE_CHANGED], 0, object);
+ return TRUE;
+}
+
+
static void
photos_base_manager_dispose (GObject *object)
{
@@ -82,6 +102,7 @@ photos_base_manager_class_init (PhotosBaseManagerClass *class)
GObjectClass *object_class = G_OBJECT_CLASS (class);
object_class->dispose = photos_base_manager_dispose;
+ class->set_active_object = photos_base_manager_default_set_active_object;
signals[ACTIVE_CHANGED] = g_signal_new ("active-changed",
G_TYPE_FROM_CLASS (class),
@@ -208,20 +229,7 @@ photos_base_manager_remove_object_by_id (PhotosBaseManager *self, const gchar *i
gboolean
photos_base_manager_set_active_object (PhotosBaseManager *self, GObject *object)
{
- PhotosBaseManagerPrivate *priv = self->priv;
-
- if (object == priv->active_object)
- return FALSE;
-
- if (priv->active_object != NULL)
- g_object_unref (priv->active_object);
-
- if (object != NULL)
- g_object_ref (object);
-
- priv->active_object = object;
- g_signal_emit (self, signals[ACTIVE_CHANGED], 0, object);
- return TRUE;
+ return PHOTOS_BASE_MANAGER_GET_CLASS (self)->set_active_object (self, object);
}
diff --git a/src/photos-base-manager.h b/src/photos-base-manager.h
index 61619a4..4348f13 100644
--- a/src/photos-base-manager.h
+++ b/src/photos-base-manager.h
@@ -61,6 +61,10 @@ struct _PhotosBaseManagerClass
{
GObjectClass parent_class;
+ /* virtual methods */
+ gboolean (*set_active_object) (PhotosBaseManager *self, GObject *object);
+
+ /* signals */
void (*active_changed) (PhotosBaseManager *self);
void (*object_added) (PhotosBaseManager *self);
void (*object_removed) (PhotosBaseManager *self);
diff --git a/src/photos-item-manager.c b/src/photos-item-manager.c
index 9b68b36..2a1398d 100644
--- a/src/photos-item-manager.c
+++ b/src/photos-item-manager.c
@@ -36,6 +36,33 @@ struct _PhotosItemManagerPrivate
G_DEFINE_TYPE (PhotosItemManager, photos_item_manager, PHOTOS_TYPE_BASE_MANAGER);
+static gboolean
+photos_item_manager_set_active_object (PhotosBaseManager *manager, GObject *object)
+{
+ gboolean ret_val;
+
+ g_return_val_if_fail (PHOTOS_IS_BASE_ITEM (object), FALSE);
+
+ ret_val = PHOTOS_BASE_MANAGER_CLASS (photos_item_manager_parent_class)->set_active_object (manager, object);
+
+ if (!ret_val)
+ goto out;
+
+ if (object != NULL)
+ {
+ GtkRecentManager *recent;
+ const gchar *uri;
+
+ recent = gtk_recent_manager_get_default ();
+ uri = photos_base_item_get_uri (PHOTOS_BASE_ITEM (object));
+ gtk_recent_manager_add_item (recent, uri);
+ }
+
+ out:
+ return ret_val;
+}
+
+
static GObject *
photos_item_manager_constructor (GType type,
guint n_construct_params,
@@ -79,9 +106,11 @@ static void
photos_item_manager_class_init (PhotosItemManagerClass *class)
{
GObjectClass *object_class = G_OBJECT_CLASS (class);
+ PhotosBaseManagerClass *base_manager_class = PHOTOS_BASE_MANAGER_CLASS (class);
object_class->constructor = photos_item_manager_constructor;
object_class->dispose = photos_item_manager_dispose;
+ base_manager_class->set_active_object = photos_item_manager_set_active_object;
g_type_class_add_private (class, sizeof (PhotosItemManagerPrivate));
}
@@ -128,21 +157,3 @@ photos_item_manager_get_model (PhotosItemManager *self)
{
return self->priv->model;
}
-
-
-void
-photos_item_manager_set_active_item (PhotosItemManager *self, PhotosBaseItem *item)
-{
- if (!photos_base_manager_set_active_object (PHOTOS_BASE_MANAGER (self), G_OBJECT (item)))
- return;
-
- if (item != NULL)
- {
- GtkRecentManager *recent;
- const gchar *uri;
-
- recent = gtk_recent_manager_get_default ();
- uri = photos_base_item_get_uri (item);
- gtk_recent_manager_add_item (recent, uri);
- }
-}
diff --git a/src/photos-item-manager.h b/src/photos-item-manager.h
index 065e031..b5e4e30 100644
--- a/src/photos-item-manager.h
+++ b/src/photos-item-manager.h
@@ -78,9 +78,6 @@ PhotosBaseItem *photos_item_manager_create_item (PhotosItemMana
GtkListStore *photos_item_manager_get_model (PhotosItemManager *self);
-void photos_item_manager_set_active_item (PhotosItemManager *self,
- PhotosBaseItem *item);
-
G_END_DECLS
#endif /* PHOTOS_ITEM_MANAGER_H */
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]