Timer: Remove on-demand timer
This commit is contained in:
@@ -70,31 +70,12 @@ SPDX-License-Identifier: GPL-3.0-or-later
|
||||
<choice value="nightlight"/>
|
||||
<choice value="location"/>
|
||||
<choice value="schedule"/>
|
||||
<choice value="ondemand"/>
|
||||
</choices>
|
||||
<default>"schedule"</default>
|
||||
</key>
|
||||
<key name="always-enable-ondemand" type="b">
|
||||
<default>false</default>
|
||||
</key>
|
||||
<key name="ondemand-time" type="s">
|
||||
<choices>
|
||||
<choice value="day"/>
|
||||
<choice value="night"/>
|
||||
</choices>
|
||||
<default>"day"</default>
|
||||
</key>
|
||||
<key name="nightthemeswitcher-ondemand-keybinding" type="as">
|
||||
<default><![CDATA[['<Shift><Super>t']]]></default>
|
||||
</key>
|
||||
<key name="ondemand-button-placement" type="s">
|
||||
<choices>
|
||||
<choice value="none"/>
|
||||
<choice value="panel"/>
|
||||
<choice value="menu"/>
|
||||
</choices>
|
||||
<default>"panel"</default>
|
||||
</key>
|
||||
<key name="manual-time-source" type="b">
|
||||
<default>false</default>
|
||||
</key>
|
||||
|
||||
+11
-34
@@ -28,18 +28,6 @@ SPDX-License-Identifier: GPL-3.0-or-later
|
||||
<property name="sensitive" bind-source="manual_time_source_switch" bind-property="active" bind-flags="sync-create"/>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="AdwActionRow">
|
||||
<property name="title" translatable="yes">Always show on-demand controls</property>
|
||||
<property name="subtitle" translatable="yes">Allows you to override the current time when using a schedule.</property>
|
||||
<property name="activatable-widget">always_show_ondemand_switch</property>
|
||||
<child>
|
||||
<object class="GtkSwitch" id="always_show_ondemand_switch">
|
||||
<property name="valign">center</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
@@ -57,6 +45,17 @@ SPDX-License-Identifier: GPL-3.0-or-later
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="AdwActionRow">
|
||||
<property name="title" translatable="yes">Keyboard shortcut</property>
|
||||
<property name="activatable-widget">keyboard_shortcut_button</property>
|
||||
<child>
|
||||
<object class="ShortcutButton" id="keyboard_shortcut_button">
|
||||
<property name="valign">center</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="AdwExpanderRow">
|
||||
<property name="title" translatable="yes">Manual schedule</property>
|
||||
@@ -87,28 +86,6 @@ SPDX-License-Identifier: GPL-3.0-or-later
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="AdwExpanderRow">
|
||||
<property name="title" translatable="yes">On-demand</property>
|
||||
<property name="subtitle" translatable="yes">These settings only apply when using the on-demand time source.</property>
|
||||
<child>
|
||||
<object class="AdwActionRow">
|
||||
<property name="title" translatable="yes">Keyboard shortcut</property>
|
||||
<property name="activatable-widget">ondemand_shortcut_button</property>
|
||||
<child>
|
||||
<object class="ShortcutButton" id="ondemand_shortcut_button">
|
||||
<property name="valign">center</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="AdwComboRow" id="ondemand_button_location_combo_row">
|
||||
<property name="title" translatable="yes">Button location</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</template>
|
||||
|
||||
@@ -36,7 +36,6 @@ modules = [
|
||||
'modules/Timer.js',
|
||||
'modules/TimerLocation.js',
|
||||
'modules/TimerNightlight.js',
|
||||
'modules/TimerOndemand.js',
|
||||
'modules/TimerSchedule.js',
|
||||
]
|
||||
preferences = [
|
||||
|
||||
+63
-41
@@ -1,7 +1,7 @@
|
||||
// SPDX-FileCopyrightText: 2020-2022 Romain Vigier <contact AT romainvigier.fr>
|
||||
// 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);
|
||||
|
||||
@@ -1,250 +0,0 @@
|
||||
// SPDX-FileCopyrightText: 2020-2022 Romain Vigier <contact AT romainvigier.fr>
|
||||
// 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`]));
|
||||
};
|
||||
@@ -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
|
||||
|
||||
@@ -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 <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\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 <i>Disable until tomorrow</i>"
|
||||
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 ""
|
||||
|
||||
@@ -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];
|
||||
}
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user