Merge pull request #3224 from bobrippling/feat/multitimer-initial

multitimer: add setting for initial screen
pull/3228/head
thyttan 2024-03-02 16:29:19 +01:00 committed by GitHub
commit 0aff4409a8
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 70 additions and 11 deletions

View File

@ -6,3 +6,4 @@
0.06: Support fastloading
0.07: Fix fastloading support - ensure drag handler's restored after
menu display/fastload removes it
0.08: Add setting for initial page to display

View File

@ -78,7 +78,7 @@ function drawTimers() {
}, 1000 - (timers[idx].t % 1000));
}
E.showScroller({
const s = E.showScroller({
h : 40, c : timers.length+2,
back : function() {load();},
draw : (idx, r) => {
@ -138,7 +138,7 @@ function timerMenu(idx) {
}, 1000 - (a.t % 1000));
}
E.showScroller({
const s = E.showScroller({
h : 40, c : 5,
back : function() {
clearInt();
@ -328,9 +328,22 @@ function editTimer(idx, a) {
setUI();
}
function readJson() {
let json = require("Storage").readJSON("multitimer.json", true) || {};
if (Array.isArray(json)) {
// old format, convert
json = { sw: json };
require("Storage").writeJSON("multitimer.json", json);
}
if (!json.sw) json.sw = [];
return json;
}
function drawSw() {
layer = 1;
const sw = require("Storage").readJSON("multitimer.json", true) || [];
const sw = readJson().sw;
function updateTimers(idx) {
if (!timerInt1[idx]) timerInt1[idx] = setTimeout(function() {
@ -341,7 +354,7 @@ function drawSw() {
}, 1000 - (sw[idx].t % 1000));
}
E.showScroller({
const s = E.showScroller({
h : 40, c : sw.length+2,
back : function() {load();},
draw : (idx, r) => {
@ -382,12 +395,13 @@ function drawSw() {
function swMenu(idx, a) {
layer = -1;
const sw = require("Storage").readJSON("multitimer.json", true) || [];
const json = readJson();
const sw = json.sw;
if (sw[idx]) a = sw[idx];
else {
a = {"t" : 0, "on" : false, "msg" : ""};
sw[idx] = a;
require("Storage").writeJSON("multitimer.json", sw);
require("Storage").writeJSON("multitimer.json", json);
}
function updateTimer() {
@ -408,7 +422,7 @@ function swMenu(idx, a) {
}
else delete a.msg;
sw[idx] = a;
require("Storage").writeJSON("multitimer.json", sw);
require("Storage").writeJSON("multitimer.json", json);
swMenu(idx, a);
});
}
@ -420,7 +434,7 @@ function swMenu(idx, a) {
setUI();
}
E.showScroller({
const s = E.showScroller({
h : 40, c : 5,
back : function() {
clearInt();
@ -458,7 +472,7 @@ function swMenu(idx, a) {
select : (i) => {
function saveAndReload() {
require("Storage").writeJSON("multitimer.json", sw);
require("Storage").writeJSON("multitimer.json", json);
s.draw();
}
@ -707,5 +721,17 @@ function onDrag(e) {
}
}
drawTimers();
switch (readJson().initialScreen) {
case 1:
drawSw();
break;
case 2:
drawAlarms();
break;
case 0:
case undefined:
default:
drawTimers();
break;
}
}

View File

@ -1,7 +1,7 @@
{
"id": "multitimer",
"name": "Multi Timer",
"version": "0.07",
"version": "0.08",
"description": "Set timers and chronographs (stopwatches) and watch them count down in real time. Pause, create, edit, and delete timers and chronos, and add custom labels/messages. Also sets alarms.",
"icon": "app.png",
"screenshots": [
@ -16,6 +16,7 @@
{"name":"multitimer.app.js","url":"app.js"},
{"name":"multitimer.boot.js","url":"boot.js"},
{"name":"multitimer.alarm.js","url":"alarm.js"},
{"name":"multitimer.settings.js","url":"settings.js"},
{"name":"multitimer.img","url":"app-icon.js","evaluate":true}
],
"data": [{"name":"multitimer.json"}],

View File

@ -0,0 +1,31 @@
(function(back) {
const file = "multitimer.json";
let json = require('Storage').readJSON(file, true);
if (Array.isArray(json)) {
// old format, convert
json = { sw: json };
}
function writeSettings() {
require('Storage').writeJSON(file, json);
}
const screens = ["Timers", "Chronos", "Alarms"];
E.showMenu({
"": {
"title": "multitimer"
},
"< Back": back,
"Initial screen": {
value: json.initialScreen || 0,
min: 0,
max: screens.length - 1,
format: v => screens[v],
onchange: v => {
json.initialScreen = v;
writeSettings();
}
},
});
});