From 3a2f9fac72d141f6a5e2e56133a5ae77d6972680 Mon Sep 17 00:00:00 2001 From: 0neGal Date: Sun, 20 Feb 2022 20:31:50 +0100 Subject: initial work on settings page This only has the actual UI for the settings page in place, no actual functionality has been implemented yet. I made several changes not directly related to the settings page, such as changes the CSS color variables to use RGB, as to easily add an alpha channel to colors. I also changed the way the Browser is toggled in some respects and many other changes that makes it easy to re-use the browser code to create the settings UI --- src/app/main.js | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'src/app/main.js') diff --git a/src/app/main.js b/src/app/main.js index 97937a9..db3514b 100644 --- a/src/app/main.js +++ b/src/app/main.js @@ -275,6 +275,13 @@ document.addEventListener("drop", (e) => { installFromPath(event.dataTransfer.files[0].path) }); +document.body.addEventListener("keyup", (e) => { + if (e.key == "Escape") { + Browser.toggle(false); + Settings.toggle(false); + } +}) + document.body.addEventListener("click", event => { if (event.target.tagName.toLowerCase() === "a" && event.target.protocol != "file:") { event.preventDefault(); -- cgit v1.2.3 From 132fea11e3599c9c2c9df8a69fd4d093033788ba Mon Sep 17 00:00:00 2001 From: 0neGal Date: Mon, 21 Feb 2022 19:31:33 +0100 Subject: some functionality is now present Albeit only frontend functionality, it doesn't actually save your settings, it simply loads them, and Settings.get(), allows you to convert them to a format that can be used to save settings. --- src/app/index.html | 8 ++++---- src/app/main.js | 2 ++ src/app/settings.js | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++++- src/utils.js | 2 ++ 4 files changed, 63 insertions(+), 5 deletions(-) (limited to 'src/app/main.js') diff --git a/src/app/index.html b/src/app/index.html index 7a919b1..0bd6694 100644 --- a/src/app/index.html +++ b/src/app/index.html @@ -37,7 +37,7 @@

Northstar

-
+
Launch options
@@ -49,7 +49,7 @@

Updates

-
+
Viper Auto-Updates
@@ -60,7 +60,7 @@
-
+
Northstar Auto-Updates
@@ -71,7 +71,7 @@
-
+
Retain files on update
diff --git a/src/app/main.js b/src/app/main.js index db3514b..a781ef1 100644 --- a/src/app/main.js +++ b/src/app/main.js @@ -8,7 +8,9 @@ let shouldInstallNorthstar = false; // Base settings var settings = { + nsargs: "", gamepath: "", + nsupdate: true, autoupdate: true, zip: "/northstar.zip", lang: navigator.language, diff --git a/src/app/settings.js b/src/app/settings.js index c9e43ae..e558d61 100644 --- a/src/app/settings.js +++ b/src/app/settings.js @@ -1,6 +1,7 @@ var Settings = { toggle: (state) => { if (state) { + Settings.load(); options.scrollTo(0, 0); overlay.classList.add("shown") options.classList.add("shown") @@ -14,6 +15,7 @@ var Settings = { } } + Settings.load(); options.scrollTo(0, 0); overlay.classList.toggle("shown") options.classList.toggle("shown") @@ -39,8 +41,60 @@ var Settings = { } Settings.reloadSwitches(); + }, + get: () => { + let opts = {}; + let options = document.querySelectorAll(".option"); + + for (let i = 0; i < options.length; i++) { + let optName = options[i].getAttribute("name"); + if (options[i].querySelector(".actions input")) { + let input = options[i].querySelector(".actions input").value; + if (options[i].getAttribute("type")) { + opts[optName] = input.split(" "); + } else { + opts[optName] = input; + } + } else if (options[i].querySelector(".actions .switch")) { + if (options[i].querySelector(".actions .switch.on")) { + opts[optName] = true; + } else { + opts[optName] = false; + } + } + } + + return opts; + }, + load: () => { + let options = document.querySelectorAll(".option"); + + for (let i = 0; i < options.length; i++) { + let optName = options[i].getAttribute("name"); + if (settings[optName] != undefined) { + switch(typeof settings[optName]) { + case "string": + options[i].querySelector(".actions input").value = settings[optName]; + break + case "object": + options[i].querySelector(".actions input").value = settings[optName].join(" "); + break + case "boolean": + let switchDiv = options[i].querySelector(".actions .switch"); + if (settings[optName]) { + switchDiv.classList.add("on"); + switchDiv.classList.remove("off"); + } else { + switchDiv.classList.add("off"); + switchDiv.classList.remove("on"); + } + break + + } + } + } } } Settings.reloadSwitches(); - +Settings.load(); diff --git a/src/utils.js b/src/utils.js index 2ea91cd..b4dd920 100644 --- a/src/utils.js +++ b/src/utils.js @@ -20,8 +20,10 @@ process.chdir(app.getPath("appData")); // Base settings var settings = { + nsargs: "", gamepath: "", lang: "en-US", + nsupdate: true, autoupdate: true, zip: "/northstar.zip", -- cgit v1.2.3