[gnome-games] ui: Merge HeaderBar into ApplicationWindow



commit d381e09089d0e282f0acbc884b5b796e80eb4b81
Author: Adrien Plazas <kekun plazas laposte net>
Date:   Sun Jul 24 09:44:58 2016 +0200

    ui: Merge HeaderBar into ApplicationWindow
    
    Make ApplicationWindow handle the UI state of the header bar and use
    CollectionHeaderBar and DisplayHeaderBar that have been extracted from
    HeaderBar in the previous commits.
    
    This better distributes the concerns of the different parts of the UI.

 data/org.gnome.Games.gresource.xml |    1 -
 data/ui/application-window.ui      |   22 ++++++++++-
 data/ui/header-bar.ui              |   77 ------------------------------------
 src/Makefile.am                    |    1 -
 src/ui/application-window.vala     |   39 ++++++++++++------
 src/ui/header-bar.vala             |   54 -------------------------
 6 files changed, 46 insertions(+), 148 deletions(-)
---
diff --git a/data/org.gnome.Games.gresource.xml b/data/org.gnome.Games.gresource.xml
index 62bd5d1..4389f2d 100644
--- a/data/org.gnome.Games.gresource.xml
+++ b/data/org.gnome.Games.gresource.xml
@@ -15,7 +15,6 @@
     <file preprocess="xml-stripblanks">ui/empty-collection.ui</file>
     <file preprocess="xml-stripblanks">ui/error-info-bar.ui</file>
     <file preprocess="xml-stripblanks">ui/game-icon-view.ui</file>
-    <file preprocess="xml-stripblanks">ui/header-bar.ui</file>
     <file preprocess="xml-stripblanks">ui/preferences-page-plugins.ui</file>
     <file preprocess="xml-stripblanks">ui/preferences-page-plugins-item.ui</file>
     <file preprocess="xml-stripblanks">ui/preferences-window.ui</file>
diff --git a/data/ui/application-window.ui b/data/ui/application-window.ui
index 2e4f9bd..04d2910 100644
--- a/data/ui/application-window.ui
+++ b/data/ui/application-window.ui
@@ -16,8 +16,28 @@
       </object>
     </child>
     <child type="titlebar">
-      <object class="GamesHeaderBar" id="header_bar">
+      <object class="GtkStack" id="header_bar">
         <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <child>
+          <object class="GamesCollectionHeaderBar" id="collection_header_bar">
+            <property name="visible">True</property>
+            <property name="show_close_button">True</property>
+          </object>
+          <packing>
+            <property name="name">collection</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GamesDisplayHeaderBar" id="display_header_bar">
+            <property name="visible">True</property>
+            <property name="show_close_button">True</property>
+            <signal name="back" handler="on_display_back"/>
+          </object>
+          <packing>
+            <property name="name">display</property>
+          </packing>
+        </child>
       </object>
     </child>
   </template>
diff --git a/src/Makefile.am b/src/Makefile.am
index 9d0c1d7..35b4bf1 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -95,7 +95,6 @@ gnome_games_SOURCES = \
        ui/error-info-bar.vala \
        ui/game-icon-view.vala \
        ui/game-thumbnail.vala \
-       ui/header-bar.vala \
        ui/preferences-page.vala \
        ui/preferences-page-plugins.vala \
        ui/preferences-page-plugins-item.vala \
diff --git a/src/ui/application-window.vala b/src/ui/application-window.vala
index fe33cf3..3dc1215 100644
--- a/src/ui/application-window.vala
+++ b/src/ui/application-window.vala
@@ -10,8 +10,18 @@ private class Games.ApplicationWindow : Gtk.ApplicationWindow {
 
                        _ui_state = value;
 
-                       if (ui_state != UiState.COLLECTION)
+                       switch (ui_state) {
+                       case UiState.COLLECTION:
+                               header_bar.set_visible_child (collection_header_bar);
+
+                               break;
+                       case UiState.DISPLAY:
+                               header_bar.set_visible_child (display_header_bar);
+
                                search_mode = false;
+
+                               break;
+                       }
                }
                get { return _ui_state; }
        }
@@ -28,8 +38,11 @@ private class Games.ApplicationWindow : Gtk.ApplicationWindow {
        private Binding cb_search_binding;
 
        [GtkChild]
-       private HeaderBar header_bar;
-       private Binding hb_ui_binding;
+       private Gtk.Stack header_bar;
+       [GtkChild]
+       private CollectionHeaderBar collection_header_bar;
+       [GtkChild]
+       private DisplayHeaderBar display_header_bar;
        private Binding hb_search_binding;
 
        private HashTable<Game, Runner> runners;
@@ -46,18 +59,11 @@ private class Games.ApplicationWindow : Gtk.ApplicationWindow {
 
                cb_ui_binding = content_box.bind_property ("ui-state",
                                                           this, "ui-state", BindingFlags.BIDIRECTIONAL);
-               hb_ui_binding = header_bar.bind_property ("ui-state",
-                                                         this, "ui-state", BindingFlags.BIDIRECTIONAL);
 
                cb_search_binding = content_box.bind_property ("search-mode",
                                                               this, "search-mode", 
BindingFlags.BIDIRECTIONAL);
-               hb_search_binding = header_bar.bind_property ("search-mode",
-                                                             this, "search-mode", 
BindingFlags.BIDIRECTIONAL);
-
-               header_bar.display_back.connect (() => {
-                       if (quit_game ())
-                               ui_state = UiState.COLLECTION;
-               });
+               hb_search_binding = bind_property ("search-mode", collection_header_bar, "search-mode",
+                                                  BindingFlags.BIDIRECTIONAL);
        }
 
        public void run_game (Game game) {
@@ -124,6 +130,12 @@ private class Games.ApplicationWindow : Gtk.ApplicationWindow {
                run_game (game);
        }
 
+       [GtkCallback]
+       private void on_display_back () {
+               if (quit_game ())
+                       ui_state = UiState.COLLECTION;
+       }
+
        private void run_game_with_cancellable (Game game, Cancellable cancellable) {
                Runner runner = null;
                try {
@@ -136,7 +148,7 @@ private class Games.ApplicationWindow : Gtk.ApplicationWindow {
                        return;
                }
 
-               header_bar.game_title = game.name;
+               display_header_bar.game_title = game.name;
                content_box.runner = runner;
                ui_state = UiState.DISPLAY;
 
@@ -217,7 +229,6 @@ private class Games.ApplicationWindow : Gtk.ApplicationWindow {
 
        private bool cancel_quitting_game () {
                content_box.ui_state = ui_state;
-               header_bar.ui_state = ui_state;
 
                if (content_box.runner != null)
                        content_box.runner.resume ();


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