75 lines
2.1 KiB
JavaScript
75 lines
2.1 KiB
JavaScript
'use strict'
|
|
|
|
import GLib from 'gi://GLib';
|
|
import Adw from 'gi://Adw';
|
|
import GObject from 'gi://GObject';
|
|
import Gio from 'gi://Gio';
|
|
|
|
import * as Utils from './utils.js';
|
|
|
|
export const General = GObject.registerClass({
|
|
GTypeName: 'GeneralPrefs',
|
|
Template: GLib.Uri.resolve_relative(import.meta.url, '../ui/general.ui',GLib.UriFlags.NONE),
|
|
InternalChildren: [
|
|
'indicator_mode',
|
|
'color_mode',
|
|
'show_values',
|
|
'show_notifications',
|
|
'reset_all',
|
|
'reset_dialog',
|
|
],
|
|
}, class General extends Adw.PreferencesPage {
|
|
constructor(window) {
|
|
super({});
|
|
|
|
Utils.bindAdwComboRow(this._indicator_mode, window._settings, 'indicator-mode');
|
|
window._settings.bind(
|
|
'color-mode',
|
|
this._color_mode,
|
|
'active',
|
|
Gio.SettingsBindFlags.DEFAULT
|
|
);
|
|
window._settings.bind(
|
|
'show-current-values',
|
|
this._show_values,
|
|
'active',
|
|
Gio.SettingsBindFlags.DEFAULT
|
|
);
|
|
window._settings.bind(
|
|
'show-notifications',
|
|
this._show_notifications,
|
|
'active',
|
|
Gio.SettingsBindFlags.DEFAULT
|
|
);
|
|
|
|
this._reset_dialog.connect('response', (obj, response, data) => {
|
|
if (response === 'reset') {
|
|
this._resetSettings(window._settings);
|
|
window._driver.enableAll();
|
|
}
|
|
});
|
|
|
|
this._reset_all.connect('clicked', () => {
|
|
this._reset_dialog.transientFor = this.root;
|
|
this._reset_dialog.present();
|
|
});
|
|
}
|
|
|
|
/**
|
|
* Reset all (recursively) settings values to default
|
|
*
|
|
* @param {Gio.Settings} settings Settings to reset
|
|
*/
|
|
_resetSettings(settings) {
|
|
const keys = settings.settings_schema.list_keys();
|
|
keys.forEach(key => {
|
|
settings.reset(key);
|
|
});
|
|
|
|
const childrens = settings.settings_schema.list_children();
|
|
childrens.forEach(children => {
|
|
const childrenSettings = settings.get_child(children);
|
|
this._resetSettings(childrenSettings);
|
|
});
|
|
}
|
|
}); |