BangleApps/apps/7x7dotsclock/7x7dotsclock.settings.js

89 lines
2.3 KiB
JavaScript
Raw Normal View History

2022-02-04 16:00:40 +00:00
(function(back) {
2022-02-17 14:49:03 +00:00
let settings = Object.assign({ swupApp: "",swdownApp: "", swleftApp: "", swrightApp: "",ColorMinutes: ""}, require("Storage").readJSON("7x7dotsclock.json", true) || {});
2022-02-17 14:49:03 +00:00
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);
}
2022-02-17 14:49:03 +00:00
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")
2022-02-17 14:49:03 +00:00
};
E.showMenu(mainMenu);
}
2022-02-17 14:49:03 +00:00
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',
2022-02-04 16:00:40 +00:00
},
2022-02-17 14:49:03 +00:00
'< Back': ()=>showMainMenu(),
2022-02-04 16:00:40 +00:00
};
2022-02-17 14:49:03 +00:00
Apps.forEach((app, index) => {
var label = app.name;
2022-02-17 16:35:38 +00:00
if (settings[key] === app.src) {
2022-02-17 14:49:03 +00:00
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();
})