[gnome-photos/wip/search: 21/35] base-manager: Add a get_where virtual method
- From: Debarshi Ray <debarshir src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-photos/wip/search: 21/35] base-manager: Add a get_where virtual method
- Date: Tue, 28 Jan 2014 17:50:24 +0000 (UTC)
commit e452134f4782e5cc8796194010a482116520f596
Author: Debarshi Ray <debarshir gnome org>
Date: Fri Jan 24 11:51:25 2014 +0100
base-manager: Add a get_where virtual method
... and make PhotosCollectionManager and PhotosSearchTypeManager
override it instead of having their own.
src/photos-base-manager.c | 15 +++++++++++++++
src/photos-base-manager.h | 3 +++
src/photos-collection-manager.c | 31 +++++++++++++++++--------------
src/photos-collection-manager.h | 2 --
src/photos-query-builder.c | 4 ++--
src/photos-search-type-manager.c | 22 ++++++++++++----------
src/photos-search-type-manager.h | 2 --
7 files changed, 49 insertions(+), 30 deletions(-)
---
diff --git a/src/photos-base-manager.c b/src/photos-base-manager.c
index 65fba9a..47d8604 100644
--- a/src/photos-base-manager.c
+++ b/src/photos-base-manager.c
@@ -59,6 +59,13 @@ static guint signals[LAST_SIGNAL] = { 0 };
G_DEFINE_TYPE_WITH_PRIVATE (PhotosBaseManager, photos_base_manager, G_TYPE_OBJECT);
+static gchar *
+photos_base_manager_default_get_where (PhotosBaseManager *self)
+{
+ return g_strdup ("");
+}
+
+
static gboolean
photos_base_manager_default_set_active_object (PhotosBaseManager *self, GObject *object)
{
@@ -198,6 +205,7 @@ photos_base_manager_class_init (PhotosBaseManagerClass *class)
object_class->dispose = photos_base_manager_dispose;
object_class->finalize = photos_base_manager_finalize;
object_class->set_property = photos_base_manager_set_property;
+ class->get_where = photos_base_manager_default_get_where;
class->set_active_object = photos_base_manager_default_set_active_object;
g_object_class_install_property (object_class,
@@ -352,6 +360,13 @@ photos_base_manager_get_title (PhotosBaseManager *self)
}
+gchar *
+photos_base_manager_get_where (PhotosBaseManager *self)
+{
+ return PHOTOS_BASE_MANAGER_GET_CLASS (self)->get_where (self);
+}
+
+
void
photos_base_manager_process_new_objects (PhotosBaseManager *self, GHashTable *new_objects)
{
diff --git a/src/photos-base-manager.h b/src/photos-base-manager.h
index 1987cec..f371d49 100644
--- a/src/photos-base-manager.h
+++ b/src/photos-base-manager.h
@@ -66,6 +66,7 @@ struct _PhotosBaseManagerClass
GObjectClass parent_class;
/* virtual methods */
+ gchar *(*get_where) (PhotosBaseManager *self);
gboolean (*set_active_object) (PhotosBaseManager *self, GObject *object);
/* signals */
@@ -93,6 +94,8 @@ guint photos_base_manager_get_objects_count (PhotosBaseMana
const gchar *photos_base_manager_get_title (PhotosBaseManager *self);
+gchar *photos_base_manager_get_where (PhotosBaseManager *self);
+
void photos_base_manager_process_new_objects (PhotosBaseManager *self, GHashTable
*new_objects);
void photos_base_manager_remove_object (PhotosBaseManager *self, GObject *object);
diff --git a/src/photos-collection-manager.c b/src/photos-collection-manager.c
index 62e3289..7017edd 100644
--- a/src/photos-collection-manager.c
+++ b/src/photos-collection-manager.c
@@ -1,6 +1,6 @@
/*
* Photos - access, organize and share your photos on GNOME
- * Copyright © 2012, 2013 Red Hat, Inc.
+ * Copyright © 2012, 2013, 2014 Red Hat, Inc.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
@@ -34,6 +34,19 @@
G_DEFINE_TYPE (PhotosCollectionManager, photos_collection_manager, PHOTOS_TYPE_BASE_MANAGER);
+static gchar *
+photos_collection_manager_get_where (PhotosBaseManager *mngr)
+{
+ GObject *collection;
+
+ collection = photos_base_manager_get_active_object (mngr);
+ if (collection == NULL)
+ return g_strdup ("");
+
+ return photos_base_item_get_where (PHOTOS_BASE_ITEM (collection));
+}
+
+
static GObject *
photos_collection_manager_constructor (GType type,
guint n_construct_params,
@@ -64,7 +77,10 @@ static void
photos_collection_manager_class_init (PhotosCollectionManagerClass *class)
{
GObjectClass *object_class = G_OBJECT_CLASS (class);
+ PhotosBaseManagerClass *base_manager_class = PHOTOS_BASE_MANAGER_CLASS (class);
+
object_class->constructor = photos_collection_manager_constructor;
+ base_manager_class->get_where = photos_collection_manager_get_where;
}
@@ -73,16 +89,3 @@ photos_collection_manager_dup_singleton (void)
{
return g_object_new (PHOTOS_TYPE_COLLECTION_MANAGER, NULL);
}
-
-
-gchar *
-photos_collection_manager_get_where (PhotosCollectionManager *self)
-{
- GObject *collection;
-
- collection = photos_base_manager_get_active_object (PHOTOS_BASE_MANAGER (self));
- if (collection == NULL)
- return g_strdup ("");
-
- return photos_base_item_get_where (PHOTOS_BASE_ITEM (collection));
-}
diff --git a/src/photos-collection-manager.h b/src/photos-collection-manager.h
index e49c86e..e8e5045 100644
--- a/src/photos-collection-manager.h
+++ b/src/photos-collection-manager.h
@@ -70,8 +70,6 @@ GType photos_collection_manager_get_type (void) G_
PhotosBaseManager *photos_collection_manager_dup_singleton (void);
-gchar *photos_collection_manager_get_where (PhotosCollectionManager *self);
-
G_END_DECLS
#endif /* PHOTOS_COLLECTION_MANAGER_H */
diff --git a/src/photos-query-builder.c b/src/photos-query-builder.c
index de07ef9..3cd12cb 100644
--- a/src/photos-query-builder.c
+++ b/src/photos-query-builder.c
@@ -123,7 +123,7 @@ photos_query_builder_where (gboolean global, gint flags)
srch_typ_mngr = photos_search_type_manager_dup_singleton ();
photos_query_builder_set_search_type (flags);
- srch_typ_mngr_where = photos_search_type_manager_get_where (PHOTOS_SEARCH_TYPE_MANAGER (srch_typ_mngr));
+ srch_typ_mngr_where = photos_base_manager_get_where (srch_typ_mngr);
optional = photos_query_builder_optional ();
@@ -133,7 +133,7 @@ photos_query_builder_where (gboolean global, gint flags)
{
/* TODO: SearchCategoryManager */
- col_mngr_where = photos_collection_manager_get_where (PHOTOS_COLLECTION_MANAGER (col_mngr));
+ col_mngr_where = photos_base_manager_get_where (col_mngr);
}
filter = photos_query_builder_filter (flags);
diff --git a/src/photos-search-type-manager.c b/src/photos-search-type-manager.c
index 9e8127f..71b2d4d 100644
--- a/src/photos-search-type-manager.c
+++ b/src/photos-search-type-manager.c
@@ -37,6 +37,16 @@
G_DEFINE_TYPE (PhotosSearchTypeManager, photos_search_type_manager, PHOTOS_TYPE_BASE_MANAGER);
+static gchar *
+photos_search_type_manager_get_where (PhotosBaseManager *mngr)
+{
+ GObject *search_type;
+
+ search_type = photos_base_manager_get_active_object (mngr);
+ return photos_filterable_get_where (PHOTOS_FILTERABLE (search_type));
+}
+
+
static GObject *
photos_search_type_manager_constructor (GType type,
guint n_construct_params,
@@ -110,8 +120,10 @@ static void
photos_search_type_manager_class_init (PhotosSearchTypeManagerClass *class)
{
GObjectClass *object_class = G_OBJECT_CLASS (class);
+ PhotosBaseManagerClass *base_manager_class = PHOTOS_BASE_MANAGER_CLASS (class);
object_class->constructor = photos_search_type_manager_constructor;
+ base_manager_class->get_where = photos_search_type_manager_get_where;
}
@@ -123,13 +135,3 @@ photos_search_type_manager_dup_singleton (void)
*/
return g_object_new (PHOTOS_TYPE_SEARCH_TYPE_MANAGER, "title", C_("Search Filter", "Type"), NULL);
}
-
-
-gchar *
-photos_search_type_manager_get_where (PhotosSearchTypeManager *self)
-{
- GObject *search_type;
-
- search_type = photos_base_manager_get_active_object (PHOTOS_BASE_MANAGER (self));
- return photos_filterable_get_where (PHOTOS_FILTERABLE (search_type));
-}
diff --git a/src/photos-search-type-manager.h b/src/photos-search-type-manager.h
index 6fafe65..0b0dc41 100644
--- a/src/photos-search-type-manager.h
+++ b/src/photos-search-type-manager.h
@@ -70,8 +70,6 @@ GType photos_search_type_manager_get_type (void) G
PhotosBaseManager *photos_search_type_manager_dup_singleton (void);
-gchar *photos_search_type_manager_get_where (PhotosSearchTypeManager *self);
-
G_END_DECLS
#endif /* PHOTOS_SEARCH_TYPE_MANAGER_H */
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]