[gnome-games] ui: Save the fullscreen state in the gschema



commit cacb833fc9a44009b80ef8ecae406c32ab88fb75
Author: Adrien Plazas <kekun plazas laposte net>
Date:   Sun Feb 26 20:33:58 2017 +0100

    ui: Save the fullscreen state in the gschema
    
    Save whether the games shoud be in fullscreen or not in the gschema and
    retrieve this parameter to automatically set the games fullscreen.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=778236

 src/ui/application-window.vala |    9 +++++++++
 src/ui/display-header-bar.vala |    6 ++++++
 2 files changed, 15 insertions(+), 0 deletions(-)
---
diff --git a/src/ui/application-window.vala b/src/ui/application-window.vala
index 94e579d..afe526a 100644
--- a/src/ui/application-window.vala
+++ b/src/ui/application-window.vala
@@ -72,6 +72,8 @@ private class Games.ApplicationWindow : Gtk.ApplicationWindow {
        [GtkChild]
        private DisplayHeaderBar display_header_bar;
 
+       private Settings settings;
+
        private Binding box_search_binding;
        private Binding box_fullscreen_binding;
        private Binding header_bar_search_binding;
@@ -91,6 +93,8 @@ private class Games.ApplicationWindow : Gtk.ApplicationWindow {
        }
 
        construct {
+               settings = new Settings ("org.gnome.Games");
+
                box_search_binding = bind_property ("search-mode", collection_box, "search-mode",
                                                    BindingFlags.BIDIRECTIONAL);
                loading_notification_binding = bind_property ("loading-notification", collection_box, 
"loading-notification",
@@ -226,6 +230,8 @@ private class Games.ApplicationWindow : Gtk.ApplicationWindow {
                display_header_bar.media_set = runner.media_set;
                display_box.header_bar.media_set = runner.media_set;
 
+               is_fullscreen = settings.get_boolean ("fullscreen") && runner.can_fullscreen;
+
                bool resume = false;
                if (runner.can_resume)
                        resume = prompt_resume_with_cancellable (cancellable);
@@ -442,18 +448,21 @@ private class Games.ApplicationWindow : Gtk.ApplicationWindow {
                    (event.state & default_modifiers) == Gdk.ModifierType.CONTROL_MASK &&
                    display_header_bar.can_fullscreen) {
                        is_fullscreen = !is_fullscreen;
+                       settings.set_boolean ("fullscreen", is_fullscreen);
 
                        return true;
                }
 
                if (event.keyval == Gdk.Key.F11 && display_header_bar.can_fullscreen) {
                        is_fullscreen = !is_fullscreen;
+                       settings.set_boolean ("fullscreen", is_fullscreen);
 
                        return true;
                }
 
                if (event.keyval == Gdk.Key.Escape && display_header_bar.can_fullscreen) {
                        is_fullscreen = false;
+                       settings.set_boolean ("fullscreen", false);
 
                        return true;
                }
diff --git a/src/ui/display-header-bar.vala b/src/ui/display-header-bar.vala
index 9376da8..4657dff 100644
--- a/src/ui/display-header-bar.vala
+++ b/src/ui/display-header-bar.vala
@@ -29,7 +29,11 @@ private class Games.DisplayHeaderBar : Gtk.HeaderBar {
        [GtkChild]
        private Gtk.Button restore;
 
+       private Settings settings;
+
        construct {
+               settings = new Settings ("org.gnome.Games");
+
                media_selector = new MediaSelector ();
                media_selector.set_relative_to (media_button);
                media_button.set_popover (media_selector);
@@ -49,10 +53,12 @@ private class Games.DisplayHeaderBar : Gtk.HeaderBar {
        [GtkCallback]
        private void on_fullscreen_clicked () {
                is_fullscreen = true;
+               settings.set_boolean ("fullscreen", true);
        }
 
        [GtkCallback]
        private void on_restore_clicked () {
                is_fullscreen = false;
+               settings.set_boolean ("fullscreen", false);
        }
 }


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