2022-11-22 12:52:21 +00:00
|
|
|
// make sure to enclose the function in parentheses
|
|
|
|
(function (back) {
|
2022-11-30 17:18:31 +00:00
|
|
|
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
|
|
|
|
2022-11-30 17:18:31 +00:00
|
|
|
function save(key, value) {
|
|
|
|
settings[key] = value;
|
|
|
|
require("Storage").write("qcenter.json", settings);
|
|
|
|
}
|
2022-11-22 12:52:21 +00:00
|
|
|
|
2022-11-30 17:18:31 +00:00
|
|
|
var pinnedApps = settings.pinnedApps || [];
|
|
|
|
var exitGesture = settings.exitGesture || "swipeup";
|
2022-11-22 12:52:21 +00:00
|
|
|
|
2022-11-30 17:18:31 +00:00
|
|
|
function showMainMenu() {
|
|
|
|
var mainmenu = {
|
|
|
|
"": { title: "Quick Center", back: back},
|
2022-11-30 17:11:59 +00:00
|
|
|
};
|
2022-11-22 12:52:21 +00:00
|
|
|
|
2022-11-30 17:18:31 +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);
|
|
|
|
};
|
|
|
|
|
2022-11-30 17:18:31 +00:00
|
|
|
//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
|
|
|
|
2022-11-30 17:18:31 +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
|
|
|
|
2022-11-30 17:18:31 +00:00
|
|
|
return E.showMenu(mainmenu);
|
|
|
|
}
|
2022-11-22 15:33:32 +00:00
|
|
|
|
2022-11-30 17:18:31 +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
|
|
|
|
2022-11-30 17:18:31 +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();
|
|
|
|
};
|
|
|
|
}
|
|
|
|
|
2022-11-30 17:18:31 +00:00
|
|
|
showMainMenu();
|
2022-11-22 12:52:21 +00:00
|
|
|
});
|