aboutsummaryrefslogtreecommitdiffstats
path: root/desktop/Prefs.qml
diff options
context:
space:
mode:
Diffstat (limited to 'desktop/Prefs.qml')
-rw-r--r--desktop/Prefs.qml71
1 files changed, 70 insertions, 1 deletions
diff --git a/desktop/Prefs.qml b/desktop/Prefs.qml
index 0ed6ee9..610e004 100644
--- a/desktop/Prefs.qml
+++ b/desktop/Prefs.qml
@@ -45,6 +45,66 @@ Singleton {
root.write(Object.assign({}, root.doc, { assistant: a }));
}
+ // Whether the desktop companion is shown: SUPER+\ and the Companion
+ // settings page both set it, so it survives a restart. ready is false
+ // until the file has been read, so she does not show and then vanish.
+ property bool companion: true
+ property bool ready: false
+ function setCompanion(on) {
+ if (on === root.companion) return;
+ root.companion = on;
+ root.write(Object.assign({}, root.doc, { companion: on }));
+ }
+
+ // Seconds the companion stays in her leotard after the self-destruct,
+ // 0 for until she is hidden and shown again.
+ property int companionSkirtless: 60
+ function setCompanionSkirtless(s) {
+ if (s === root.companionSkirtless) return;
+ root.companionSkirtless = s;
+ root.write(Object.assign({}, root.doc, { companionSkirtless: s }));
+ }
+
+ // The companion's wallpaper list, "" for the default in
+ // companion/Admired.qml.
+ property string companionBlushFile: ""
+ function setCompanionBlushFile(p) {
+ p = p.trim();
+ if (p === root.companionBlushFile) return;
+ root.companionBlushFile = p;
+ root.write(Object.assign({}, root.doc, { companionBlushFile: p }));
+ }
+
+ // The companion's app lines as saved: a map of lowercased window class
+ // to phrases, or null for the defaults in companion/Lines.js. The
+ // Companion phrases page edits it.
+ property var companionApps: null
+ function setCompanionApps(map) {
+ root.companionApps = map;
+ root.write(Object.assign({}, root.doc, { companionApps: map }));
+ }
+ function resetCompanionApps() {
+ root.companionApps = null;
+ const d = Object.assign({}, root.doc);
+ delete d.companionApps;
+ root.write(d);
+ }
+
+ // The companion's artist lines as saved, keyed by lowercased artist, or
+ // null for the defaults in companion/Lines.js. The Companion artists
+ // page edits it.
+ property var companionArtists: null
+ function setCompanionArtists(map) {
+ root.companionArtists = map;
+ root.write(Object.assign({}, root.doc, { companionArtists: map }));
+ }
+ function resetCompanionArtists() {
+ root.companionArtists = null;
+ const d = Object.assign({}, root.doc);
+ delete d.companionArtists;
+ root.write(d);
+ }
+
// The settings window's sidebar width, dragged by its edge.
readonly property int sidebarMin: 160
readonly property int sidebarMax: 420
@@ -103,6 +163,15 @@ Singleton {
const w = parsed.settings ? parsed.settings.sidebar : undefined;
root.settingsSidebar = typeof w === "number" && w >= root.sidebarMin && w <= root.sidebarMax
? Math.round(w) : 200;
+ root.companion = parsed.companion !== false;
+ const sk = parsed.companionSkirtless;
+ root.companionSkirtless = Number.isInteger(sk) && sk >= 0 ? sk : 60;
+ root.companionBlushFile = typeof parsed.companionBlushFile === "string" ? parsed.companionBlushFile : "";
+ const ca = parsed.companionApps;
+ root.companionApps = ca && typeof ca === "object" && !Array.isArray(ca) ? ca : null;
+ const cr = parsed.companionArtists;
+ root.companionArtists = cr && typeof cr === "object" && !Array.isArray(cr) ? cr : null;
+ root.ready = true;
}
FileView {
@@ -117,6 +186,6 @@ Singleton {
onFileChanged: reload()
onLoaded: root.reparse()
// Missing file: the defaults, and nothing written.
- onLoadFailed: { root.doc = {}; root.pinnedIp = ""; root.presets = null; root.settingsSidebar = 200; root.assistantModel = ""; }
+ onLoadFailed: { root.doc = {}; root.pinnedIp = ""; root.presets = null; root.settingsSidebar = 200; root.assistantModel = ""; root.companion = true; root.companionBlushFile = ""; root.companionSkirtless = 60; root.companionApps = null; root.companionArtists = null; root.ready = true; }
}
}