mirror of https://github.com/espruino/BangleApps
Add Select Clock option to settings app
This adds an option to select the preferred clock to show on the main screen. The settings app menu lists all apps of type 'clock' with the current one marked with a *. It stores the src property of the selected clock as settings.clock. The bootloader app checks this property and tries to load that app. If the property is not set, or the app not found then it reverts to the current behaviour of using the first clock app it finds.pull/49/head
parent
9de2210084
commit
c89ad11d69
|
@ -101,12 +101,28 @@ if (startapp) {
|
||||||
function drawWidgets() {
|
function drawWidgets() {
|
||||||
for (var w of WIDGETS) w.draw();
|
for (var w of WIDGETS) w.draw();
|
||||||
}
|
}
|
||||||
var clockApps = require("Storage").list().filter(a=>a[0]=='+').map(app=>{
|
var settings;
|
||||||
try { return require("Storage").readJSON(app); }
|
try {
|
||||||
catch (e) {}
|
settings = require("Storage").readJSON('@setting');
|
||||||
}).filter(app=>app.type=="clock").sort((a, b) => a.sortorder - b.sortorder);
|
} catch (e) {
|
||||||
if (clockApps && clockApps.length > 0) eval(require("Storage").read(clockApps[0].src));
|
settings = {}
|
||||||
|
}
|
||||||
|
var clockApp = settings.clock;
|
||||||
|
if (clockApp) {
|
||||||
|
clockApp = require("Storage").read(clockApp)
|
||||||
|
}
|
||||||
|
if (!clockApp) {
|
||||||
|
var clockApps = require("Storage").list().filter(a=>a[0]=='+').map(app=>{
|
||||||
|
try { return require("Storage").readJSON(app); }
|
||||||
|
catch (e) {}
|
||||||
|
}).filter(app=>app.type=="clock").sort((a, b) => a.sortorder - b.sortorder);
|
||||||
|
if (clockApps && clockApps.length > 0) {
|
||||||
|
clockApp = require("Storage").read(clockApps[0].src);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (clockApp) eval(clockApp);
|
||||||
else E.showMessage("No Clock Found");
|
else E.showMessage("No Clock Found");
|
||||||
|
|
||||||
delete clockApps;
|
delete clockApps;
|
||||||
require("Storage").list().filter(a=>a[0]=='=').forEach(widget=>eval(require("Storage").read(widget)));
|
require("Storage").list().filter(a=>a[0]=='=').forEach(widget=>eval(require("Storage").read(widget)));
|
||||||
setTimeout(drawWidgets,100);
|
setTimeout(drawWidgets,100);
|
||||||
|
|
|
@ -27,6 +27,7 @@ function resetSettings() {
|
||||||
HID : false,
|
HID : false,
|
||||||
HIDGestures: false,
|
HIDGestures: false,
|
||||||
debug: false,
|
debug: false,
|
||||||
|
clock: null
|
||||||
};
|
};
|
||||||
setLCDTimeout(settings.timeout);
|
setLCDTimeout(settings.timeout);
|
||||||
updateSettings();
|
updateSettings();
|
||||||
|
@ -92,6 +93,7 @@ function showMainMenu() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
'Select Clock': showClockMenu,
|
||||||
'Time Zone': {
|
'Time Zone': {
|
||||||
value: settings.timezone,
|
value: settings.timezone,
|
||||||
min: -11,
|
min: -11,
|
||||||
|
@ -174,6 +176,37 @@ function makeConnectable() {
|
||||||
showMainMenu();
|
showMainMenu();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
function showClockMenu() {
|
||||||
|
var clockApps = require("Storage").list().filter(a=>a[0]=='+').map(app=>{
|
||||||
|
try { return require("Storage").readJSON(app); }
|
||||||
|
catch (e) {}
|
||||||
|
}).filter(app=>app.type=="clock").sort((a, b) => a.sortorder - b.sortorder);
|
||||||
|
const clockMenu = {
|
||||||
|
'': {
|
||||||
|
'title': 'Select Clock',
|
||||||
|
},
|
||||||
|
'< Back': showMainMenu,
|
||||||
|
};
|
||||||
|
clockApps.forEach(app => {
|
||||||
|
var label = app.name;
|
||||||
|
if (settings.clock === app.src) {
|
||||||
|
label = "* "+label;
|
||||||
|
}
|
||||||
|
clockMenu[label] = () => {
|
||||||
|
if (settings.clock !== app.src) {
|
||||||
|
settings.clock = app.src;
|
||||||
|
updateSettings();
|
||||||
|
showMainMenu();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
});
|
||||||
|
if (clockApps.length === 0) {
|
||||||
|
clockMenu["No Clocks Found"] = () => {};
|
||||||
|
}
|
||||||
|
return Bangle.menu(clockMenu);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
function showSetTimeMenu() {
|
function showSetTimeMenu() {
|
||||||
d = new Date();
|
d = new Date();
|
||||||
|
|
12
firmware.js
12
firmware.js
File diff suppressed because one or more lines are too long
Loading…
Reference in New Issue