[bijiben] emptyResultsBox: inform the user when no book is loaded



commit eeb03809d1b409f3e8bff162ea31c91b71836844
Author: Pierre-Yves Luyten <py luyten fr>
Date:   Thu Apr 25 01:20:25 2013 +0200

    emptyResultsBox: inform the user when no book is loaded
    
    this is the most trivial case.
    Book is loaded but no note appear.
    Trashed notes or searching in vain are not yet supported.

 src/bjb-controller.c  |   13 ++++++++++++-
 src/bjb-window-base.c |   22 ++++++++++++++++++++++
 src/bjb-window-base.h |    2 ++
 3 files changed, 36 insertions(+), 1 deletions(-)
---
diff --git a/src/bjb-controller.c b/src/bjb-controller.c
index 11de083..8bb4801 100644
--- a/src/bjb-controller.c
+++ b/src/bjb-controller.c
@@ -344,6 +344,7 @@ update_controller_callback (GObject *source_object,
 
   result = biji_get_notes_with_strings_or_collection_finish (source_object, res, self->priv->book);
   self->priv->notes_to_show = result;
+
   sort_and_update (self);
 }          
 
@@ -362,10 +363,20 @@ bjb_controller_apply_needle (BjbController *self)
   if (needle == NULL || g_strcmp0 (needle,"") == 0)
   {
     priv->notes_to_show = biji_note_book_get_notes (self->priv->book);
-    sort_and_update (self);
+
+    /* If there are no note, report this */
+    if (!priv->notes_to_show)
+      bjb_window_base_switch_to (self->priv->window,
+                                 BJB_WINDOW_BASE_NO_NOTE);
+
+    /* Otherwise do show existing notes */
+    else
+      sort_and_update (self);
+
     return;
   }
 
+  /* There is a research, apply lookup */
   biji_get_notes_with_string_or_collection_async (needle, update_controller_callback, self);
 }
 
diff --git a/src/bjb-window-base.c b/src/bjb-window-base.c
index e94e96b..90a402b 100644
--- a/src/bjb-window-base.c
+++ b/src/bjb-window-base.c
@@ -6,6 +6,7 @@
 #include <libgd/gd.h>
 
 #include "bjb-bijiben.h"
+#include "bjb-empty-results-box.h"
 #include "bjb-window-base.h"
 #include "bjb-main-toolbar.h"
 #include "bjb-main-view.h"
@@ -39,6 +40,8 @@ struct _BjbWindowBasePriv
   GdStack              *stack;
   GtkWidget            *spinner; // this spinner takes the whole place
                                  // and only shows on startup
+  GtkWidget            *no_note;
+
   BjbWindowViewType     current_view;
   BjbMainView          *view;
   BjbMainToolbar       *main_toolbar;
@@ -214,6 +217,9 @@ bjb_window_base_new(void)
   gtk_widget_show (priv->spinner);
   gtk_spinner_start (GTK_SPINNER (priv->spinner));
 
+  priv->no_note = bjb_empty_results_box_new ();
+  gd_stack_add_named (priv->stack, priv->no_note, "empty");
+
   gd_stack_add_named (priv->stack, GTK_WIDGET (priv->view), "main-view");
   gtk_widget_show_all (GTK_WIDGET (retval));
 
@@ -268,6 +274,22 @@ bjb_window_base_switch_to (BjbWindowBase *bwb, BjbWindowViewType type)
     destroy_note_if_needed (bwb);
   }
 
+  else if (type == BJB_WINDOW_BASE_NO_NOTE)
+  {
+    bjb_empty_results_box_set_type (BJB_EMPTY_RESULTS_BOX (priv->no_note),
+                                    BJB_EMPTY_RESULTS_NO_NOTE);
+    gtk_widget_show (priv->no_note);
+    gd_stack_set_visible_child_name (priv->stack, "empty");
+  }
+
+  else if (type == BJB_WINDOW_BASE_NO_RESULT)
+  {
+    bjb_empty_results_box_set_type (BJB_EMPTY_RESULTS_BOX (priv->no_note),
+                                    BJB_EMPTY_RESULTS_NO_RESULTS);
+    gtk_widget_show (priv->no_note);
+    gd_stack_set_visible_child_name (priv->stack, "empty");
+  }
+
   else
   {
     gtk_widget_show_all (GTK_WIDGET (priv->note_overlay));
diff --git a/src/bjb-window-base.h b/src/bjb-window-base.h
index c2273e2..ca9c391 100644
--- a/src/bjb-window-base.h
+++ b/src/bjb-window-base.h
@@ -33,6 +33,8 @@ struct _BjbWindowBase
 typedef enum {
   BJB_WINDOW_BASE_MAIN_VIEW,
   BJB_WINDOW_BASE_NOTE_VIEW,
+  BJB_WINDOW_BASE_NO_NOTE,
+  BJB_WINDOW_BASE_NO_RESULT,
   BJB_WINDOW_BASE_NO_VIEW
 } BjbWindowViewType;
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]