BangleApps/apps/quicklaunch/settings.js

100 lines
2.7 KiB
JavaScript
Raw Normal View History

2022-04-28 07:10:50 +00:00
(function(back) {
var storage = require("Storage");
var settings = Object.assign(storage.readJSON("quicklaunch.json", true) || {});
2022-04-28 07:10:50 +00:00
for (let c of ["lapp","rapp","uapp","dapp","tapp"]){ // l=left, r=right, u=up, d=down, t=tap.
if (!settings[c]) settings[c] = {"name":"(none)"};
}
var apps = storage.list(/\.info$/).map(app=>{var a=storage.readJSON(app,1);return a&&{name:a.name,type:a.type,sortorder:a.sortorder,src:a.src};}).filter(app=>app && (app.type=="app" || app.type=="launch" || app.type=="clock" || !app.type));
2022-04-28 07:10:50 +00:00
// Add psuedo app to trigger Bangle.showLauncher later
apps.push({
"name": "Show Launcher",
2023-02-13 18:33:57 +00:00
"type": undefined,
2023-02-13 18:58:38 +00:00
"sortorder": -12,
"src": "no source"
});
2023-02-13 21:35:58 +00:00
// Add the Quick Launch extension app
let extension = {
2023-02-13 18:33:57 +00:00
"name": "Quick Launch Extension",
"type": "app",
2023-02-13 18:58:38 +00:00
"sortorder": -11,
2023-02-13 18:33:57 +00:00
"src": "quicklaunch.app.js"
}
apps.push(extension);
2023-02-13 18:33:57 +00:00
2022-04-28 07:10:50 +00:00
apps.sort((a,b)=>{
var n=(0|a.sortorder)-(0|b.sortorder);
if (n) return n; // do sortorder first
if (a.name<b.name) return -1;
if (a.name>b.name) return 1;
return 0;
});
function findPath(key) {
let path = key.substring(0, key.lenght-3);
return path;
}
2022-04-28 07:10:50 +00:00
function save(key, value) {
let path = findPath(key);
// If changing from extension app (to something else) remove downstream settings entries.
if (settings[key].name == extension.name && value.name != extension.name) {
for (let c of [path+"lapp", path+"rapp", path+"uapp", path+"dapp", path+"tapapp"]) {
delete settings[c];
}
}
// If changing to extension app (from something else) add downstream settings entries.
if (value.name == "Quick Launch Extension" && settings[key].name != extension.name) {
for (let c of [path+"lapp", path+"rapp", path+"uapp", path+"dapp", path+"tapp"]) {
settings[c] = {"name":"(none)"};
}
}
// Now change the setting on the current level in the path.
2022-04-28 07:10:50 +00:00
settings[key] = value;
storage.write("quicklaunch.json",settings);
2022-04-28 07:10:50 +00:00
}
function showMainMenu() {
// Quick Launch menu
2022-04-28 07:10:50 +00:00
var mainmenu = {
"" : { "title" : "Quick Launch" },
"< Back" : ()=>{load();}
};
//List all selected apps
for (let key of settings.keys()) {
mainmenu[key+ ": "+settings[key].name] = function() {showSubMenu(key);};
}
2022-04-28 07:10:50 +00:00
return E.showMenu(mainmenu);
}
function showSubMenu(key) {
//Left swipe menu
var submenu = {
"" : { "title" : "path: "+findPath(key)},
"< Back" : showMainMenu
};
submenu["(none)"] = function() {
save(key, {"name":"(none)"});
2022-04-28 07:10:50 +00:00
showMainMenu();
};
apps.forEach((a)=>{
submenu[a.name] = function() {
save(key, a);
showMainMenu();
};
});
return E.showMenu(submenu);
}
2022-04-28 07:10:50 +00:00
showMainMenu();
})