[gnome-photos/wip/rishi/collection: 1/24] Merge PhotosHeaderBar into PhotosMainToolbar



commit facb20d1193690fb1238d01a4fa11645cb3718c6
Author: Alessandro Bono <abono gnome org>
Date:   Wed Jan 17 16:54:03 2018 +0100

    Merge PhotosHeaderBar into PhotosMainToolbar
    
    https://bugzilla.gnome.org/show_bug.cgi?id=782479

 src/Makefile.am            |   2 -
 src/photos-header-bar.c    | 176 ---------------------------------------------
 src/photos-header-bar.h    |  57 ---------------
 src/photos-main-toolbar.c  |  47 ++++++++----
 src/photos-main-toolbar.ui |   5 +-
 5 files changed, 37 insertions(+), 250 deletions(-)
---
diff --git a/src/Makefile.am b/src/Makefile.am
index a517a623..a65c2725 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -118,8 +118,6 @@ gnome_photos_SOURCES = \
        photos-glib.h \
        photos-google-item.c \
        photos-google-item.h \
-       photos-header-bar.c \
-       photos-header-bar.h \
        photos-icons.h \
        photos-image-view.c \
        photos-image-view.h \
diff --git a/src/photos-main-toolbar.c b/src/photos-main-toolbar.c
index 3d7fc32f..d174251a 100644
--- a/src/photos-main-toolbar.c
+++ b/src/photos-main-toolbar.c
@@ -32,7 +32,6 @@
 
 #include "photos-dlna-renderers-manager.h"
 #include "photos-dropdown.h"
-#include "photos-header-bar.h"
 #include "photos-icons.h"
 #include "photos-item-manager.h"
 #include "photos-main-toolbar.h"
@@ -53,6 +52,7 @@ struct _PhotosMainToolbar
   GtkWidget *remote_display_button;
   GtkWidget *searchbar;
   GtkWidget *selection_menu;
+  GtkWidget *stack_switcher;
   PhotosBaseManager *item_mngr;
   PhotosModeController *mode_cntrlr;
   PhotosRemoteDisplayManager *remote_mngr;
@@ -306,9 +306,16 @@ photos_main_toolbar_clear_state_data (PhotosMainToolbar *self)
 static void
 photos_main_toolbar_clear_toolbar (PhotosMainToolbar *self)
 {
+  GtkStyleContext *context;
+
   photos_main_toolbar_clear_state_data (self);
+
+  gtk_header_bar_set_custom_title (GTK_HEADER_BAR (self->header_bar), NULL);
   gtk_header_bar_set_show_close_button (GTK_HEADER_BAR (self->header_bar), FALSE);
-  photos_header_bar_clear (PHOTOS_HEADER_BAR (self->header_bar));
+  gtk_container_foreach (GTK_CONTAINER (self->header_bar), (GtkCallback) gtk_widget_destroy, NULL);
+  context = gtk_widget_get_style_context (self->header_bar);
+  gtk_style_context_remove_class (context, "selection-mode");
+
   g_simple_action_set_enabled (self->gear_menu, FALSE);
 }
 
@@ -386,7 +393,7 @@ static void
 photos_main_toolbar_populate_for_collection_view (PhotosMainToolbar *self)
 {
   gtk_header_bar_set_show_close_button (GTK_HEADER_BAR (self->header_bar), TRUE);
-  photos_header_bar_set_mode (PHOTOS_HEADER_BAR (self->header_bar), PHOTOS_HEADER_BAR_MODE_STANDALONE);
+
   photos_main_toolbar_add_back_button (self);
   photos_main_toolbar_add_selection_button (self);
   photos_main_toolbar_add_search_button (self);
@@ -396,8 +403,9 @@ photos_main_toolbar_populate_for_collection_view (PhotosMainToolbar *self)
 static void
 photos_main_toolbar_populate_for_collections (PhotosMainToolbar *self)
 {
+  gtk_header_bar_set_custom_title (GTK_HEADER_BAR (self->header_bar), self->stack_switcher);
   gtk_header_bar_set_show_close_button (GTK_HEADER_BAR (self->header_bar), TRUE);
-  photos_header_bar_set_mode (PHOTOS_HEADER_BAR (self->header_bar), PHOTOS_HEADER_BAR_MODE_NORMAL);
+
   photos_main_toolbar_add_selection_button (self);
   photos_main_toolbar_add_search_button (self);
 }
@@ -410,8 +418,6 @@ photos_main_toolbar_populate_for_edit (PhotosMainToolbar *self)
   GtkWidget *cancel_button;
   GtkWidget *done_button;
 
-  photos_header_bar_set_mode (PHOTOS_HEADER_BAR (self->header_bar), PHOTOS_HEADER_BAR_MODE_STANDALONE);
-
   cancel_button = gtk_button_new_with_label (_("Cancel"));
   gtk_actionable_set_action_name (GTK_ACTIONABLE (cancel_button), "app.edit-cancel");
   gtk_header_bar_pack_start (GTK_HEADER_BAR (self->header_bar), cancel_button);
@@ -427,8 +433,9 @@ photos_main_toolbar_populate_for_edit (PhotosMainToolbar *self)
 static void
 photos_main_toolbar_populate_for_favorites (PhotosMainToolbar *self)
 {
+  gtk_header_bar_set_custom_title (GTK_HEADER_BAR (self->header_bar), self->stack_switcher);
   gtk_header_bar_set_show_close_button (GTK_HEADER_BAR (self->header_bar), TRUE);
-  photos_header_bar_set_mode (PHOTOS_HEADER_BAR (self->header_bar), PHOTOS_HEADER_BAR_MODE_NORMAL);
+
   photos_main_toolbar_add_selection_button (self);
   photos_main_toolbar_add_search_button (self);
 }
@@ -437,8 +444,9 @@ photos_main_toolbar_populate_for_favorites (PhotosMainToolbar *self)
 static void
 photos_main_toolbar_populate_for_overview (PhotosMainToolbar *self)
 {
+  gtk_header_bar_set_custom_title (GTK_HEADER_BAR (self->header_bar), self->stack_switcher);
   gtk_header_bar_set_show_close_button (GTK_HEADER_BAR (self->header_bar), TRUE);
-  photos_header_bar_set_mode (PHOTOS_HEADER_BAR (self->header_bar), PHOTOS_HEADER_BAR_MODE_NORMAL);
+
   photos_main_toolbar_add_selection_button (self);
   photos_main_toolbar_add_search_button (self);
 }
@@ -459,7 +467,6 @@ photos_main_toolbar_populate_for_preview (PhotosMainToolbar *self)
   GAction *remote_display_action;
 
   gtk_header_bar_set_show_close_button (GTK_HEADER_BAR (self->header_bar), TRUE);
-  photos_header_bar_set_mode (PHOTOS_HEADER_BAR (self->header_bar), PHOTOS_HEADER_BAR_MODE_STANDALONE);
 
   photos_main_toolbar_add_back_button (self);
 
@@ -510,8 +517,9 @@ photos_main_toolbar_populate_for_preview (PhotosMainToolbar *self)
 static void
 photos_main_toolbar_populate_for_search (PhotosMainToolbar *self)
 {
+  gtk_header_bar_set_custom_title (GTK_HEADER_BAR (self->header_bar), self->stack_switcher);
   gtk_header_bar_set_show_close_button (GTK_HEADER_BAR (self->header_bar), TRUE);
-  photos_header_bar_set_mode (PHOTOS_HEADER_BAR (self->header_bar), PHOTOS_HEADER_BAR_MODE_NORMAL);
+
   photos_main_toolbar_add_selection_button (self);
   photos_main_toolbar_add_search_button (self);
 }
@@ -521,8 +529,11 @@ static void
 photos_main_toolbar_populate_for_selection_mode (PhotosMainToolbar *self)
 {
   GtkWidget *selection_button;
+  GtkStyleContext *context;
 
-  photos_header_bar_set_mode (PHOTOS_HEADER_BAR (self->header_bar), PHOTOS_HEADER_BAR_MODE_SELECTION);
+  gtk_header_bar_set_custom_title (GTK_HEADER_BAR (self->header_bar), self->selection_menu);
+  context = gtk_widget_get_style_context (self->header_bar);
+  gtk_style_context_add_class (context, "selection-mode");
 
   selection_button = gtk_button_new_with_label (_("Cancel"));
   gtk_actionable_set_action_name (GTK_ACTIONABLE (selection_button), "app.selection-mode");
@@ -560,6 +571,8 @@ photos_main_toolbar_dispose (GObject *object)
   g_clear_object (&self->mode_cntrlr);
   g_clear_object (&self->remote_mngr);
   g_clear_object (&self->sel_cntrlr);
+  g_clear_object (&self->selection_menu);
+  g_clear_object (&self->stack_switcher);
 
   G_OBJECT_CLASS (photos_main_toolbar_parent_class)->dispose (object);
 }
@@ -595,6 +608,7 @@ photos_main_toolbar_init (PhotosMainToolbar *self)
   GAction *action;
   GApplication *app;
   g_autoptr (GtkBuilder) builder = NULL;
+  GtkStyleContext *context;
   PhotosSearchContextState *state;
 
   gtk_widget_init_template (GTK_WIDGET (self));
@@ -615,10 +629,15 @@ photos_main_toolbar_init (PhotosMainToolbar *self)
   builder = gtk_builder_new_from_resource ("/org/gnome/Photos/selection-menu.ui");
 
   selection_menu = G_MENU (gtk_builder_get_object (builder, "selection-menu"));
-  self->selection_menu = gtk_menu_button_new ();
+  self->selection_menu = g_object_ref_sink (gtk_menu_button_new ());
   gtk_menu_button_set_menu_model (GTK_MENU_BUTTON (self->selection_menu), G_MENU_MODEL (selection_menu));
+  context = gtk_widget_get_style_context (self->selection_menu);
+  gtk_style_context_add_class (context, "selection-menu");
 
-  photos_header_bar_set_selection_menu (PHOTOS_HEADER_BAR (self->header_bar), GTK_BUTTON 
(self->selection_menu));
+  self->stack_switcher = g_object_ref_sink (gtk_stack_switcher_new ());
+  /* Don't show buttons for untitled children. */
+  gtk_widget_set_no_show_all (self->stack_switcher, TRUE);
+  gtk_widget_show (self->stack_switcher);
 
   self->item_mngr = g_object_ref (state->item_mngr);
   self->mode_cntrlr = g_object_ref (state->mode_cntrlr);
@@ -755,5 +774,5 @@ photos_main_toolbar_reset_toolbar_mode (PhotosMainToolbar *self)
 void
 photos_main_toolbar_set_stack (PhotosMainToolbar *self, GtkStack *stack)
 {
-  photos_header_bar_set_stack (PHOTOS_HEADER_BAR (self->header_bar), stack);
+  gtk_stack_switcher_set_stack (GTK_STACK_SWITCHER (self->stack_switcher), stack);
 }
diff --git a/src/photos-main-toolbar.ui b/src/photos-main-toolbar.ui
index 72c55efd..5c101597 100644
--- a/src/photos-main-toolbar.ui
+++ b/src/photos-main-toolbar.ui
@@ -24,8 +24,11 @@
     <property name="orientation">GTK_ORIENTATION_VERTICAL</property>
     <property name="visible">1</property>
     <child>
-      <object class="PhotosHeaderBar" id="header_bar">
+      <object class="GtkHeaderBar" id="header_bar">
         <property name="visible">1</property>
+        <style>
+          <class name="titlebar"/>
+        </style>
       </object>
     </child>
     <child>


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