BangleApps/apps/qcenter/settings.js

156 lines
4.0 KiB
JavaScript
Raw Normal View History

2022-11-22 12:52:21 +00:00
// make sure to enclose the function in parentheses
(function (back) {
let settings = require("Storage").readJSON("qcenter.json", 1) || {};
var apps = require("Storage")
.list(/\.info$/)
.map((app) => {
var a = require("Storage").readJSON(app, 1);
return (
a && {
name: a.name,
type: a.type,
sortorder: a.sortorder,
src: a.src,
icon: a.icon,
}
);
})
.filter(
(app) =>
app &&
(app.type == "app" ||
app.type == "launch" ||
app.type == "clock" ||
!app.type)
);
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;
});
2022-11-22 12:52:21 +00:00
function save(key, value) {
settings[key] = value;
require("Storage").write("qcenter.json", settings);
}
2022-11-22 12:52:21 +00:00
var pinnedApps = settings.pinnedApps || [];
var exitGesture = settings.exitGesture || "swipeup";
2022-11-22 12:52:21 +00:00
function showMainMenu() {
var mainmenu = {
"": { title: "Quick Center", back: back},
};
2022-11-22 12:52:21 +00:00
// Set exit gesture
mainmenu["Exit Gesture: " + exitGesture] = function () {
E.showMenu(exitGestureMenu);
};
2022-11-22 12:52:21 +00:00
2023-01-30 17:27:21 +00:00
// Set Timeout
mainmenu["Timeout: " + (settings.timeout ? (settings.timeout+"s") : "Off")] = function () {
E.showMenu(timeoutMenu);
};
//List all pinned apps, redirecting to menu with options to unpin and reorder
pinnedApps.forEach((app, i) => {
mainmenu[app.name] = function () {
E.showMenu({
"": { title: app.name, back: showMainMenu },
"Unpin": () => {
pinnedApps.splice(i, 1);
save("pinnedApps", pinnedApps);
showMainMenu();
},
"Move Up": () => {
if (i > 0) {
pinnedApps.splice(i - 1, 0, pinnedApps.splice(i, 1)[0]);
save("pinnedApps", pinnedApps);
showMainMenu();
}
},
"Move Down": () => {
if (i < pinnedApps.length - 1) {
pinnedApps.splice(i + 1, 0, pinnedApps.splice(i, 1)[0]);
save("pinnedApps", pinnedApps);
showMainMenu();
}
},
});
};
});
2022-11-22 12:52:21 +00:00
// Show pin app menu, or show alert if max amount of apps are pinned
mainmenu["Pin App"] = function () {
if (pinnedApps.length < 6) {
E.showMenu(pinAppMenu);
} else {
E.showAlert("Max apps pinned").then(showMainMenu);
}
};
2022-11-22 12:52:21 +00:00
return E.showMenu(mainmenu);
}
2022-11-22 15:33:32 +00:00
// menu for adding apps to the quick launch menu, listing all apps
var pinAppMenu = {
"": { title: "Add App", back: showMainMenu }
};
apps.forEach((a) => {
pinAppMenu[a.name] = function () {
// strip unncecessary properties
delete a.type;
delete a.sortorder;
pinnedApps.push(a);
save("pinnedApps", pinnedApps);
showMainMenu();
};
});
2022-11-22 15:33:32 +00:00
// menu for setting exit gesture
var exitGestureMenu = {
"": { title: "Exit Gesture", back: showMainMenu }
};
exitGestureMenu["Swipe Up"] = function () {
exitGesture = "swipeup";
save("exitGesture", "swipeup");
showMainMenu();
};
exitGestureMenu["Swipe Down"] = function () {
exitGesture = "swipedown";
save("exitGesture", "swipedown");
showMainMenu();
};
exitGestureMenu["Swipe Left"] = function () {
exitGesture = "swipeleft";
save("exitGesture", "swipeleft");
showMainMenu();
};
exitGestureMenu["Swipe Right"] = function () {
exitGesture = "swiperight";
save("exitGesture", "swiperight");
showMainMenu();
};
2022-11-22 12:52:21 +00:00
2023-01-30 17:27:21 +00:00
// menu for setting timeout
var timeoutMenu = {
"": { title: "Timeout", back: showMainMenu }
};
timeoutMenu["Off"] = function () {
save("timeout", 0);
showMainMenu();
};
let timeoutvalues = [10,20,30,60];
for (c in timeoutvalues){
let v = timeoutvalues[c];
timeoutMenu[v+"s"] = function () {
save("timeout", v);
showMainMenu();
};
}
showMainMenu();
2022-11-22 12:52:21 +00:00
});