mirror of https://github.com/espruino/BangleApps
184 lines
4.4 KiB
JavaScript
184 lines
4.4 KiB
JavaScript
(function (back) {
|
|
var DEBUG = false;
|
|
var FILE = "swp2clk.data.json";
|
|
|
|
var settings = {};
|
|
|
|
var showMainMenu = () => {
|
|
log("Loading main menu");
|
|
|
|
E.showMenu({
|
|
"": { title: "Swipe to Clock" },
|
|
"< Back": () => back(),
|
|
Mode: {
|
|
value: settings.mode,
|
|
min: 0,
|
|
max: 3,
|
|
format: (value) => ["Off", "White List", "Black List", "Always"][value],
|
|
onchange: (value) => {
|
|
settings.mode = value;
|
|
writeSettings(settings);
|
|
},
|
|
},
|
|
"White List": () => showWhiteListMenu(),
|
|
"Black List": () => showBlackListMenu(),
|
|
});
|
|
};
|
|
|
|
var showWhiteListMenu = () => {
|
|
var appList = getAppList();
|
|
|
|
var whiteListMenu = {
|
|
"": { title: "White List" },
|
|
"< Back": () => showMainMenu(),
|
|
"_Add App_": () => {
|
|
var addAppMenu = {
|
|
"": { title: "Add app to WL" },
|
|
"< Back": () => showWhiteListMenu(),
|
|
};
|
|
|
|
appList.forEach((app) => {
|
|
if (settings.whiteList.indexOf(app.src) < 0) {
|
|
addAppMenu[app.name] = () => {
|
|
settings.whiteList.push(app.src);
|
|
writeSettings(settings);
|
|
showWhiteListMenu();
|
|
};
|
|
}
|
|
});
|
|
|
|
E.showMenu(addAppMenu);
|
|
},
|
|
};
|
|
|
|
appList.forEach((app) => {
|
|
if (settings.whiteList.indexOf(app.src) >= 0) {
|
|
let index = settings.whiteList.indexOf(app.src);
|
|
whiteListMenu[app.name] = () => {
|
|
E.showPrompt("Delete from WL?", {
|
|
title: "Delete from WL?",
|
|
buttons: { Yes: true, No: false },
|
|
}).then(function (flag) {
|
|
if (flag) {
|
|
settings.whiteList.splice(index, 1);
|
|
writeSettings(settings);
|
|
}
|
|
|
|
showWhiteListMenu();
|
|
});
|
|
};
|
|
}
|
|
});
|
|
|
|
log("Loading white list menu");
|
|
E.showMenu(whiteListMenu);
|
|
};
|
|
|
|
var showBlackListMenu = () => {
|
|
var appList = getAppList();
|
|
|
|
var blackListMenu = {
|
|
"": { title: "Black List" },
|
|
"< Back": () => showMainMenu(),
|
|
"_Add App_": () => {
|
|
var addAppMenu = {
|
|
"": { title: "Add app to BL" },
|
|
"< Back": () => showBlackListMenu(),
|
|
};
|
|
|
|
appList.forEach((app) => {
|
|
if (settings.blackList.indexOf(app.src) < 0) {
|
|
addAppMenu[app.name] = () => {
|
|
settings.blackList.push(app.src);
|
|
writeSettings(settings);
|
|
showBlackListMenu();
|
|
};
|
|
}
|
|
});
|
|
|
|
E.showMenu(addAppMenu);
|
|
},
|
|
};
|
|
|
|
appList.forEach((app) => {
|
|
if (settings.blackList.indexOf(app.src) >= 0) {
|
|
let index = settings.whiteList.indexOf(app.src);
|
|
blackListMenu[app.name] = () => {
|
|
E.showPrompt("Delete from BL?", {
|
|
title: "Delete from BL?",
|
|
buttons: { Yes: true, No: false },
|
|
}).then(function (flag) {
|
|
if (flag) {
|
|
settings.blackList.splice(index, 1);
|
|
writeSettings(settings);
|
|
}
|
|
|
|
showBlackListMenu();
|
|
});
|
|
};
|
|
}
|
|
});
|
|
|
|
log("Loading black list menu");
|
|
E.showMenu(blackListMenu);
|
|
};
|
|
|
|
// lib functions
|
|
|
|
var log = (message) => {
|
|
if (DEBUG) {
|
|
console.log(JSON.stringify(message));
|
|
}
|
|
};
|
|
|
|
var readSettings = () => {
|
|
log("reading settings");
|
|
var settings = require("Storage").readJSON(FILE, 1) || {
|
|
mode: 0,
|
|
whiteList: [],
|
|
blackList: [],
|
|
addSwipeHandler: false,
|
|
};
|
|
log(settings);
|
|
return settings;
|
|
};
|
|
|
|
var writeSettings = (settings) => {
|
|
log("writing settings");
|
|
log(settings);
|
|
require("Storage").writeJSON(FILE, settings);
|
|
};
|
|
|
|
var getAppList = () => {
|
|
var appList = storage
|
|
.list(/\.info$/)
|
|
.map((appInfoFileName) => {
|
|
var appInfo = storage.readJSON(appInfoFileName, 1);
|
|
return (
|
|
appInfo && {
|
|
name: appInfo.name,
|
|
// type: appInfo.type,
|
|
// icon: appInfo.icon,
|
|
sortorder: appInfo.sortorder,
|
|
src: appInfo.src,
|
|
}
|
|
);
|
|
})
|
|
.filter((app) => app && !!app.src);
|
|
appList.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;
|
|
});
|
|
|
|
return appList;
|
|
};
|
|
|
|
// start main function
|
|
|
|
settings = readSettings();
|
|
showMainMenu();
|
|
});
|