[bijiben] Do not display all items at startup. Offer to display more.
- From: Pierre-Yves Luyten <pyluyten src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [bijiben] Do not display all items at startup. Offer to display more.
- Date: Sun, 19 May 2013 00:11:17 +0000 (UTC)
commit f2e91d2081853c0b0ec0df817c280849c4aaa3f3
Author: Pierre-Yves Luyten <py luyten fr>
Date: Sat May 18 21:49:14 2013 +0200
Do not display all items at startup. Offer to display more.
Controller displays 48 items at startup. Main view displays
a button to load more while there are more.
48 allows to have full rows for 3 or 4 items wide windows.
po/POTFILES.in | 1 +
src/Makefile.am | 2 +
src/bjb-controller.c | 135 ++++++++++++++++------
src/bjb-controller.h | 3 +
src/bjb-load-more-button.c | 236 ++++++++++++++++++++++++++++++++++++++
src/bjb-load-more-button.h | 78 +++++++++++++
src/bjb-main-toolbar.c | 41 +++++---
src/bjb-main-view.c | 11 ++-
src/libbiji/biji-marshalers.list | 1 +
9 files changed, 458 insertions(+), 50 deletions(-)
---
diff --git a/po/POTFILES.in b/po/POTFILES.in
index 826f7bc..0cee28a 100755
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -5,6 +5,7 @@ src/bjb-color-button.c
src/bjb-editor-toolbar.c
src/bjb-empty-results-box.c
src/bjb-import-dialog.c
+src/bjb-load-more-button.c
src/bjb-main-toolbar.c
src/bjb-note-tag-dialog.c
src/bjb-note-view.c
diff --git a/src/Makefile.am b/src/Makefile.am
index 17767f8..c88a31a 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -60,6 +60,8 @@ bijiben_SOURCES = \
bjb-empty-results-box.h \
bjb-import-dialog.h \
bjb-import-dialog.c \
+ bjb-load-more-button.c \
+ bjb-load-more-button.h \
bjb-main.c \
bjb-main-toolbar.c \
bjb-main-toolbar.h \
diff --git a/src/bjb-controller.c b/src/bjb-controller.c
index 34b9da3..b2c7678 100644
--- a/src/bjb-controller.c
+++ b/src/bjb-controller.c
@@ -28,6 +28,15 @@
#include "bjb-main-view.h"
#include "bjb-window-base.h"
+
+/*
+ * The start-up number of items to show,
+ * and its incrementation
+ */
+
+#define BJB_ITEMS_SLICE 48
+
+
/* Gobject */
struct _BjbControllerPrivate
@@ -42,10 +51,14 @@ struct _BjbControllerPrivate
/* Private */
GList *items_to_show;
+ gint n_items_to_show;
+ gboolean remaining_items;
+
gboolean connected;
gulong book_change;
};
+
enum {
PROP_0,
PROP_BOOK,
@@ -79,10 +92,8 @@ bjb_controller_init (BjbController *self)
GtkListStore *store ;
GtkListStore *completion ;
- self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self,
- BJB_TYPE_CONTROLLER,
- BjbControllerPrivate);
- priv = self->priv ;
+ priv = self->priv = G_TYPE_INSTANCE_GET_PRIVATE
+ (self, BJB_TYPE_CONTROLLER, BjbControllerPrivate);
/* Create the columns */
store = gtk_list_store_new (GD_MAIN_COLUMN_LAST,
@@ -96,6 +107,7 @@ bjb_controller_init (BjbController *self)
priv->model = GTK_TREE_MODEL(store) ;
priv->items_to_show = NULL;
+ priv->n_items_to_show = BJB_ITEMS_SLICE;
priv->needle = NULL;
priv->collection = NULL;
priv->connected = FALSE;
@@ -379,21 +391,36 @@ most_recent_item_first (gconstpointer a, gconstpointer b)
return result;
}
+
+
+static void
+sort_items (GList **to_show)
+{
+ *to_show = g_list_sort (*to_show, most_recent_item_first);
+}
+
+
static void
-sort_items (BjbController *self)
+notify_displayed_items_changed (BjbController *self)
{
- self->priv->items_to_show = g_list_sort (self->priv->items_to_show,
- most_recent_item_first);
+ /*gboolean shown;
+
+ shown = (self->priv->items_to_show != NULL);*/
+ g_signal_emit (G_OBJECT (self),
+ bjb_controller_signals[DISPLAY_NOTES_CHANGED],
+ 0,
+ //shown,
+ (self->priv->items_to_show != NULL),
+ self->priv->remaining_items);
}
static void
-sort_and_update (BjbController *self)
+update (BjbController *self)
{
- sort_items (self);
bjb_window_base_switch_to (self->priv->window, BJB_WINDOW_BASE_MAIN_VIEW);
bjb_controller_update_view (self);
- g_signal_emit (G_OBJECT (self), bjb_controller_signals[DISPLAY_NOTES_CHANGED],0);
+ notify_displayed_items_changed (self);
}
@@ -402,15 +429,43 @@ update_controller_callback (GList *result,
gpointer user_data)
{
BjbController *self;
+ BjbControllerPrivate *priv;
+ GList *l;
+ gint i;
self = BJB_CONTROLLER (user_data);
- self->priv->items_to_show = result;
+ priv = self->priv;
+ priv->remaining_items = FALSE;
if (!result)
- bjb_window_base_switch_to (self->priv->window, BJB_WINDOW_BASE_NO_RESULT);
+ {
+ bjb_window_base_switch_to (priv->window, BJB_WINDOW_BASE_NO_RESULT);
+ return;
+ }
- else
- sort_and_update (self);
+ sort_items (&result);
+ i = 0;
+
+ /* We are supposed to show n items. While not reach,
+ * add to the list. As soon as reached, keep in mind that */
+
+ for (l=result ; l!= NULL ; l=l->next)
+ {
+ if (i< priv->n_items_to_show)
+ {
+ priv->items_to_show = g_list_prepend (priv->items_to_show, l->data);
+ i ++;
+ }
+
+ else if (l->next != NULL)
+ {
+ priv->remaining_items = TRUE;
+ break;
+ }
+ }
+
+ priv->items_to_show = g_list_reverse (priv->items_to_show);
+ update (self);
}
void
@@ -418,26 +473,25 @@ bjb_controller_apply_needle (BjbController *self)
{
BjbControllerPrivate *priv = self->priv;
gchar *needle;
+ GList *all_notes;
- if (priv->items_to_show)
- g_clear_pointer (&priv->items_to_show, g_list_free);
-
needle = priv->needle;
+ g_clear_pointer (&priv->items_to_show, g_list_free);
/* Show all notes */
if (needle == NULL || g_strcmp0 (needle,"") == 0)
{
- priv->items_to_show = biji_note_book_get_items (self->priv->book);
+ all_notes = biji_note_book_get_items (self->priv->book);
/* If there are no note, report this */
- if (!priv->items_to_show)
+ if (all_notes == NULL)
{
bjb_window_base_switch_to (self->priv->window, BJB_WINDOW_BASE_NO_NOTE);
return;
}
/* Otherwise do show existing notes */
- sort_and_update (self);
+ update_controller_callback (all_notes, self);
return;
}
@@ -510,8 +564,9 @@ on_book_changed (BijiNoteBook *book,
p_iter = NULL;
bjb_controller_add_item_if_needed (self, item, TRUE, p_iter);
+ priv->n_items_to_show ++;
priv->items_to_show = g_list_prepend (priv->items_to_show, note);
- g_signal_emit (G_OBJECT (self), bjb_controller_signals[DISPLAY_NOTES_CHANGED],0);
+ notify_displayed_items_changed (self);
break;
/* Same comment, prepend but collection before note */
@@ -549,7 +604,7 @@ on_book_changed (BijiNoteBook *book,
gtk_list_store_remove (GTK_LIST_STORE (priv->model), p_iter);
priv->items_to_show = g_list_remove (priv->items_to_show, note);
- g_signal_emit (G_OBJECT (self), bjb_controller_signals[DISPLAY_NOTES_CHANGED],0);
+ notify_displayed_items_changed (self);
break;
default:
@@ -614,15 +669,17 @@ bjb_controller_class_init (BjbControllerClass *klass)
G_TYPE_NONE,
0);
- bjb_controller_signals[DISPLAY_NOTES_CHANGED] = g_signal_new ( "display-notes-changed" ,
+ bjb_controller_signals[DISPLAY_NOTES_CHANGED] = g_signal_new ( "display-items-changed" ,
G_OBJECT_CLASS_TYPE (klass),
G_SIGNAL_RUN_LAST,
0,
NULL,
NULL,
- g_cclosure_marshal_VOID__BOOLEAN,
+ _biji_marshal_VOID__BOOLEAN_BOOLEAN,
G_TYPE_NONE,
- 0);
+ 2,
+ G_TYPE_BOOLEAN,
+ G_TYPE_BOOLEAN);
properties[PROP_BOOK] = g_param_spec_object ("book",
"Book",
@@ -713,16 +770,13 @@ bjb_controller_get_completion(BjbController *self)
return self->priv->completion ;
}
+
gboolean
bjb_controller_shows_item (BjbController *self)
{
- if (self->priv->items_to_show)
- return TRUE;
-
- return FALSE;
+ return (self->priv->items_to_show != NULL);
}
-
BijiCollection *
bjb_controller_get_collection (BjbController *self)
{
@@ -748,10 +802,8 @@ bjb_controller_set_collection (BjbController *self,
/* Opening an __existing__ collection */
bjb_window_base_switch_to (self->priv->window, BJB_WINDOW_BASE_SPINNER_VIEW);
- g_list_free (self->priv->items_to_show);
-
- if (self->priv->needle)
- g_free (self->priv->needle);
+ g_clear_pointer (&self->priv->items_to_show, g_list_free);
+ g_clear_pointer (&self->priv->needle, g_free);
self->priv->needle = g_strdup ("");
self->priv->collection = coll;
@@ -760,3 +812,18 @@ bjb_controller_set_collection (BjbController *self,
update_controller_callback,
self);
}
+
+
+void
+bjb_controller_show_more (BjbController *self)
+{
+ self->priv->n_items_to_show += BJB_ITEMS_SLICE;
+
+ /* FIXME: this method to refresh is just non sense */
+
+ if (self->priv->collection != NULL)
+ bjb_controller_set_collection (self, self->priv->collection);
+
+ else
+ on_needle_changed (self);
+}
diff --git a/src/bjb-controller.h b/src/bjb-controller.h
index 306fe77..666ffd3 100644
--- a/src/bjb-controller.h
+++ b/src/bjb-controller.h
@@ -78,6 +78,9 @@ BijiCollection * bjb_controller_get_collection (BjbController *self);
void bjb_controller_set_collection (BjbController *self, BijiCollection *coll);
+
+void bjb_controller_show_more (BjbController *controller);
+
G_END_DECLS
#endif /* _BJB_CONTROLLER_H_ */
diff --git a/src/bjb-load-more-button.c b/src/bjb-load-more-button.c
new file mode 100644
index 0000000..2170a84
--- /dev/null
+++ b/src/bjb-load-more-button.c
@@ -0,0 +1,236 @@
+/*
+ * Bjb - access, organize and share your bjb on GNOME
+ * Copyright © 2013 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
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ * 02110-1301, USA.
+ */
+
+/* Chained based on Photos, Documents */
+
+#include "config.h"
+
+#include <glib.h>
+#include <glib/gi18n.h>
+#include <glib/gprintf.h>
+
+#include <libgd/gd-revealer.h>
+
+#include "bjb-load-more-button.h"
+
+struct _BjbLoadMoreButtonPrivate
+{
+ GtkWidget *revealer;
+ GtkWidget *label;
+ GtkWidget *spinner;
+
+ BjbController *controller;
+};
+
+
+
+enum
+{
+ PROP_0,
+ PROP_BJB_CONTROLLER,
+ NUM_PROPERTIES
+};
+
+static GParamSpec *properties[NUM_PROPERTIES] = { NULL, };
+
+
+G_DEFINE_TYPE (BjbLoadMoreButton, bjb_load_more_button, GTK_TYPE_BUTTON);
+
+
+static void
+on_displayed_items_changed (BjbController *controller,
+ gboolean some_is_shown,
+ gboolean remaining,
+ BjbLoadMoreButton *self)
+{
+ BjbLoadMoreButtonPrivate *priv;
+
+ priv = self->priv;
+ gtk_spinner_stop (GTK_SPINNER (priv->spinner));
+ gtk_widget_hide (priv->spinner);
+ gtk_label_set_label (GTK_LABEL (priv->label), _("Load More"));
+
+ gd_revealer_set_reveal_child (GD_REVEALER (priv->revealer), remaining);
+}
+
+
+static void
+bjb_load_more_button_clicked (GtkButton *button)
+{
+ BjbLoadMoreButton *self;
+ BjbLoadMoreButtonPrivate *priv;
+
+ self = BJB_LOAD_MORE_BUTTON (button);
+ priv = self->priv;
+
+ gtk_label_set_label (GTK_LABEL (priv->label), _("Loading..."));
+ gtk_widget_show (priv->spinner);
+ gtk_spinner_start (GTK_SPINNER (priv->spinner));
+
+ bjb_controller_show_more (self->priv->controller);
+}
+
+
+static void
+bjb_load_more_button_constructed (GObject *object)
+{
+ BjbLoadMoreButton *self;
+ BjbLoadMoreButtonPrivate *priv;
+
+ self = BJB_LOAD_MORE_BUTTON (object);
+ priv = self->priv;
+
+ g_signal_connect (priv->controller, "display-items-changed",
+ G_CALLBACK (on_displayed_items_changed), self);
+
+ G_OBJECT_CLASS (bjb_load_more_button_parent_class)->constructed (object);
+}
+
+
+static void
+bjb_load_more_button_finalize (GObject *object)
+{
+ BjbLoadMoreButton *self;
+ BjbLoadMoreButtonPrivate *priv;
+
+ self = BJB_LOAD_MORE_BUTTON (object);
+ priv = self->priv;
+
+ if (priv->controller && BJB_IS_CONTROLLER (priv->controller))
+ g_signal_handlers_disconnect_by_func
+ (priv->controller, on_displayed_items_changed, self);
+}
+
+
+static void
+bjb_load_more_button_dispose (GObject *object)
+{
+ G_OBJECT_CLASS (bjb_load_more_button_parent_class)->dispose (object);
+}
+
+
+static void
+bjb_load_more_button_init (BjbLoadMoreButton *self)
+{
+ BjbLoadMoreButtonPrivate *priv;
+ GtkStyleContext *context;
+ GtkWidget *child;
+
+ priv = self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, BJB_TYPE_LOAD_MORE_BUTTON,
BjbLoadMoreButtonPrivate);
+
+ context = gtk_widget_get_style_context (GTK_WIDGET (self));
+ gtk_style_context_add_class (context, "documents-load-more");
+
+ child = gtk_grid_new ();
+ gtk_widget_set_halign (child, GTK_ALIGN_CENTER);
+ gtk_widget_set_hexpand (child, TRUE);
+ gtk_widget_set_visible (child, TRUE);
+ gtk_grid_set_column_spacing (GTK_GRID (child), 10);
+ gtk_container_add (GTK_CONTAINER (self), child);
+
+ priv->spinner = gtk_spinner_new ();
+ gtk_widget_set_halign (priv->spinner, GTK_ALIGN_CENTER);
+ gtk_widget_set_no_show_all (priv->spinner, TRUE);
+ gtk_widget_set_size_request (priv->spinner, 16, 16);
+ gtk_container_add (GTK_CONTAINER (child), priv->spinner);
+
+ priv->label = gtk_label_new (_("Load More"));
+ gtk_widget_set_visible (priv->label, TRUE);
+ gtk_container_add (GTK_CONTAINER (child), priv->label);
+
+ priv->revealer = gd_revealer_new ();
+ gtk_container_add (GTK_CONTAINER (priv->revealer), GTK_WIDGET (self));
+}
+
+
+static void
+bjb_load_more_button_get_property (GObject *object,
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec)
+{
+ BjbLoadMoreButton *self = BJB_LOAD_MORE_BUTTON (object);
+
+ switch (prop_id)
+ {
+ case PROP_BJB_CONTROLLER:
+ g_value_set_object (value, self->priv->controller);
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+}
+
+static void
+bjb_load_more_button_set_property (GObject *object,
+ guint prop_id,
+ const GValue *value,
+ GParamSpec *pspec)
+{
+ BjbLoadMoreButton *self = BJB_LOAD_MORE_BUTTON (object);
+
+ switch (prop_id)
+ {
+ case PROP_BJB_CONTROLLER:
+ self->priv->controller = g_value_get_object (value);
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+}
+
+
+static void
+bjb_load_more_button_class_init (BjbLoadMoreButtonClass *class)
+{
+ GObjectClass *object_class = G_OBJECT_CLASS (class);
+ GtkButtonClass *button_class = GTK_BUTTON_CLASS (class);
+
+ object_class->constructed = bjb_load_more_button_constructed;
+ object_class->dispose = bjb_load_more_button_dispose;
+ object_class->finalize = bjb_load_more_button_finalize;
+ object_class->get_property = bjb_load_more_button_get_property;
+ object_class->set_property = bjb_load_more_button_set_property;
+ button_class->clicked = bjb_load_more_button_clicked;
+
+ g_type_class_add_private (class, sizeof (BjbLoadMoreButtonPrivate));
+
+ properties[PROP_BJB_CONTROLLER] = g_param_spec_object ("controller",
+ "Controller",
+ "BjbController",
+ BJB_TYPE_CONTROLLER,
+ G_PARAM_READWRITE |
+ G_PARAM_CONSTRUCT |
+ G_PARAM_STATIC_STRINGS);
+
+ g_object_class_install_properties (object_class, NUM_PROPERTIES, properties);
+}
+
+
+GtkWidget *
+bjb_load_more_button_new (BjbController *controller)
+{
+ BjbLoadMoreButton *button;
+
+ button = g_object_new (BJB_TYPE_LOAD_MORE_BUTTON, "controller", controller, NULL);
+ return button->priv->revealer;
+}
diff --git a/src/bjb-load-more-button.h b/src/bjb-load-more-button.h
new file mode 100644
index 0000000..fd2dc54
--- /dev/null
+++ b/src/bjb-load-more-button.h
@@ -0,0 +1,78 @@
+/*
+ * Bjb - access, organize and share your bjb on GNOME
+ * Copyright © 2013 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
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ * 02110-1301, USA.
+ */
+
+/* Chained based on Photos, Documents */
+
+#ifndef BJB_LOAD_MORE_BUTTON_H
+#define BJB_LOAD_MORE_BUTTON_H
+
+#include <gtk/gtk.h>
+
+#include "bjb-controller.h"
+
+G_BEGIN_DECLS
+
+#define BJB_TYPE_LOAD_MORE_BUTTON (bjb_load_more_button_get_type ())
+
+#define BJB_LOAD_MORE_BUTTON(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST ((obj), \
+ BJB_TYPE_LOAD_MORE_BUTTON, BjbLoadMoreButton))
+
+#define BJB_LOAD_MORE_BUTTON_CLASS(klass) \
+ (G_TYPE_CHECK_CLASS_CAST ((klass), \
+ BJB_TYPE_LOAD_MORE_BUTTON, BjbLoadMoreButtonClass))
+
+#define BJB_IS_LOAD_MORE_BUTTON(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \
+ BJB_TYPE_LOAD_MORE_BUTTON))
+
+#define BJB_IS_LOAD_MORE_BUTTON_CLASS(klass) \
+ (G_TYPE_CHECK_CLASS_TYPE ((klass), \
+ BJB_TYPE_LOAD_MORE_BUTTON))
+
+#define BJB_LOAD_MORE_BUTTON_GET_CLASS(obj) \
+ (G_TYPE_INSTANCE_GET_CLASS ((obj), \
+ BJB_TYPE_LOAD_MORE_BUTTON, BjbLoadMoreButtonClass))
+
+typedef struct _BjbLoadMoreButton BjbLoadMoreButton;
+typedef struct _BjbLoadMoreButtonClass BjbLoadMoreButtonClass;
+typedef struct _BjbLoadMoreButtonPrivate BjbLoadMoreButtonPrivate;
+
+struct _BjbLoadMoreButton
+{
+ GtkButton parent_instance;
+ BjbLoadMoreButtonPrivate *priv;
+};
+
+struct _BjbLoadMoreButtonClass
+{
+ GtkButtonClass parent_class;
+};
+
+GType bjb_load_more_button_get_type (void) G_GNUC_CONST;
+
+
+ /* Does not return self, but its revealer */
+
+GtkWidget *bjb_load_more_button_new (BjbController *controller);
+
+G_END_DECLS
+
+#endif /* BJB_LOAD_MORE_BUTTON_H */
diff --git a/src/bjb-main-toolbar.c b/src/bjb-main-toolbar.c
index 265b423..3dea1aa 100644
--- a/src/bjb-main-toolbar.c
+++ b/src/bjb-main-toolbar.c
@@ -238,20 +238,23 @@ add_search_button (BjbMainToolbar *self)
G_CALLBACK (on_search_button_clicked), priv);
}
+
static void
-update_selection_buttons (BjbMainToolbarPrivate *priv)
+update_selection_buttons (BjbController *controller,
+ gboolean some_item_is_visible,
+ gboolean remaining,
+ BjbMainToolbarPrivate *priv)
{
- gboolean some_note_is_visible = bjb_controller_shows_item (priv->controller);
-
if (priv->grid)
- gtk_widget_set_sensitive (priv->grid, some_note_is_visible);
+ gtk_widget_set_sensitive (priv->grid, some_item_is_visible);
if (priv->list)
- gtk_widget_set_sensitive (priv->list, some_note_is_visible);
+ gtk_widget_set_sensitive (priv->list, some_item_is_visible);
- gtk_widget_set_sensitive (priv->select, some_note_is_visible);
+ gtk_widget_set_sensitive (priv->select, some_item_is_visible);
}
+
static void
populate_bar_for_selection (BjbMainToolbar *self)
{
@@ -304,10 +307,10 @@ update_label_for_standard (BjbMainToolbar *self)
gd_main_toolbar_set_labels (GD_MAIN_TOOLBAR (self), label, NULL);
g_free (label);
- self->priv->display_notes = g_signal_connect_swapped (self->priv->controller,
- "display-notes-changed",
- G_CALLBACK (update_selection_buttons),
- self->priv);
+ self->priv->display_notes = g_signal_connect (self->priv->controller,
+ "display-items-changed",
+ G_CALLBACK (update_selection_buttons),
+ self->priv);
}
static void
@@ -741,9 +744,13 @@ populate_bar_for_note_view (BjbMainToolbar *self)
}
static void
-populate_bar_switch(BjbMainToolbar *self)
+populate_bar_switch (BjbMainToolbar *self)
{
- switch (self->priv->type)
+ BjbMainToolbarPrivate *priv;
+
+ priv = self->priv;
+
+ switch (priv->type)
{
case BJB_TOOLBAR_SELECT:
populate_bar_for_selection (self);
@@ -752,13 +759,19 @@ populate_bar_switch(BjbMainToolbar *self)
case BJB_TOOLBAR_STD_ICON:
add_search_button (self);
populate_bar_for_icon_view(self);
- update_selection_buttons (self->priv);
+ update_selection_buttons (priv->controller,
+ bjb_controller_shows_item (priv->controller),
+ TRUE,
+ self->priv);
break;
case BJB_TOOLBAR_STD_LIST:
add_search_button (self);
populate_bar_for_list_view(self);
- update_selection_buttons (self->priv);
+ update_selection_buttons (priv->controller,
+ bjb_controller_shows_item (priv->controller),
+ TRUE,
+ self->priv);
break;
case BJB_TOOLBAR_NOTE_VIEW:
diff --git a/src/bjb-main-view.c b/src/bjb-main-view.c
index c86e02c..81c204b 100644
--- a/src/bjb-main-view.c
+++ b/src/bjb-main-view.c
@@ -25,6 +25,7 @@
#include "bjb-app-menu.h"
#include "bjb-bijiben.h"
#include "bjb-controller.h"
+#include "bjb-load-more-button.h"
#include "bjb-main-toolbar.h"
#include "bjb-main-view.h"
#include "bjb-note-tag-dialog.h"
@@ -66,8 +67,9 @@ struct _BjbMainViewPriv {
BjbSelectionToolbar *select_bar;
/* View Notes , model */
- GdMainView *view ;
- BjbController *controller ;
+ GdMainView *view ;
+ BjbController *controller;
+ GtkWidget *load_more;
/* Signals */
gulong key;
@@ -466,6 +468,7 @@ on_drag_data_received (GtkWidget *widget,
gtk_drag_finish (context, FALSE, FALSE, time);
}
+
void
bjb_main_view_connect_signals (BjbMainView *self)
{
@@ -520,6 +523,10 @@ bjb_main_view_constructed(GObject *o)
gtk_container_add (GTK_CONTAINER (overlay), GTK_WIDGET (priv->view));
gtk_box_pack_start (vbox, GTK_WIDGET (overlay), TRUE, TRUE, 0);
+ /* Load more */
+ priv->load_more = bjb_load_more_button_new (priv->controller);
+ gtk_box_pack_start (vbox, priv->load_more, FALSE, FALSE, 0);
+
/* Selection Panel */
priv->select_bar = bjb_selection_toolbar_new (priv->view, self);
gtk_overlay_add_overlay (overlay, GTK_WIDGET (priv->select_bar));
diff --git a/src/libbiji/biji-marshalers.list b/src/libbiji/biji-marshalers.list
index 8d6795e..118a52f 100644
--- a/src/libbiji/biji-marshalers.list
+++ b/src/libbiji/biji-marshalers.list
@@ -1 +1,2 @@
VOID:ENUM,POINTER
+VOID:BOOLEAN,BOOLEAN
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]