[gnome-games] ui: Add fullscreen buttons to the display header bar
- From: Adrien Plazas <aplazas src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-games] ui: Add fullscreen buttons to the display header bar
- Date: Sun, 31 Jul 2016 07:40:21 +0000 (UTC)
commit a17690c2c655fde8d36796803b354907b9bd0a2d
Author: Adrien Plazas <kekun plazas laposte net>
Date: Sat Jul 30 18:04:27 2016 +0200
ui: Add fullscreen buttons to the display header bar
This finishes implementing fullscreen support.
https://bugzilla.gnome.org/show_bug.cgi?id=769329
data/ui/display-box.ui | 1 +
data/ui/display-header-bar.ui | 54 ++++++++++++++++++++++++++++++++++++++++
src/ui/application-window.vala | 5 +++
src/ui/display-box.vala | 3 ++
src/ui/display-header-bar.vala | 25 ++++++++++++++++++
5 files changed, 88 insertions(+), 0 deletions(-)
---
diff --git a/data/ui/display-box.ui b/data/ui/display-box.ui
index 6ed51d7..c056305 100644
--- a/data/ui/display-box.ui
+++ b/data/ui/display-box.ui
@@ -21,6 +21,7 @@
<property name="vexpand">False</property>
<property name="transition-type">slide-down</property>
<property name="events">GDK_POINTER_MOTION_MASK</property>
+ <signal name="notify::is-fullscreen" handler="on_fullscreen_changed"/>
<signal name="motion-notify-event" handler="on_motion_event"/>
<child>
<object class="GamesDisplayHeaderBar" id="fullscreen_header_bar">
diff --git a/data/ui/display-header-bar.ui b/data/ui/display-header-bar.ui
index b3824d7..67d00af 100644
--- a/data/ui/display-header-bar.ui
+++ b/data/ui/display-header-bar.ui
@@ -5,6 +5,8 @@
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="title" translatable="yes">Games</property>
+ <signal name="notify::is-fullscreen" handler="on_fullscrren_changed"/>
+ <signal name="notify::can-fullscreen" handler="on_fullscrren_changed"/>
<child>
<object class="GtkButton" id="back">
<property name="visible">True</property>
@@ -28,5 +30,57 @@
</child>
</object>
</child>
+ <child>
+ <object class="GtkButton" id="fullscreen">
+ <property name="visible">False</property>
+ <property name="valign">center</property>
+ <property name="use-underline">True</property>
+ <signal name="clicked" handler="on_fullscreen_clicked"/>
+ <style>
+ <class name="image-button"/>
+ </style>
+ <child internal-child="accessible">
+ <object class="AtkObject" id="a11y-fullscreen">
+ <property name="accessible-name" translatable="yes">Fullscreen</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkImage" id="fullscreen_image">
+ <property name="visible">True</property>
+ <property name="icon-name">view-fullscreen-symbolic</property>
+ <property name="icon-size">1</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="pack-type">end</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="restore">
+ <property name="visible">False</property>
+ <property name="valign">center</property>
+ <property name="use-underline">True</property>
+ <signal name="clicked" handler="on_restore_clicked"/>
+ <style>
+ <class name="image-button"/>
+ </style>
+ <child internal-child="accessible">
+ <object class="AtkObject" id="a11y-restore">
+ <property name="accessible-name" translatable="yes">Restore</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkImage" id="restore_image">
+ <property name="visible">True</property>
+ <property name="icon-name">view-restore-symbolic</property>
+ <property name="icon-size">1</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="pack-type">end</property>
+ </packing>
+ </child>
</template>
</interface>
diff --git a/src/ui/application-window.vala b/src/ui/application-window.vala
index 138f044..fb8bbd7 100644
--- a/src/ui/application-window.vala
+++ b/src/ui/application-window.vala
@@ -71,6 +71,7 @@ private class Games.ApplicationWindow : Gtk.ApplicationWindow {
private Binding box_search_binding;
private Binding box_fullscreen_binding;
private Binding header_bar_search_binding;
+ private Binding header_bar_fullscreen_binding;
private HashTable<Game, Runner> runners;
@@ -91,6 +92,8 @@ private class Games.ApplicationWindow : Gtk.ApplicationWindow {
box_fullscreen_binding = bind_property ("is-fullscreen", display_box, "is-fullscreen",
BindingFlags.BIDIRECTIONAL);
+ header_bar_fullscreen_binding = bind_property ("is-fullscreen", display_header_bar,
"is-fullscreen",
+ BindingFlags.BIDIRECTIONAL);
}
public void run_game (Game game) {
@@ -183,7 +186,9 @@ private class Games.ApplicationWindow : Gtk.ApplicationWindow {
}
display_header_bar.game_title = game.name;
+ display_header_bar.can_fullscreen = runner.can_fullscreen;
display_box.header_bar.game_title = game.name;
+ display_box.header_bar.can_fullscreen = runner.can_fullscreen;
display_box.runner = runner;
ui_state = UiState.DISPLAY;
diff --git a/src/ui/display-box.vala b/src/ui/display-box.vala
index 3744da1..8f9b462 100644
--- a/src/ui/display-box.vala
+++ b/src/ui/display-box.vala
@@ -34,12 +34,15 @@ private class Games.DisplayBox : Gtk.EventBox {
[GtkChild]
private DisplayHeaderBar fullscreen_header_bar;
private Binding visible_binding;
+ private Binding fullscreen_binding;
private long timeout_id;
construct {
visible_binding = bind_property ("is-fullscreen", fullscreen_header_bar_revealer, "visible",
BindingFlags.BIDIRECTIONAL);
+ fullscreen_binding = bind_property ("is-fullscreen", fullscreen_header_bar, "is-fullscreen",
+ BindingFlags.BIDIRECTIONAL);
timeout_id = -1;
}
diff --git a/src/ui/display-header-bar.vala b/src/ui/display-header-bar.vala
index 69b4bdd..85863b8 100644
--- a/src/ui/display-header-bar.vala
+++ b/src/ui/display-header-bar.vala
@@ -8,8 +8,33 @@ private class Games.DisplayHeaderBar : Gtk.HeaderBar {
set { title = value; }
}
+ public bool can_fullscreen { set; get; }
+ public bool is_fullscreen { set; get; }
+
+ [GtkChild]
+ private Gtk.Button fullscreen;
+
+ [GtkChild]
+ private Gtk.Button restore;
+
+ [GtkCallback]
+ private void on_fullscrren_changed () {
+ fullscreen.visible = can_fullscreen && !is_fullscreen;
+ restore.visible = can_fullscreen && is_fullscreen;
+ }
+
[GtkCallback]
private void on_back_clicked () {
back ();
}
+
+ [GtkCallback]
+ private void on_fullscreen_clicked () {
+ is_fullscreen = true;
+ }
+
+ [GtkCallback]
+ private void on_restore_clicked () {
+ is_fullscreen = false;
+ }
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]