From c29ae81b17391a0dc68f58535b333000329ff016 Mon Sep 17 00:00:00 2001 From: Romain Vigier Date: Tue, 16 Aug 2022 02:16:35 +0200 Subject: [PATCH] Timer: Remove on-demand timer --- ....extensions.nightthemeswitcher.gschema.xml | 19 -- src/data/ui/SchedulePage.ui | 45 +--- src/meson.build | 1 - src/modules/Timer.js | 104 +++++--- src/modules/TimerOndemand.js | 250 ------------------ src/po/POTFILES | 1 - src/po/nightthemeswitcher@romainvigier.fr.pot | 112 ++------ src/preferences/SchedulePage.js | 31 +-- 8 files changed, 98 insertions(+), 465 deletions(-) delete mode 100644 src/modules/TimerOndemand.js diff --git a/src/data/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml b/src/data/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml index 5d953b0..a133d13 100644 --- a/src/data/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml +++ b/src/data/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml @@ -70,31 +70,12 @@ SPDX-License-Identifier: GPL-3.0-or-later - "schedule" - - false - - - - - - - "day" - t']]]> - - - - - - - "panel" - false diff --git a/src/data/ui/SchedulePage.ui b/src/data/ui/SchedulePage.ui index f0c6905..d047b60 100644 --- a/src/data/ui/SchedulePage.ui +++ b/src/data/ui/SchedulePage.ui @@ -28,18 +28,6 @@ SPDX-License-Identifier: GPL-3.0-or-later - - - Always show on-demand controls - Allows you to override the current time when using a schedule. - always_show_ondemand_switch - - - center - - - - @@ -57,6 +45,17 @@ SPDX-License-Identifier: GPL-3.0-or-later + + + Keyboard shortcut + keyboard_shortcut_button + + + center + + + + Manual schedule @@ -87,28 +86,6 @@ SPDX-License-Identifier: GPL-3.0-or-later - - - On-demand - These settings only apply when using the on-demand time source. - - - Keyboard shortcut - ondemand_shortcut_button - - - center - - - - - - - Button location - - - - diff --git a/src/meson.build b/src/meson.build index 2178d9f..2f18f98 100644 --- a/src/meson.build +++ b/src/meson.build @@ -36,7 +36,6 @@ modules = [ 'modules/Timer.js', 'modules/TimerLocation.js', 'modules/TimerNightlight.js', - 'modules/TimerOndemand.js', 'modules/TimerSchedule.js', ] preferences = [ diff --git a/src/modules/Timer.js b/src/modules/Timer.js index fcc94ca..acb3683 100644 --- a/src/modules/Timer.js +++ b/src/modules/Timer.js @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: 2020-2022 Romain Vigier // SPDX-License-Identifier: GPL-3.0-or-later -const { Gio } = imports.gi; +const { Gio, Meta, Shell } = imports.gi; const { extensionUtils } = imports.misc; const Signals = imports.signals; @@ -15,7 +15,6 @@ const { Time } = Me.imports.enums.Time; const { TimerNightlight } = Me.imports.modules.TimerNightlight; const { TimerLocation } = Me.imports.modules.TimerLocation; const { TimerSchedule } = Me.imports.modules.TimerSchedule; -const { TimerOndemand } = Me.imports.modules.TimerOndemand; /** @@ -40,9 +39,10 @@ var Timer = class { #locationSettings; #time; - #sources = []; + #source = null; + #sourceConnectionId = null; + #previousKeybinding = null; #settingsConnections = []; - #timeConnections = []; constructor() { this.#settings = extensionUtils.getSettings(`${Me.metadata['settings-schema']}.time`); @@ -55,16 +55,18 @@ var Timer = class { enable() { debug.message('Enabling Timer...'); this.#connectSettings(); - this.#createSources(); - this.#connectSources(); - this.#enableSources(); + this.#createSource(); + this.#connectSource(); + this.#enableSource(); + this.#addKeybinding(); debug.message('Timer enabled.'); } disable() { debug.message('Disabling Timer...'); + this.#removeKeybinding(); this.#disconnectSources(); - this.#disableSources(); + this.#disableSource(); this.#disconnectSettings(); debug.message('Timer disabled.'); } @@ -96,18 +98,14 @@ var Timer = class { settings: this.#locationSettings, id: this.#locationSettings.connect('changed::enabled', this.#onSourceChanged.bind(this)), }); - this.#settingsConnections.push({ - settings: this.#settings, - id: this.#settings.connect('changed::manual-time-source', this.#onSourceChanged.bind(this)), - }); - this.#settingsConnections.push({ - settings: this.#settings, - id: this.#settings.connect('changed::always-enable-ondemand', this.#onSourceChanged.bind(this)), - }); this.#settingsConnections.push({ settings: this.#settings, id: this.#settings.connect('changed::time-source', this.#onTimeSourceChanged.bind(this)), }); + this.#settingsConnections.push({ + settings: this.#settings, + id: this.#settings.connect('changed::nightthemeswitcher-ondemand-keybinding', this.#onOndemandKeybindingChanged.bind(this)), + }); this.#settingsConnections.push({ settings: this.#interfaceSettings, id: this.#interfaceSettings.connect('changed::color-scheme', this.#onColorSchemeChanged.bind(this)), @@ -120,48 +118,41 @@ var Timer = class { debug.message('Disconnected Timer from settings.'); } - #createSources() { + #createSource() { const source = this.#getSource(); switch (source) { case 'nightlight': - this.#sources.push(new TimerNightlight()); + this.#source = new TimerNightlight(); break; case 'location': - this.#sources.push(new TimerLocation()); + this.#source = new TimerLocation(); break; case 'schedule': - this.#sources.push(new TimerSchedule()); - break; - case 'ondemand': - this.#sources.push(new TimerOndemand({ timer: this })); + this.#source = new TimerSchedule(); break; } - - if (this.#settings.get_boolean('always-enable-ondemand') && ['nightlight', 'location', 'schedule'].includes(source)) - this.#sources.unshift(new TimerOndemand({ timer: this })); } - #enableSources() { - this.#sources.forEach(source => source.enable()); + #enableSource() { + this.#source.enable(); } - #disableSources() { - this.#sources.forEach(source => source.disable()); - this.#sources = []; + #disableSource() { + if (this.#source) + this.#source.disable(); + this.#source = null; } - #connectSources() { - debug.message('Connecting to time sources...'); - this.#sources.forEach(source => this.#timeConnections.push({ - source, - id: source.connect('time-changed', this.#onTimeChanged.bind(this)), - })); + #connectSource() { + debug.message('Connecting to time source...'); + this.#sourceConnectionId = this.#source.connect('time-changed', this.#onTimeChanged.bind(this)); } - #disconnectSources() { - this.#timeConnections.forEach(connection => connection.source.disconnect(connection.id)); - this.#timeConnections = []; - debug.message('Disconnected from time sources.'); + #disconnectSource() { + if (this.#sourceConnectionId && this.#source) + this.#source.disconnect(this.#sourceConnectionId); + this.#sourceConnectionId = null; + debug.message('Disconnected from time source.'); } @@ -175,6 +166,11 @@ var Timer = class { this.#onSourceChanged(); } + #onOndemandKeybindingChanged() { + this.#removeKeybinding(); + this.#addKeybinding(); + } + #onTimeChanged(_source, newTime) { this.time = newTime; } @@ -211,5 +207,31 @@ var Timer = class { } return source; } + + + #addKeybinding() { + this.#previousKeybinding = this.#settings.get_strv('nightthemeswitcher-ondemand-keybinding')[0]; + if (!this.#settings.get_strv('nightthemeswitcher-ondemand-keybinding')[0]) + return; + debug.message('Adding keybinding...'); + main.wm.addKeybinding( + 'nightthemeswitcher-ondemand-keybinding', + this.#settings, + Meta.KeyBindingFlags.IGNORE_AUTOREPEAT, + Shell.ActionMode.NORMAL | Shell.ActionMode.OVERVIEW, + () => { + this.time = this.time === Time.NIGHT ? Time.DAY : Time.NIGHT; + } + ); + debug.message('Added keybinding.'); + } + + #removeKeybinding() { + if (this.#previousKeybinding) { + debug.message('Removing keybinding...'); + main.wm.removeKeybinding('nightthemeswitcher-ondemand-keybinding'); + debug.message('Removed keybinding.'); + } + } }; Signals.addSignalMethods(Timer.prototype); diff --git a/src/modules/TimerOndemand.js b/src/modules/TimerOndemand.js deleted file mode 100644 index bf2dbca..0000000 --- a/src/modules/TimerOndemand.js +++ /dev/null @@ -1,250 +0,0 @@ -// SPDX-FileCopyrightText: 2020-2022 Romain Vigier -// SPDX-License-Identifier: GPL-3.0-or-later - -const { Clutter, Gio, GLib, GObject, Meta, Shell, St } = imports.gi; -const { extensionUtils } = imports.misc; -const Signals = imports.signals; - -const { main } = imports.ui; - -const { Button: PanelMenuButton } = imports.ui.panelMenu; -const { PopupMenuItem, PopupSubMenuMenuItem } = imports.ui.popupMenu; - -const Me = extensionUtils.getCurrentExtension(); -const _ = extensionUtils.gettext; - -const debug = Me.imports.debug; -const utils = Me.imports.utils; - -const { Time } = Me.imports.enums.Time; - -/** - * The On-demand Timer allows the user to manually switch between the day and - * night variants with a button in the top bar and a keybinding. - * - * The user can change the key combination in the extension's preferences. - */ -var TimerOndemand = class { - #timer; - #settings; - - #settingsConnections = []; - #button = null; - #previousKeybinding = null; - #timerConnection = null; - - constructor({ timer }) { - this.#timer = timer; - this.#settings = extensionUtils.getSettings(`${Me.metadata['settings-schema']}.time`); - } - - enable() { - debug.message('Enabling On-demand Timer...'); - this.#connectSettings(); - this.#addKeybinding(); - this.#addButton(); - this.#connectTimer(); - this.emit('time-changed', this.time); - debug.message('On-demand Timer enabled.'); - } - - disable() { - debug.message('Disabling On-demand Timer...'); - this.#disconnectTimer(); - this.#removeKeybinding(); - this.#removeButton(); - this.#disconnectSettings(); - debug.message('On-demand Timer disabled.'); - } - - - get time() { - return this.#settings.get_string('ondemand-time') === 'day' ? Time.DAY : Time.NIGHT; - } - - - #connectSettings() { - debug.message('Connecting On-demand Timer to settings...'); - this.#settingsConnections.push({ - settings: this.#settings, - id: this.#settings.connect('changed::ondemand-time', this.#onOndemandTimeChanged.bind(this)), - }); - this.#settingsConnections.push({ - settings: this.#settings, - id: this.#settings.connect('changed::nightthemeswitcher-ondemand-keybinding', this.#onOndemandKeybindingChanged.bind(this)), - }); - this.#settingsConnections.push({ - settings: this.#settings, - id: this.#settings.connect('changed::ondemand-button-placement', this.#onOndemandButtonPlacementChanged.bind(this)), - }); - } - - #disconnectSettings() { - debug.message('Disconnecting On-demand Timer from settings...'); - this.#settingsConnections.forEach(connection => connection.settings.disconnect(connection.id)); - this.#settingsConnections = []; - } - - #connectTimer() { - debug.message('Connecting On-demand Timer to Timer...'); - this.#timerConnection = this.#timer.connect('time-changed', this.#onTimeChanged.bind(this)); - } - - #disconnectTimer() { - if (this.#timerConnection) { - this.#timer.disconnect(this.#timerConnection); - this.#timerConnection = null; - } - debug.message('Disconnected On-demand Timer from Timer.'); - } - - - #onOndemandTimeChanged() { - this.emit('time-changed', this.time); - } - - #onOndemandKeybindingChanged() { - this.#removeKeybinding(); - this.#addKeybinding(); - } - - #onOndemandButtonPlacementChanged() { - this.#removeButton(); - this.#addButton(); - } - - #onTimeChanged(_timer, _newTime) { - this.#settings.set_string('ondemand-time', this.#timer.time); - this.#updateButton(); - } - - - #addKeybinding() { - this.#previousKeybinding = this.#settings.get_strv('nightthemeswitcher-ondemand-keybinding')[0]; - if (!this.#settings.get_strv('nightthemeswitcher-ondemand-keybinding')[0]) - return; - debug.message('Adding On-demand Timer keybinding...'); - main.wm.addKeybinding( - 'nightthemeswitcher-ondemand-keybinding', - this.#settings, - Meta.KeyBindingFlags.IGNORE_AUTOREPEAT, - Shell.ActionMode.NORMAL | Shell.ActionMode.OVERVIEW, - this.#toggleTime.bind(this) - ); - debug.message('Added On-demand Timer keybinding.'); - } - - #removeKeybinding() { - if (this.#previousKeybinding) { - debug.message('Removing On-demand Timer keybinding...'); - main.wm.removeKeybinding('nightthemeswitcher-ondemand-keybinding'); - debug.message('Removed On-demand Timer keybinding.'); - } - } - - #addButton() { - switch (this.#settings.get_string('ondemand-button-placement')) { - case 'panel': - this.#addButtonToPanel(); - break; - case 'menu': - this.#addButtonToMenu(); - } - } - - #removeButton() { - if (this.#button) { - debug.message('Removing On-demand Timer button...'); - this.#button.destroy(); - this.#button = null; - debug.message('Removed On-demand Timer button.'); - } - } - - #updateButton() { - if (this.#button) { - debug.message('Updating On-demand Timer button state...'); - this.#button.update(); - debug.message('Updated On-demand Timer button state.'); - } - } - - #addButtonToPanel() { - debug.message('Adding On-demand Timer button to the panel...'); - this.#button = new NtsPanelMenuButton({ timer: this.#timer, toggleCallback: this.#toggleTime.bind(this) }); - main.panel.addToStatusArea('NightThemeSwitcherButton', this.#button); - debug.message('Added On-demand Timer button to the panel.'); - } - - #addButtonToMenu() { - debug.message('Adding On-demand Timer button to the menu...'); - const aggregateMenu = main.panel.statusArea.aggregateMenu; - const position = utils.findShellAggregateMenuItemPosition(aggregateMenu._system.menu) - 1; - this.#button = new NtsPopupSubMenuMenuItem({ timer: this.#timer, toggleCallback: this.#toggleTime.bind(this) }); - aggregateMenu.menu.addMenuItem(this.#button, position); - debug.message('Added On-demand Timer button to the menu.'); - } - - #toggleTime() { - this.#settings.set_string('ondemand-time', this.#timer.time === Time.DAY ? Time.NIGHT : Time.DAY); - this.emit('time-changed', this.time); - } -}; -Signals.addSignalMethods(TimerOndemand.prototype); - -var NtsPanelMenuButton = GObject.registerClass( - class NtsPanelMenuButton extends PanelMenuButton { - #timer; - - constructor({ timer, toggleCallback }) { - super(0.0); - this.#timer = timer; - this.icon = new St.Icon({ - style_class: 'system-status-icon', - }); - this.add_child(this.icon); - this.connect('button-press-event', () => toggleCallback()); - this.connect('touch-event', () => toggleCallback()); - this.update(); - } - - update() { - this.icon.icon_name = _getIconNameForTime(this.#timer.time); - this.icon.fallback_gicon = _getGiconForTime(this.#timer.time); - this.accessible_name = this.#timer.time === Time.DAY ? _('Turn Night Mode On') : _('Turn Night Mode Off'); - } - } -); - -var NtsPopupSubMenuMenuItem = GObject.registerClass( - class NtsPopupSubMenuMenuItem extends PopupSubMenuMenuItem { - #timer; - - constructor({ timer, toggleCallback }) { - super('', true); - this.#timer = timer; - this._toggleItem = new PopupMenuItem(''); - this._toggleItem.connect('activate', () => toggleCallback()); - this.menu.addMenuItem(this._toggleItem); - this._prefsItem = new PopupMenuItem(_('Extension Settings')); - this._prefsItem.connect('activate', () => main.extensionManager.openExtensionPrefs(Me.uuid, '', [])); - this.menu.addMenuItem(this._prefsItem); - this.update(); - } - - update() { - this.icon.icon_name = _getIconNameForTime(this.#timer.time); - this.icon.fallback_gicon = _getGiconForTime(this.#timer.time); - this.label.text = this.#timer.time === Time.DAY ? _('Night Mode Off') : _('Night Mode On'); - this._toggleItem.label.text = this.#timer.time === Time.DAY ? _('Turn On') : _('Turn Off'); - } - } -); - -var _getIconNameForTime = time => { - return time === Time.DAY ? 'nightthemeswitcher-ondemand-off-symbolic' : 'nightthemeswitcher-ondemand-on-symbolic'; -}; - -var _getGiconForTime = time => { - return Gio.icon_new_for_string(GLib.build_filenamev([Me.path, 'icons', 'hicolor', 'scalable', 'status', `${this._getIconNameForTime(time)}.svg`])); -}; diff --git a/src/po/POTFILES b/src/po/POTFILES index 7a17d52..bc0cbd2 100644 --- a/src/po/POTFILES +++ b/src/po/POTFILES @@ -25,7 +25,6 @@ src/modules/SwitcherTheme.js src/modules/Timer.js src/modules/TimerLocation.js src/modules/TimerNightlight.js -src/modules/TimerOndemand.js src/modules/TimerSchedule.js src/preferences/BackgroundButton.js diff --git a/src/po/nightthemeswitcher@romainvigier.fr.pot b/src/po/nightthemeswitcher@romainvigier.fr.pot index 1898da7..a0b9e97 100644 --- a/src/po/nightthemeswitcher@romainvigier.fr.pot +++ b/src/po/nightthemeswitcher@romainvigier.fr.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: nightthemeswitcher@romainvigier.fr\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-07-29 10:53+0200\n" +"POT-Creation-Date: 2022-08-16 02:16+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -50,7 +50,7 @@ msgstr "" msgid "Run commands" msgstr "" -#: src/data/ui/CommandsPage.ui:21 src/data/ui/SchedulePage.ui:84 +#: src/data/ui/CommandsPage.ui:21 src/data/ui/SchedulePage.ui:65 msgid "Sunrise" msgstr "" @@ -59,7 +59,7 @@ msgstr "" msgid "notify-send \"Hello sunshine!\"" msgstr "" -#: src/data/ui/CommandsPage.ui:35 src/data/ui/SchedulePage.ui:96 +#: src/data/ui/CommandsPage.ui:35 src/data/ui/SchedulePage.ui:77 msgid "Sunset" msgstr "" @@ -103,67 +103,29 @@ msgstr "" msgid "Time source" msgstr "" -#: src/data/ui/SchedulePage.ui:33 -msgid "Always show on-demand controls" -msgstr "" - -#: src/data/ui/SchedulePage.ui:34 -msgid "Allows you to override the current time when using a schedule." -msgstr "" - -#: src/data/ui/SchedulePage.ui:47 +#: src/data/ui/SchedulePage.ui:35 msgid "Advanced" msgstr "" -#: src/data/ui/SchedulePage.ui:50 +#: src/data/ui/SchedulePage.ui:38 msgid "Transition" msgstr "" -#: src/data/ui/SchedulePage.ui:51 +#: src/data/ui/SchedulePage.ui:39 msgid "Smooth transition between day and night appearance." msgstr "" -#: src/data/ui/SchedulePage.ui:62 src/preferences/SchedulePage.js:43 -msgid "Night Light" -msgstr "" - -#: src/data/ui/SchedulePage.ui:63 -msgid "These settings only apply when Night Light is the time source." -msgstr "" - -#: src/data/ui/SchedulePage.ui:66 -msgid "Follow Disable until tomorrow" -msgstr "" - -#: src/data/ui/SchedulePage.ui:67 -msgid "" -"When Night Light is temporarily disabled, the extension will switch to day " -"variants." -msgstr "" - -#: src/data/ui/SchedulePage.ui:80 src/preferences/SchedulePage.js:56 -msgid "Manual schedule" -msgstr "" - -#: src/data/ui/SchedulePage.ui:81 -msgid "" -"These settings only apply when using the manual schedule as the time source." -msgstr "" - -#: src/data/ui/SchedulePage.ui:110 src/preferences/SchedulePage.js:57 -msgid "On-demand" -msgstr "" - -#: src/data/ui/SchedulePage.ui:111 -msgid "These settings only apply when using the on-demand time source." -msgstr "" - -#: src/data/ui/SchedulePage.ui:114 +#: src/data/ui/SchedulePage.ui:50 msgid "Keyboard shortcut" msgstr "" -#: src/data/ui/SchedulePage.ui:125 -msgid "Button location" +#: src/data/ui/SchedulePage.ui:61 src/preferences/SchedulePage.js:51 +msgid "Manual schedule" +msgstr "" + +#: src/data/ui/SchedulePage.ui:62 +msgid "" +"These settings only apply when using the manual schedule as the time source." msgstr "" #: src/data/ui/ShortcutButton.ui:15 @@ -225,34 +187,6 @@ msgstr "" msgid ":" msgstr "" -#: src/modules/TimerOndemand.js:214 -msgid "Turn Night Mode Off" -msgstr "" - -#: src/modules/TimerOndemand.js:214 -msgid "Turn Night Mode On" -msgstr "" - -#: src/modules/TimerOndemand.js:229 -msgid "Extension Settings" -msgstr "" - -#: src/modules/TimerOndemand.js:238 -msgid "Night Mode Off" -msgstr "" - -#: src/modules/TimerOndemand.js:238 -msgid "Night Mode On" -msgstr "" - -#: src/modules/TimerOndemand.js:239 -msgid "Turn Off" -msgstr "" - -#: src/modules/TimerOndemand.js:239 -msgid "Turn On" -msgstr "" - #: src/preferences/BackgroundButton.js:69 msgid "Only JPEG, PNG, TIFF, SVG and XML files can be set as background image." msgstr "" @@ -262,22 +196,14 @@ msgstr "" msgid "Version %d" msgstr "" -#: src/preferences/SchedulePage.js:48 +#: src/preferences/SchedulePage.js:39 +msgid "Night Light" +msgstr "" + +#: src/preferences/SchedulePage.js:43 msgid "Location Services" msgstr "" -#: src/preferences/SchedulePage.js:90 -msgid "None" -msgstr "" - -#: src/preferences/SchedulePage.js:91 -msgid "Top bar" -msgstr "" - -#: src/preferences/SchedulePage.js:92 -msgid "System menu" -msgstr "" - #: src/preferences/ThemesPage.js:50 msgid "Default" msgstr "" diff --git a/src/preferences/SchedulePage.js b/src/preferences/SchedulePage.js index 65441e4..9763348 100644 --- a/src/preferences/SchedulePage.js +++ b/src/preferences/SchedulePage.js @@ -16,14 +16,12 @@ var SchedulePage = GObject.registerClass({ GTypeName: 'SchedulePage', Template: 'resource:///org/gnome/shell/extensions/nightthemeswitcher/preferences/ui/SchedulePage.ui', InternalChildren: [ + 'keyboard_shortcut_button', 'transition_switch', 'manual_time_source_switch', 'time_source_combo_row', - 'always_show_ondemand_switch', 'schedule_sunrise_time_chooser', 'schedule_sunset_time_chooser', - 'ondemand_shortcut_button', - 'ondemand_button_location_combo_row', ], }, class SchedulePage extends Adw.PreferencesPage { constructor(props = {}) { @@ -51,7 +49,6 @@ var SchedulePage = GObject.registerClass({ nightlightChoice, locationChoice, new DropDownChoice({ id: 'schedule', title: _('Manual schedule') }), - new DropDownChoice({ id: 'ondemand', title: _('On-demand') }), ]); this._time_source_combo_row.model = new Gtk.FilterListModel({ @@ -67,33 +64,15 @@ var SchedulePage = GObject.registerClass({ settings.connect('changed::time-source', () => updateTimeSourceComboRowState()); updateTimeSourceComboRowState(); - settings.bind('always-enable-ondemand', this._always_show_ondemand_switch, 'active', Gio.SettingsBindFlags.DEFAULT); - settings.bind('schedule-sunrise', this._schedule_sunrise_time_chooser, 'time', Gio.SettingsBindFlags.DEFAULT); settings.bind('schedule-sunset', this._schedule_sunset_time_chooser, 'time', Gio.SettingsBindFlags.DEFAULT); settings.connect('changed::nightthemeswitcher-ondemand-keybinding', () => { - this._ondemand_shortcut_button.keybinding = settings.get_strv('nightthemeswitcher-ondemand-keybinding')[0]; + this._keyboard_shortcut_button.keybinding = settings.get_strv('nightthemeswitcher-ondemand-keybinding')[0]; }); - this._ondemand_shortcut_button.connect('notify::keybinding', () => { - settings.set_strv('nightthemeswitcher-ondemand-keybinding', [this._ondemand_shortcut_button.keybinding]); + this._keyboard_shortcut_button.connect('notify::keybinding', () => { + settings.set_strv('nightthemeswitcher-ondemand-keybinding', [this._keyboard_shortcut_button.keybinding]); }); - this._ondemand_shortcut_button.keybinding = settings.get_strv('nightthemeswitcher-ondemand-keybinding')[0]; - - const ondemandButtonLocations = Gio.ListStore.new(DropDownChoice); - ondemandButtonLocations.splice(0, 0, [ - new DropDownChoice({ id: 'none', title: _('None') }), - new DropDownChoice({ id: 'panel', title: _('Top bar') }), - new DropDownChoice({ id: 'menu', title: _('System menu') }), - ]); - - this._ondemand_button_location_combo_row.model = ondemandButtonLocations; - this._ondemand_button_location_combo_row.expression = Gtk.PropertyExpression.new(DropDownChoice, null, 'title'); - this._ondemand_button_location_combo_row.connect('notify::selected-item', () => settings.set_string('ondemand-button-placement', this._ondemand_button_location_combo_row.selected_item.id)); - const updateOndemandButtonLocationComboRowSelected = () => { - this._ondemand_button_location_combo_row.selected = utils.findItemPositionInModel(this._ondemand_button_location_combo_row.model, item => item.id === settings.get_string('ondemand-button-placement')); - }; - settings.connect('changed::ondemand-button-placement', () => updateOndemandButtonLocationComboRowSelected()); - updateOndemandButtonLocationComboRowSelected(); + this._keyboard_shortcut_button.keybinding = settings.get_strv('nightthemeswitcher-ondemand-keybinding')[0]; } });