[bijiben] emptyResuls: draw an empty state if no note found



commit 8cafc8b6065fe3f351ec944fcc1a63c026456cba
Author: Pierre-Yves Luyten <py luyten fr>
Date:   Wed May 1 02:43:33 2013 +0200

    emptyResuls: draw an empty state if no note found

 src/bjb-controller.c   |   18 +++++++++++++-----
 src/bjb-main-toolbar.c |    3 ++-
 src/bjb-window-base.c  |   14 +++++++-------
 3 files changed, 22 insertions(+), 13 deletions(-)
---
diff --git a/src/bjb-controller.c b/src/bjb-controller.c
index 8c7ad5f..33fe0ce 100644
--- a/src/bjb-controller.c
+++ b/src/bjb-controller.c
@@ -367,7 +367,14 @@ update_controller_callback (GObject *source_object,
   result = biji_get_notes_with_strings_or_collection_finish (source_object, res, self->priv->book);
   self->priv->items_to_show = result;
 
+  if (!result)
+  {
+    bjb_window_base_switch_to (self->priv->window, BJB_WINDOW_BASE_NO_RESULT);
+    return;
+  }
+
   sort_and_update (self);
+  bjb_window_base_switch_to (self->priv->window, BJB_WINDOW_BASE_MAIN_VIEW);
 }
 
 void
@@ -388,13 +395,14 @@ bjb_controller_apply_needle (BjbController *self)
 
     /* If there are no note, report this */
     if (!priv->items_to_show)
-      bjb_window_base_switch_to (self->priv->window,
-                                 BJB_WINDOW_BASE_NO_NOTE);
+    {
+      bjb_window_base_switch_to (self->priv->window, BJB_WINDOW_BASE_NO_NOTE);
+      return;
+    }
 
     /* Otherwise do show existing notes */
-    else
-      sort_and_update (self);
-
+    sort_and_update (self);
+    bjb_window_base_switch_to (self->priv->window, BJB_WINDOW_BASE_MAIN_VIEW);
     return;
   }
 
diff --git a/src/bjb-main-toolbar.c b/src/bjb-main-toolbar.c
index 5ba9e72..b5e4ced 100644
--- a/src/bjb-main-toolbar.c
+++ b/src/bjb-main-toolbar.c
@@ -737,7 +737,8 @@ populate_main_toolbar(BjbMainToolbar *self)
   if (view_type == BJB_WINDOW_BASE_NOTE_VIEW)
     to_be = BJB_TOOLBAR_NOTE_VIEW;
 
-  else if (view_type == BJB_WINDOW_BASE_MAIN_VIEW)
+  else if (  view_type == BJB_WINDOW_BASE_MAIN_VIEW
+           ||view_type == BJB_WINDOW_BASE_NO_RESULT)
   {
     if (bjb_main_view_get_selection_mode (priv->parent) == TRUE)
       to_be = BJB_TOOLBAR_SELECT;
diff --git a/src/bjb-window-base.c b/src/bjb-window-base.c
index 64a6269..f9cc6b3 100644
--- a/src/bjb-window-base.c
+++ b/src/bjb-window-base.c
@@ -255,10 +255,10 @@ bjb_window_base_get_note (BjbWindowBase *self)
 static void
 destroy_note_if_needed (BjbWindowBase *bwb)
 {
+  bwb->priv->note = NULL;
+
   if (bwb->priv->note_view && GTK_IS_WIDGET (bwb->priv->note_view))
-  {
     g_clear_pointer (&(bwb->priv->note_overlay), gtk_widget_destroy);
-  }
 }
 
 void
@@ -267,6 +267,9 @@ bjb_window_base_switch_to (BjbWindowBase *bwb, BjbWindowViewType type)
   BjbWindowBasePriv *priv = bwb->priv;
   priv->current_view = type;
 
+  if (type != BJB_WINDOW_BASE_NOTE_VIEW)
+    destroy_note_if_needed (bwb);
+
   switch (type)
   {
 
@@ -275,16 +278,13 @@ bjb_window_base_switch_to (BjbWindowBase *bwb, BjbWindowViewType type)
      * Ensure the main view receives the proper signals */
 
     case BJB_WINDOW_BASE_MAIN_VIEW:
-      priv->note = NULL;
       bjb_search_toolbar_connect (priv->search_bar);
       bjb_main_view_connect_signals (priv->view);
       gd_stack_set_visible_child_name (priv->stack, "main-view");
-      destroy_note_if_needed (bwb);
       break;
 
 
     case BJB_WINDOW_BASE_SPINNER_VIEW:
-      priv->note = NULL;
       gd_stack_set_visible_child_name (priv->stack, "spinner");
       break;
 
@@ -306,8 +306,6 @@ bjb_window_base_switch_to (BjbWindowBase *bwb, BjbWindowViewType type)
 
 
     case BJB_WINDOW_BASE_NOTE_VIEW:
-      bjb_search_toolbar_fade_out (priv->search_bar);
-      bjb_search_toolbar_disconnect (priv->search_bar);
       gtk_widget_show_all (GTK_WIDGET (priv->note_overlay));
       gd_stack_set_visible_child_name (priv->stack, "note-view");
       break;
@@ -326,6 +324,8 @@ bjb_window_base_switch_to_note (BjbWindowBase *bwb, BijiNoteObj *note)
   BjbWindowBasePriv *priv = bwb->priv;
   GtkWidget *w = GTK_WIDGET (bwb);
 
+  bjb_search_toolbar_disconnect (priv->search_bar);
+  bjb_search_toolbar_fade_out (priv->search_bar);
   destroy_note_if_needed (bwb);
 
   priv->note = note;


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