mirror of https://github.com/espruino/BangleApps
116 lines
2.7 KiB
JavaScript
116 lines
2.7 KiB
JavaScript
(function(back) {
|
|
var FILE = 'autoreset.json';
|
|
// Mode can be 'blacklist' or 'whitelist'
|
|
// Apps is an array of app info objects, where all the apps that are there are either blocked or allowed, depending on the mode
|
|
var DEFAULTS = {
|
|
'mode': 0,
|
|
'apps': [],
|
|
'timeout': 10
|
|
};
|
|
|
|
var settings = {};
|
|
|
|
var loadSettings = function() {
|
|
settings = require('Storage').readJSON(FILE, 1) || DEFAULTS;
|
|
};
|
|
|
|
var saveSettings = function(settings) {
|
|
require('Storage').write(FILE, settings);
|
|
};
|
|
|
|
// Get all app info files
|
|
var getApps = function() {
|
|
var apps = require('Storage').list(/\.info$/).map(appInfoFileName => {
|
|
var appInfo = require('Storage').readJSON(appInfoFileName, 1);
|
|
return appInfo && {
|
|
'name': appInfo.name,
|
|
'sortorder': appInfo.sortorder,
|
|
'src': appInfo.src,
|
|
'files': appInfo.files
|
|
};
|
|
}).filter(app => app && !!app.src);
|
|
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;
|
|
});
|
|
return apps;
|
|
};
|
|
|
|
var showMenu = function() {
|
|
var menu = {
|
|
'': { 'title': 'Auto Reset' },
|
|
/*LANG*/'< Back': () => {
|
|
back();
|
|
},
|
|
/*LANG*/'Mode': {
|
|
value: settings.mode,
|
|
min: 0,
|
|
max: 1,
|
|
format: v => ["Blacklist", "Whitelist"][v],
|
|
onchange: v => {
|
|
settings.mode = v;
|
|
saveSettings(settings);
|
|
},
|
|
},
|
|
/*LANG*/'App List': () => {
|
|
showAppSubMenu();
|
|
},
|
|
/*LANG*/'Timeout [min]': {
|
|
value: settings.timeout,
|
|
min: 0.25, max: 30, step : 0.25,
|
|
format: v => v,
|
|
onchange: v => {
|
|
settings.timeout = v;
|
|
saveSettings(settings);
|
|
},
|
|
},
|
|
};
|
|
|
|
E.showMenu(menu);
|
|
};
|
|
|
|
var showAppSubMenu = function() {
|
|
var menu = {
|
|
'': { 'title': 'Auto Reset' },
|
|
'< Back': () => {
|
|
showMenu();
|
|
},
|
|
'Add App': () => {
|
|
showAppList();
|
|
}
|
|
};
|
|
settings.apps.forEach(app => {
|
|
menu[app.name] = () => {
|
|
settings.apps.splice(settings.apps.indexOf(app), 1);
|
|
saveSettings(settings);
|
|
showAppSubMenu();
|
|
}
|
|
});
|
|
E.showMenu(menu);
|
|
}
|
|
|
|
var showAppList = function() {
|
|
var apps = getApps();
|
|
var menu = {
|
|
'': { 'title': 'Auto Reset' },
|
|
/*LANG*/'< Back': () => {
|
|
showMenu();
|
|
}
|
|
};
|
|
apps.forEach(app => {
|
|
menu[app.name] = () => {
|
|
settings.apps.push(app);
|
|
saveSettings(settings);
|
|
showAppSubMenu();
|
|
}
|
|
});
|
|
E.showMenu(menu);
|
|
}
|
|
|
|
loadSettings();
|
|
showMenu();
|
|
})
|