diff options
Diffstat (limited to 'desktop/Prefs.qml')
| -rw-r--r-- | desktop/Prefs.qml | 71 |
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; } } } |
