mirror of https://github.com/espruino/BangleApps
89 lines
2.3 KiB
JavaScript
89 lines
2.3 KiB
JavaScript
(function(back) {
|
|
|
|
let settings = Object.assign({ swupApp: "",swdownApp: "", swleftApp: "", swrightApp: "",ColorMinutes: ""}, require("Storage").readJSON("7x7dotsclock.json", true) || {});
|
|
|
|
|
|
|
|
function setSetting(key,value) {
|
|
print("call " + key + " = " + value);
|
|
settings[key] = value;
|
|
|
|
print("storing settings 7x7dotsclock.json");
|
|
storage.write('7x7dotsclock.json', settings);
|
|
}
|
|
|
|
|
|
// Helper method which uses int-based menu item for set of string values
|
|
function stringItems(key, startvalue, values) {
|
|
return {
|
|
value: (startvalue === undefined ? 0 : values.indexOf(startvalue)),
|
|
format: v => values[v],
|
|
min: 0,
|
|
max: values.length - 1,
|
|
wrap: true,
|
|
step: 1,
|
|
onchange: v => {
|
|
setSetting(key,values[v]);
|
|
}
|
|
};
|
|
}
|
|
|
|
// Helper method which breaks string set settings down to local settings object
|
|
function stringInSettings(name, values) {
|
|
return stringItems(name,settings[name], values);
|
|
}
|
|
|
|
function showMainMenu() {
|
|
const mainMenu = {
|
|
"": {"title": "7x7 Dots Clock Settings"},
|
|
"< Back": ()=>load(),
|
|
"Minutes": stringInSettings("ColorMinutes", ["blue","pink","green","yellow"]),
|
|
"swipe-up": ()=>showSelAppMenu("swupApp"),
|
|
"swipe-down": ()=>showSelAppMenu("swdownApp"),
|
|
"swipe-left": ()=>showSelAppMenu("swleftApp"),
|
|
"swipe-right": ()=>showSelAppMenu("swrightApp")
|
|
|
|
};
|
|
|
|
E.showMenu(mainMenu);
|
|
}
|
|
|
|
|
|
function showSelAppMenu(key) {
|
|
var Apps = require("Storage").list(/\.info$/)
|
|
.map(app => {var a=storage.readJSON(app, 1);return (
|
|
a&&a.name != "Launcher"
|
|
&& a&&a.name != "Bootloader"
|
|
&& a&&a.type != "clock"
|
|
&& a&&a.type !="widget"
|
|
)?a:undefined})
|
|
.filter(app => app) // filter out any undefined apps
|
|
.sort((a, b) => a.sortorder - b.sortorder);
|
|
const SelAppMenu = {
|
|
'': {
|
|
'title': /*LANG*/'Select App',
|
|
},
|
|
'< Back': ()=>showMainMenu(),
|
|
};
|
|
Apps.forEach((app, index) => {
|
|
var label = app.name;
|
|
if (settings[key] === app.src) {
|
|
label = "* " + label;
|
|
}
|
|
SelAppMenu[label] = () => {
|
|
if (settings[key] !== app.src) {
|
|
setSetting(key,app.src);
|
|
showMainMenu();
|
|
}
|
|
};
|
|
});
|
|
if (Apps.length === 0) {
|
|
SelAppMenu[/*LANG*/"No Apps Found"] = () => { };
|
|
}
|
|
return E.showMenu(SelAppMenu);
|
|
}
|
|
|
|
showMainMenu();
|
|
|
|
})
|