[gnome-photos] view-embed: Implement preprare_for_overview and prepare_for_preview
- From: Debarshi Ray <debarshir src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-photos] view-embed: Implement preprare_for_overview and prepare_for_preview
- Date: Mon, 30 Apr 2012 02:02:00 +0000 (UTC)
commit c0eb40bd39eb25f432811613fce5957fa0194147
Author: Debarshi Ray <debarshir gnome org>
Date: Mon Apr 30 04:01:13 2012 +0200
view-embed: Implement preprare_for_overview and prepare_for_preview
src/photos-view-embed.c | 137 +++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 137 insertions(+), 0 deletions(-)
---
diff --git a/src/photos-view-embed.c b/src/photos-view-embed.c
index b87c6f2..c528a0b 100644
--- a/src/photos-view-embed.c
+++ b/src/photos-view-embed.c
@@ -27,6 +27,7 @@
#include "photos-main-toolbar.h"
#include "photos-mode-controller.h"
#include "photos-selection-toolbar.h"
+#include "photos-view.h"
#include "photos-view-embed.h"
@@ -40,9 +41,14 @@ struct _PhotosViewEmbedPrivate
ClutterLayoutManager *contents_layout;
ClutterLayoutManager *view_layout;
GtkWidget *notebook;
+ GtkWidget *scrolled_win_preview;
+ GtkWidget *view;
PhotosMainToolbar *toolbar;
PhotosSelectionToolbar *selection_toolbar;
PhotosModeController *mode_cntrlr;
+ gulong adjustment_changed_id;
+ gulong adjustment_value_id;
+ gulong scrollbar_visible_id;
};
@@ -50,20 +56,151 @@ G_DEFINE_TYPE (PhotosViewEmbed, photos_view_embed, CLUTTER_TYPE_BOX);
static void
+photos_view_embed_destroy_preview (PhotosViewEmbed *self)
+{
+}
+
+
+static void
+photos_view_embed_destroy_preview_child (PhotosViewEmbed *self)
+{
+}
+
+
+static void
photos_view_embed_fullscreen_changed (PhotosModeController *mode_cntrlr, gboolean fullscreen, gpointer user_data)
{
}
static void
+photos_view_embed_view_change (PhotosViewEmbed *self)
+{
+}
+
+
+static void
+photos_view_embed_view_vadjustment_changed (GtkAdjustment *adjustment, gpointer user_data)
+{
+ PhotosViewEmbed *self = PHOTOS_VIEW_EMBED (user_data);
+ photos_view_embed_view_change (self);
+}
+
+
+static void
+photos_view_embed_view_vadjustment_value_changed (GtkAdjustment *adjustment, gpointer user_data)
+{
+ PhotosViewEmbed *self = PHOTOS_VIEW_EMBED (user_data);
+ photos_view_embed_view_change (self);
+}
+
+
+static void
+photos_view_embed_view_vscrolbar_notify_visible (GObject *object, GParamSpec *pspec, gpointer user_data)
+{
+ PhotosViewEmbed *self = PHOTOS_VIEW_EMBED (user_data);
+ photos_view_embed_view_change (self);
+}
+
+
+static void
photos_view_embed_prepare_for_overview (PhotosViewEmbed *self)
{
+ PhotosViewEmbedPrivate *priv = self->priv;
+ GtkAdjustment *vadjustment;
+ GtkWidget *vscrollbar;
+ gint view_page;
+
+ photos_view_embed_destroy_preview (self);
+
+ /* TODO: DocumentManager */
+
+ if (priv->view == NULL)
+ {
+ GtkWidget *grid;
+
+ grid = gtk_grid_new ();
+ gtk_orientable_set_orientation (GTK_ORIENTABLE (grid), GTK_ORIENTATION_VERTICAL);
+ priv->view = photos_view_new ();
+ gtk_container_add (GTK_CONTAINER (grid), priv->view);
+
+ /* TODO: LoadMoreButton */
+
+ gtk_widget_show_all (grid);
+ view_page = gtk_notebook_append_page (GTK_NOTEBOOK (priv->notebook), grid, NULL);
+ }
+
+ vadjustment = gtk_scrolled_window_get_vadjustment (GTK_SCROLLED_WINDOW (priv->view));
+ priv->adjustment_changed_id = g_signal_connect (vadjustment,
+ "changed",
+ G_CALLBACK (photos_view_embed_view_vadjustment_changed),
+ self);
+ priv->adjustment_value_id = g_signal_connect (vadjustment,
+ "value-changed",
+ G_CALLBACK (photos_view_embed_view_vadjustment_value_changed),
+ self);
+
+ vscrollbar = gtk_scrolled_window_get_vscrollbar (GTK_SCROLLED_WINDOW (priv->view));
+ priv->scrollbar_visible_id = g_signal_connect (vscrollbar,
+ "notify::visible",
+ G_CALLBACK (photos_view_embed_view_vscrolbar_notify_visible),
+ self);
+
+ photos_view_embed_view_change (self);
+ gtk_notebook_set_current_page (GTK_NOTEBOOK (priv->notebook), view_page);
}
static void
photos_view_embed_prepare_for_preview (PhotosViewEmbed *self)
{
+ PhotosViewEmbedPrivate *priv = self->priv;
+ GtkAdjustment *vadjustment;
+ GtkWidget *vscrollbar;
+ gint preview_page;
+
+ /* TODO: SearchController,
+ * ErrorHandler
+ */
+
+ vadjustment = gtk_scrolled_window_get_vadjustment (GTK_SCROLLED_WINDOW (priv->view));
+ vscrollbar = gtk_scrolled_window_get_vscrollbar (GTK_SCROLLED_WINDOW (priv->view));
+
+ if (priv->adjustment_changed_id != 0)
+ {
+ g_signal_handler_disconnect (vadjustment, priv->adjustment_changed_id);
+ priv->adjustment_changed_id = 0;
+ }
+
+ if (priv->adjustment_value_id != 0)
+ {
+ g_signal_handler_disconnect (vadjustment, priv->adjustment_value_id);
+ priv->adjustment_value_id = 0;
+ }
+
+ if (priv->scrollbar_visible_id != 0)
+ {
+ g_signal_handler_disconnect (vscrollbar, priv->scrollbar_visible_id);
+ priv->scrollbar_visible_id = 0;
+ }
+
+ if (priv->scrolled_win_preview == NULL)
+ {
+ GtkStyleContext *context;
+
+ priv->scrolled_win_preview = gtk_scrolled_window_new (NULL, NULL);
+ gtk_widget_set_hexpand (priv->scrolled_win_preview, TRUE);
+ gtk_widget_set_vexpand (priv->scrolled_win_preview, TRUE);
+ gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (priv->scrolled_win_preview), GTK_SHADOW_IN);
+ context = gtk_widget_get_style_context (priv->scrolled_win_preview);
+ gtk_style_context_add_class (context, "documents-scrolledwin");
+ gtk_widget_show (priv->scrolled_win_preview);
+ preview_page = gtk_notebook_append_page (GTK_NOTEBOOK (priv->notebook), priv->scrolled_win_preview, NULL);
+ }
+ else
+ photos_view_embed_destroy_preview_child (self);
+
+ gtk_notebook_set_current_page (GTK_NOTEBOOK (priv->notebook), preview_page);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]