[gnome-photos] embed: Add a "No Photos Found" page
- From: Debarshi Ray <debarshir src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-photos] embed: Add a "No Photos Found" page
- Date: Sat, 17 Nov 2012 13:27:46 +0000 (UTC)
commit 471d1c74ea73c043aae4daa08095a4880f096e53
Author: Debarshi Ray <debarshir gnome org>
Date: Sat Nov 17 13:02:59 2012 +0100
embed: Add a "No Photos Found" page
This is shown when no photos at all are found in the database.
Original patch from Cosimo Cecchi for gnome-documents.
src/photos-embed.c | 64 ++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 64 insertions(+), 0 deletions(-)
---
diff --git a/src/photos-embed.c b/src/photos-embed.c
index f33d14b..f45d7dd 100644
--- a/src/photos-embed.c
+++ b/src/photos-embed.c
@@ -30,12 +30,15 @@
#include <gtk/gtk.h>
#include "photos-embed.h"
+#include "photos-empty-results-box.h"
#include "photos-error-box.h"
#include "photos-item-manager.h"
#include "photos-main-toolbar.h"
#include "photos-mode-controller.h"
+#include "photos-offset-controller.h"
#include "photos-selection-toolbar.h"
#include "photos-spinner-box.h"
+#include "photos-tracker-change-monitor.h"
#include "photos-tracker-controller.h"
#include "photos-view-container.h"
@@ -46,6 +49,7 @@ struct _PhotosEmbedPrivate
ClutterActor *contents_actor;
ClutterActor *error_box;
ClutterActor *image_actor;
+ ClutterActor *no_results;
ClutterActor *overview_actor;
ClutterActor *spinner_box;
ClutterActor *view_actor;
@@ -57,9 +61,12 @@ struct _PhotosEmbedPrivate
PhotosMainToolbar *toolbar;
PhotosSelectionToolbar *selection_toolbar;
PhotosModeController *mode_cntrlr;
+ PhotosOffsetController *offset_cntrlr;
+ PhotosTrackerChangeMonitor *monitor;
PhotosTrackerController *trk_cntrlr;
gint preview_page;
gint view_page;
+ gulong no_results_change_id;
};
@@ -134,6 +141,47 @@ photos_embed_active_changed (PhotosBaseManager *manager, GObject *object, gpoint
static void
+photos_embed_hide_no_results_page (PhotosEmbed *self)
+{
+ PhotosEmbedPrivate *priv = self->priv;
+
+ if (priv->no_results_change_id != 0)
+ {
+ g_signal_handler_disconnect (priv->monitor, priv->no_results_change_id);
+ priv->no_results_change_id = 0;
+ }
+
+ g_message ("hide no results");
+ clutter_actor_set_child_below_sibling (priv->view_actor, priv->no_results, NULL);
+}
+
+
+static void
+photos_embed_changes_pending (PhotosEmbed *self, GHashTable *changes)
+{
+ photos_embed_hide_no_results_page (self);
+}
+
+
+static void
+photos_embed_count_changed (PhotosEmbed *self, gint count)
+{
+ PhotosEmbedPrivate *priv = self->priv;
+
+ if (count == 0)
+ {
+ priv->no_results_change_id = g_signal_connect_swapped (priv->monitor,
+ "changes-pending",
+ G_CALLBACK (photos_embed_changes_pending),
+ self);
+ clutter_actor_set_child_above_sibling (priv->view_actor, priv->no_results, NULL);
+ }
+ else
+ photos_embed_hide_no_results_page (self);
+}
+
+
+static void
photos_embed_fullscreen_changed (PhotosModeController *mode_cntrlr, gboolean fullscreen, gpointer user_data)
{
}
@@ -254,6 +302,12 @@ photos_embed_dispose (GObject *object)
PhotosEmbed *self = PHOTOS_EMBED (object);
PhotosEmbedPrivate *priv = self->priv;
+ if (priv->no_results_change_id != 0)
+ {
+ g_signal_handler_disconnect (priv->monitor, priv->no_results_change_id);
+ priv->no_results_change_id = 0;
+ }
+
g_clear_object (&priv->loader_cancellable);
g_clear_object (&priv->item_mngr);
@@ -263,6 +317,8 @@ photos_embed_dispose (GObject *object)
priv->mode_cntrlr = NULL;
}
+ g_clear_object (&priv->offset_cntrlr);
+ g_clear_object (&priv->monitor);
g_clear_object (&priv->trk_cntrlr);
G_OBJECT_CLASS (photos_embed_parent_class)->dispose (object);
@@ -335,6 +391,9 @@ photos_embed_init (PhotosEmbed *self)
priv->error_box = photos_error_box_new ();
clutter_actor_insert_child_below (priv->view_actor, priv->error_box, NULL);
+ priv->no_results = photos_empty_results_box_new ();
+ clutter_actor_insert_child_below (priv->view_actor, priv->no_results, NULL);
+
priv->background = clutter_actor_new ();
clutter_actor_set_background_color (priv->background, CLUTTER_COLOR_White);
clutter_actor_set_x_expand (priv->background, TRUE);
@@ -366,12 +425,17 @@ photos_embed_init (PhotosEmbed *self)
G_CALLBACK (photos_embed_query_status_changed),
self);
+ priv->offset_cntrlr = photos_offset_controller_new ();
+ g_signal_connect_swapped (priv->offset_cntrlr, "count-changed", G_CALLBACK (photos_embed_count_changed), self);
+
priv->item_mngr = photos_item_manager_new ();
g_signal_connect (priv->item_mngr, "active-changed", G_CALLBACK (photos_embed_active_changed), self);
querying = photos_tracker_controller_get_query_status (priv->trk_cntrlr);
photos_embed_query_status_changed (priv->trk_cntrlr, querying, self);
+ priv->monitor = photos_tracker_change_monitor_new ();
+
gtk_widget_show (GTK_WIDGET (self));
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]