Skip to content

Commit 5802c7b

Browse files
committed
start migration of prefs to .ui file
1 parent e168a18 commit 5802c7b

File tree

4 files changed

+276
-98
lines changed

4 files changed

+276
-98
lines changed

extension.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -561,6 +561,7 @@ class BingWallpaperIndicator extends Button {
561561

562562
_randomModeChanged() {
563563
let randomEnabled = this._settings.get_boolean('random-mode-enabled');
564+
Utils.validate_interval(this._settings);
564565
[this.toggleShuffleOnlyFaves, this.toggleShuffleOnlyUHD /*, this.toggleShuffleOnlyUnhidden*/]
565566
.forEach( x => {
566567
x.setSensitive(randomEnabled);

prefs.js

Lines changed: 154 additions & 94 deletions
Original file line numberDiff line numberDiff line change
@@ -21,14 +21,16 @@ const BingImageURL = Utils.BingImageURL;
2121

2222
var DESKTOP_SCHEMA = 'org.gnome.desktop.background';
2323

24-
var PREFS_DEFAULT_WIDTH = 950;
25-
var PREFS_DEFAULT_HEIGHT = 950;
24+
var PREFS_DEFAULT_WIDTH = 700;
25+
var PREFS_DEFAULT_HEIGHT = 750;
2626

2727
export default class BingWallpaperExtensionPreferences extends ExtensionPreferences {
2828
fillPreferencesWindow(window) {
2929
// formally globals
3030
let settings = this.getSettings(Utils.BING_SCHEMA);
31-
let desktop_settings = this.getSettings(Utils.DESKTOP_SCHEMA);
31+
//let desktop_settings = this.getSettings(Utils.DESKTOP_SCHEMA);
32+
33+
window.set_default_size(PREFS_DEFAULT_WIDTH, PREFS_DEFAULT_HEIGHT);
3234

3335
let icon_image = null;
3436
let provider = new Gtk.CssProvider();
@@ -45,80 +47,48 @@ export default class BingWallpaperExtensionPreferences extends ExtensionPreferen
4547
if (settings.get_boolean('debug-logging'))
4648
console.log("BingWallpaper extension: " + msg); // disable to keep the noise down in journal
4749
}
50+
51+
let buildable = new Gtk.Builder();
52+
// GTK4 removes some properties, and builder breaks when it sees them
53+
buildable.add_from_file( this.dir.get_path() + '/ui/prefsadw.ui' );
4854

49-
const settings_page = new Adw.PreferencesPage({
50-
title: _('Settings'),
51-
icon_name: 'dialog-information-symbolic',
52-
});
55+
const settings_page = buildable.get_object('settings_page');
56+
5357
window.add(settings_page);
54-
const ui_group = new Adw.PreferencesGroup({
55-
title: _('Indicator'),
56-
/*description: _('Configure the indicator of the extension'),*/
57-
});
58-
settings_page.add(ui_group);
59-
const hideSwitch = new Adw.SwitchRow({
60-
title: _('Hide Indicator'),
61-
subtitle: _('Whether to hide the panel indicator'),
62-
});
63-
const notifySwitch = new Adw.SwitchRow({
64-
title: _('Desktop notifications'),
65-
subtitle: _('Whether to enable notifications on new images'),
66-
});
67-
ui_group.add(hideSwitch);
68-
ui_group.add(notifySwitch);
69-
/*const list = new Gtk.StringList();
58+
59+
const ui_group = buildable.get_object('ui_group');
60+
const hideSwitch = buildable.get_object('hideSwitch');
61+
const notifySwitch = buildable.get_object('notifySwitch');
62+
const iconEntry = buildable.get_object('iconEntry');
63+
64+
const list = new Gtk.StringList();
7065
Utils.icon_list.forEach((iconname, index) => {
7166
list.append(iconname, iconname);
72-
});*/
73-
const iconEntry = new Adw.ComboRow({
74-
title: _('Desktop notifications'),
75-
subtitle: _('Whether to enable notifications on new images'),
76-
model: Gtk.StringList.new(Utils.icon_list),
77-
selected: Utils.icon_list.indexOf(settings.get_string('icon-name')),
7867
});
79-
ui_group.add(iconEntry);
68+
69+
iconEntry.set_model(list);
70+
iconEntry.set_selected(Utils.icon_list.indexOf(settings.get_string('icon-name')));
71+
8072

73+
const wp_group = buildable.get_object('wp_group');
74+
//settings_page.add(wp_group);
8175

82-
const wp_group = new Adw.PreferencesGroup({
83-
title: _('Wallpaper'),
84-
/*description: _('Configure downloads'),*/
85-
});
86-
settings_page.add(wp_group);
8776
const shuffleIntervals = new Gtk.StringList;
8877
Utils.randomIntervals.forEach((x) => {
8978
shuffleIntervals.append(_(x.title));
9079
});
91-
const shuffleSwitch = new Adw.SwitchRow({
92-
title: _('Enabled shuffle'),
93-
subtitle: _('Whether to select random wallpapers'),
94-
});
95-
const shuffleInterval = new Adw.ComboRow({
96-
title: _('Enabled shuffle'),
97-
subtitle: _('Whether to select random wallpapers'),
98-
model: shuffleIntervals,
99-
selected: Utils.icon_list.indexOf(settings.get_string('random-interval')),
100-
});
101-
wp_group.add(shuffleSwitch);
102-
wp_group.add(shuffleInterval);
10380

104-
const dl_group = new Adw.PreferencesGroup({
105-
title: _('Downloads'),
106-
/*description: _('Configure downloads'),*/
107-
});
108-
settings_page.add(dl_group);
109-
const bgSwitch = new Adw.SwitchRow({
110-
title: _('Set wallpaper'),
111-
subtitle: _('Whether to set wallpaper automatically'),
112-
});
113-
dl_group.add(bgSwitch);
114-
const folderOpen = new Adw.ActionRow({
115-
title: _('Download folder'),
116-
subtitle: _('Open or change wallpaper downloads folder'),
117-
});
118-
dl_group.add(folderOpen);
119-
const folderSplit = new Adw.SplitButton({
120-
label: _('Open folder'),
121-
});
81+
const bgSwitch = buildable.get_object('bgSwitch');
82+
const shuffleSwitch = buildable.get_object('shuffleSwitch');
83+
const shuffleInterval = buildable.get_object('shuffleInterval');
84+
shuffleInterval.set_model(shuffleIntervals);
85+
shuffleInterval.set_selected(Utils.randomIntervals.map( e => e.value).indexOf(settings.get_string('random-interval-mode')));
86+
87+
const dl_group = buildable.get_object('dl_group');
88+
//settings_page.add(dl_group);
89+
90+
const folderRow = buildable.get_object('folderRow');
91+
12292
const openBtn = new Gtk.Button( {
12393
child: new Adw.ButtonContent({
12494
icon_name: 'folder-pictures-symbolic',
@@ -135,17 +105,108 @@ export default class BingWallpaperExtensionPreferences extends ExtensionPreferen
135105
valign: Gtk.Align.CENTER,
136106
halign: Gtk.Align.CENTER,
137107
});
138-
/*folderSplit.set_child(openBtn);
139-
folderSplit.set_child(changeBtn);*/
140-
folderOpen.add_suffix(openBtn);
141-
folderOpen.add_suffix(changeBtn);
108+
109+
folderRow.add_suffix(openBtn);
110+
folderRow.add_suffix(changeBtn);
142111

143112
/* not sure how to make this work right just yet */
144-
const folderDialog = new Gtk.FileDialog({
145-
accept_label: _('Select'),
146-
modal: true,
147-
title: _('Select new wallpaper download folder'),
113+
const folderDialog = buildable.get_object('folderDialog');
114+
115+
const lockscreen_page = new Adw.PreferencesPage({
116+
title: _('Lock screen'),
117+
icon_name: 'applications-system-symbolic',
118+
});
119+
window.add(lockscreen_page);
120+
const ls_group = new Adw.PreferencesGroup({
121+
title: _('Lockscreen blur'),
122+
/*description: _('Configure the indicator of the extension'),*/
123+
});
124+
lockscreen_page.add(ls_group);
125+
const overrideSwitch = new Adw.SwitchRow({
126+
title: _('Dynamic lockscreen blur'),
127+
subtitle: _('Whether to enable dynamic blur mode on lock screen'),
128+
});
129+
const strengthEntry = new Adw.SpinRow({
130+
title: _('Blur strength'),
131+
subtitle: _('Blur strength when login prompt is not visible'),
132+
adjustment: new Gtk.Adjustment({
133+
lower: 0,
134+
upper: 50,
135+
value: settings.get_int('lockscreen-blur-strength'),
136+
page_increment: 10,
137+
step_increment: 1,
138+
}),
139+
});
140+
const brightnessEntry = new Adw.SpinRow({
141+
title: _('Wallpaper brightness'),
142+
subtitle: _('Dim wallpaper when login prompt is not visible'),
143+
adjustment: new Gtk.Adjustment({
144+
lower: 0,
145+
upper: 50,
146+
value: settings.get_int('lockscreen-blur-brightness'),
147+
page_increment: 10,
148+
step_increment: 1,
149+
}),
150+
});
151+
152+
const blurPresets = new Adw.ActionRow({
153+
title: _('Presets'),
154+
/*subtitle: _('Open or change wallpaper downloads folder'),*/
155+
});
156+
157+
const defaultBtn = new Gtk.Button( {
158+
child: new Adw.ButtonContent({
159+
icon_name: 'emblem-default-symbolic',
160+
label: _('Default'),
161+
},),
162+
valign: Gtk.Align.CENTER,
163+
halign: Gtk.Align.CENTER,
148164
});
165+
const noBlurBtn = new Gtk.Button( {
166+
child: new Adw.ButtonContent({
167+
icon_name: 'emblem-default-symbolic',
168+
label: _('No blur, slight dim'),
169+
},),
170+
valign: Gtk.Align.CENTER,
171+
halign: Gtk.Align.CENTER,
172+
});
173+
const slightBlurBtn = new Gtk.Button( {
174+
child: new Adw.ButtonContent({
175+
icon_name: 'emblem-default-symbolic',
176+
label: _('Slight blur & dim'),
177+
},),
178+
valign: Gtk.Align.CENTER,
179+
halign: Gtk.Align.CENTER,
180+
});
181+
182+
blurPresets.add_suffix(defaultBtn);
183+
blurPresets.add_suffix(noBlurBtn);
184+
blurPresets.add_suffix(slightBlurBtn);
185+
186+
ls_group.add(overrideSwitch);
187+
ls_group.add(strengthEntry);
188+
ls_group.add(brightnessEntry);
189+
ls_group.add(blurPresets);
190+
191+
const gallery_page = new Adw.PreferencesPage({
192+
title: _('Gallery'),
193+
icon_name: 'document-open-recent-symbolic',
194+
});
195+
window.add(gallery_page);
196+
197+
const debug_page = new Adw.PreferencesPage({
198+
title: _('Debug'),
199+
icon_name: 'preferences-other-symbolic',
200+
});
201+
window.add(debug_page);
202+
203+
const about_page = new Adw.PreferencesPage({
204+
title: _('About'),
205+
icon_name: 'user-info-symbolic',
206+
});
207+
window.add(about_page);
208+
209+
149210

150211
/*
151212
// Prepare labels and controls
@@ -208,6 +269,7 @@ export default class BingWallpaperExtensionPreferences extends ExtensionPreferen
208269
// check that these are valid (can be edited through dconf-editor)
209270
Utils.validate_resolution(settings);
210271
Utils.validate_icon(settings, this.path, icon_image);
272+
Utils.validate_interval(settings);
211273

212274
// Indicator & notifications
213275
settings.bind('hide', hideSwitch, 'active', Gio.SettingsBindFlags.DEFAULT);
@@ -217,14 +279,21 @@ export default class BingWallpaperExtensionPreferences extends ExtensionPreferen
217279
Utils.icon_list.forEach((iconname, index) => {
218280
iconEntry.append(iconname, iconname);
219281
});
282+
*/
220283
// user selectable indicator icons
221-
settings.bind('icon-name', iconEntry, 'active_id', Gio.SettingsBindFlags.DEFAULT);
284+
// settings.bind('icon-name', iconEntry, 'active_id', Gio.SettingsBindFlags.DEFAULT);
222285
settings.connect('changed::icon-name', () => {
223286
Utils.validate_icon(settings, this.path, icon_image);
287+
/*iconEntry.set_selected(Utils.indexOf(settings.get_string('icon-name')));*/
224288
});
225-
iconEntry.set_active_id(settings.get_string('icon-name'));
289+
290+
/*
291+
iconEntry.connect('changed', (widget) => {
292+
settings.set_string('icon-name', Utils.icon_list[iconEntry.active_id]);
293+
});*/
294+
295+
//iconEntry.set_active_id(settings.get_string('icon-name'));
226296

227-
*/
228297
// connect switches to settings changes
229298
settings.bind('set-background', bgSwitch, 'active', Gio.SettingsBindFlags.DEFAULT);
230299
/*
@@ -309,37 +378,28 @@ export default class BingWallpaperExtensionPreferences extends ExtensionPreferen
309378
settings.bind('random-mode-enabled', shuffleSwitch, 'active', Gio.SettingsBindFlags.DEFAULT);
310379
/*settings.bind('random-interval-mode', entryShuffleMode, 'active_id', Gio.SettingsBindFlags.DEFAULT);*/
311380

312-
/*
313-
// selected image can no longer be changed through a dropdown (didn't scale)
314-
settings.bind('selected-image', historyEntry, 'label', Gio.SettingsBindFlags.DEFAULT);
315-
settings.connect('changed::selected-image', () => {
316-
Utils.validate_imagename(settings);
381+
settings.connect('changed::random-interval-mode', () => {
382+
shuffleInterval.set_selected(Utils.randomIntervals.map( e => e.value).indexOf(settings.get_string('random-interval-mode')));
317383
});
318-
319-
// background styles (e.g. zoom or span)
320-
Utils.backgroundStyle.forEach((style) => {
321-
styleEntry.append(style, style);
322-
});
323-
desktop_settings.bind('picture-options', styleEntry, 'active_id', Gio.SettingsBindFlags.DEFAULT);
324-
384+
385+
325386
// GDM3 lockscreen blur override
326387
settings.bind('override-lockscreen-blur', overrideSwitch, 'active', Gio.SettingsBindFlags.DEFAULT);
327388
settings.bind('lockscreen-blur-strength', strengthEntry, 'value', Gio.SettingsBindFlags.DEFAULT);
328389
settings.bind('lockscreen-blur-brightness', brightnessEntry, 'value', Gio.SettingsBindFlags.DEFAULT);
329390

391+
330392
// add a couple of preset buttons
331-
buttonGDMdefault.connect('clicked', (widget) => {
393+
defaultBtn.connect('clicked', (widget) => {
332394
Utils.set_blur_preset(settings, Utils.PRESET_GNOME_DEFAULT);
333395
});
334-
buttonnoblur.connect('clicked', (widget) => {
396+
noBlurBtn.connect('clicked', (widget) => {
335397
Utils.set_blur_preset(settings, Utils.PRESET_NO_BLUR);
336398
});
337-
buttonslightblur.connect('clicked', (widget) => {
399+
slightBlurBtn.connect('clicked', (widget) => {
338400
Utils.set_blur_preset(settings, Utils.PRESET_SLIGHT_BLUR);
339401
});
340-
341-
*/
342-
402+
343403
// fetch
344404
/*
345405
if (httpSession)

0 commit comments

Comments
 (0)