[gnome-documents] mainToolbar: Add fullscreen and nightmode to toolbar



commit a36a7dd38afebce181a5ec9cc7c9d57a65496e2b
Author: Bastien Nocera <hadess hadess net>
Date:   Tue May 31 22:08:52 2016 +0200

    mainToolbar: Add fullscreen and nightmode to toolbar
    
    For gnome-books.
    
    This also changes the fullscreen action to a stateful one, which is
    useful for multi-screen setups, where the app menu is still visible even
    with the window fullscreened.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=767103

 src/application.js |    8 ++++++--
 src/mainToolbar.js |   28 ++++++++++++++++++++++++++++
 src/preview.js     |    4 ++++
 src/windowMode.js  |    4 ----
 4 files changed, 38 insertions(+), 6 deletions(-)
---
diff --git a/src/application.js b/src/application.js
index aee1777..f7a7e75 100644
--- a/src/application.js
+++ b/src/application.js
@@ -231,8 +231,11 @@ const Application = new Lang.Class({
         settings.set_value('night-mode', GLib.Variant.new('b', !state.get_boolean()));
     },
 
-    _onActionFullscreen: function() {
-        modeController.toggleFullscreen();
+    _onActionFullscreen: function(action) {
+        let state = action.get_state();
+        let newState = !state.get_boolean();
+        action.change_state(GLib.Variant.new('b', newState));
+        modeController.setFullscreen(newState);
     },
 
     _onActionViewAs: function(action, parameter) {
@@ -539,6 +542,7 @@ const Application = new Lang.Class({
               accels: ['F1'] },
             { name: 'fullscreen',
               callback: this._onActionFullscreen,
+              state: GLib.Variant.new('b', false),
               create_hook: this._fullscreenCreateHook,
               accels: ['F11'],
               window_mode: WindowMode.WindowMode.PREVIEW },
diff --git a/src/mainToolbar.js b/src/mainToolbar.js
index 6bc98f7..e8d2cb8 100644
--- a/src/mainToolbar.js
+++ b/src/mainToolbar.js
@@ -90,6 +90,34 @@ const MainToolbar = new Lang.Class({
         return searchButton;
     },
 
+    _onFullscreenStateChanged: function() {
+        let state = Application.application.get_action_state('fullscreen');
+        if (state.get_boolean())
+            this._fullscreenButton.image.icon_name ='view-restore-symbolic';
+        else
+            this._fullscreenButton.image.icon_name ='view-fullscreen-symbolic';
+    },
+
+    addFullscreenButton: function() {
+        let fullscreenButton = new Gtk.Button({ image: new Gtk.Image ({ icon_name: 
'view-fullscreen-symbolic' }),
+                                                tooltip_text: _("Fullscreen"),
+                                                action_name: 'app.fullscreen' });
+        this.toolbar.pack_end(fullscreenButton);
+        Application.application.connect('action-state-changed::fullscreen',
+            Lang.bind(this, this._onFullscreenStateChanged));
+        this._fullscreenButton = fullscreenButton;
+        this._onFullscreenStateChanged();
+        return fullscreenButton;
+    },
+
+    addNightmodeButton: function() {
+        let nightmodeButton = new Gtk.ToggleButton({ image: new Gtk.Image ({ icon_name: 
'display-brightness-symbolic' }),
+                                                     tooltip_text: _("Night Mode"),
+                                                     action_name: 'app.night-mode' });
+        this.toolbar.pack_end(nightmodeButton);
+        return nightmodeButton;
+    },
+
     addBackButton: function() {
         let backButton = new Gtk.Button({ image: new Gtk.Image({ icon_name: 'go-previous-symbolic' }),
                                           tooltip_text: _("Back") });
diff --git a/src/preview.js b/src/preview.js
index e882710..2d02997 100644
--- a/src/preview.js
+++ b/src/preview.js
@@ -873,6 +873,10 @@ const PreviewToolbar = new Lang.Class({
 
         // search button, on the right of the toolbar
         this.addSearchButton();
+        if (Application.application.isBooks) {
+            this.addFullscreenButton();
+            this.addNightmodeButton();
+        }
 
         this._setToolbarTitle();
         this.toolbar.show_all();
diff --git a/src/windowMode.js b/src/windowMode.js
index ab65d10..b70afc5 100644
--- a/src/windowMode.js
+++ b/src/windowMode.js
@@ -103,10 +103,6 @@ const ModeController = new Lang.Class({
         this.emit('fullscreen-changed', this._fullscreen);
     },
 
-    toggleFullscreen: function() {
-        this.setFullscreen(!this._fullscreen);
-    },
-
     getFullscreen: function() {
         return this._fullscreen;
     },


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