[gnome-usage] header-bar: Replace the GtkStackSwitcher by a HdyViewSwitcherTitle



commit 2d959a5138f7a1c0e3a0d299bfbd592edd2842fc
Author: Adrien Plazas <kekun plazas laposte net>
Date:   Tue Sep 10 19:19:16 2019 +0200

    header-bar: Replace the GtkStackSwitcher by a HdyViewSwitcherTitle
    
    This replaces the stack switcher by an adaptive view switcher, which
    shows the window's title and triggers the view switcher bar if there
    isn't enough room to dislay the view switcher in the header bar.

 data/ui/header-bar.ui |  4 +++-
 src/header-bar.vala   | 37 +++++++++++++++++--------------------
 src/window.vala       |  1 +
 3 files changed, 21 insertions(+), 21 deletions(-)
---
diff --git a/data/ui/header-bar.ui b/data/ui/header-bar.ui
index 3f71041..8b0d759 100644
--- a/data/ui/header-bar.ui
+++ b/data/ui/header-bar.ui
@@ -7,8 +7,10 @@
     <property name="show-close-button">True</property>
     <property name="centering-policy">strict</property>
     <child type="title">
-      <object class="GtkStackSwitcher" id="stack_switcher">
+      <object class="HdyViewSwitcherTitle" id="view_switcher_title">
         <property name="visible">True</property>
+        <property name="title" translatable="yes">Usage</property>
+        <signal name="notify::title-visible" handler="on_title_visible_changed"/>
       </object>
     </child>
 
diff --git a/src/header-bar.vala b/src/header-bar.vala
index c56991c..a85ab1f 100644
--- a/src/header-bar.vala
+++ b/src/header-bar.vala
@@ -32,7 +32,7 @@ namespace Usage
     public class HeaderBar : Hdy.HeaderBar
     {
         [GtkChild]
-        private Gtk.StackSwitcher stack_switcher;
+        private Hdy.ViewSwitcherTitle view_switcher_title;
 
         [GtkChild]
         private Gtk.Revealer performance_search_revealer;
@@ -47,16 +47,22 @@ namespace Usage
            private HeaderBarMode mode;
            private Usage.PrimaryMenu menu;
 
+           public bool title_visible { get; private set; }
+
            public HeaderBar(Gtk.Stack stack)
            {
                mode = HeaderBarMode.PERFORMANCE;
                menu = new Usage.PrimaryMenu();
-            stack_switcher.set_stack(stack);
+            view_switcher_title.set_stack(stack);
             this.primary_menu_button.set_popover(menu);
 
             set_mode(HeaderBarMode.PERFORMANCE);
            }
 
+        construct {
+            update_title_visible ();
+        }
+
            public void set_mode(HeaderBarMode mode)
            {
             switch(this.mode)
@@ -71,17 +77,24 @@ namespace Usage
             switch(mode)
             {
                 case HeaderBarMode.PERFORMANCE:
-                    show_stack_switcher();
                     performance_search_revealer.reveal_child = true;
                     break;
                 case HeaderBarMode.STORAGE:
-                    show_stack_switcher();
                     break;
             }
             menu.mode = mode;
             this.mode = mode;
            }
 
+        private void update_title_visible () {
+            title_visible = view_switcher_title.title_visible;
+        }
+
+        [GtkCallback]
+        private void on_title_visible_changed () {
+            update_title_visible ();
+        }
+
         [GtkCallback]
         private void on_performance_search_button_toggled () {
             /* TODO: Implement a saner way of toggling this mode. */
@@ -93,22 +106,6 @@ namespace Usage
                return mode;
            }
 
-           public void show_title()
-           {
-               set_custom_title(null);
-            set_title(title_text);
-           }
-
-           public void set_title_text(string title)
-        {
-            this.title_text = title;
-        }
-
-           public void show_stack_switcher()
-        {
-            set_custom_title(stack_switcher);
-        }
-
         public void action_on_search()
         {
             switch(mode)
diff --git a/src/window.vala b/src/window.vala
index 6b00116..a5b9ac0 100644
--- a/src/window.vala
+++ b/src/window.vala
@@ -59,6 +59,7 @@ namespace Usage
             viewswitcher_bar = new Hdy.ViewSwitcherBar();
             viewswitcher_bar.visible = true;
             viewswitcher_bar.stack = stack;
+            header_bar.bind_property ("title-visible", viewswitcher_bar, "reveal", BindingFlags.SYNC_CREATE);
 
             views = new View[]
             {


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