BangleApps/apps/backswipe/settings.js

127 lines
3.2 KiB
JavaScript
Raw Normal View History

(function(back) {
2023-01-22 08:52:05 +00:00
var FILE = 'backswipe.json';
// Mode can be 'blacklist', 'whitelist', 'on' or 'disabled'
// 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': [],
'standardNumSwipeHandlers': 0,
'standardNumDragHandlers': 0
2023-01-22 08:52:05 +00:00
};
2023-01-22 08:52:05 +00:00
var settings = {};
2023-01-22 08:52:05 +00:00
var loadSettings = function() {
settings = require('Storage').readJSON(FILE, 1) || DEFAULTS;
};
2023-01-22 08:52:05 +00:00
var saveSettings = function(settings) {
require('Storage').write(FILE, settings);
};
2023-01-22 08:52:05 +00:00
// 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
};
}).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;
};
2023-01-22 08:52:05 +00:00
var showMenu = function() {
var menu = {
'': { 'title': 'Backswipe' },
'< Back': () => {
back();
},
'Mode': {
value: settings.mode,
min: 0,
max: 3,
format: v => ["Blacklist", "Whitelist", "Always On", "Disabled"][v],
onchange: v => {
settings.mode = v;
saveSettings(settings);
},
},
'App List': () => {
showAppSubMenu();
},
2023-02-08 11:39:27 +00:00
'Standard # of swipe handlers' : { // If more than this many handlers are present backswipe will not go back
value: 0|settings.standardNumSwipeHandlers,
min: 0,
max: 10,
format: v=>v,
onchange: v => {
settings.standardNumSwipeHandlers = v;
saveSettings(settings);
},
},
2023-02-08 11:39:27 +00:00
'Standard # of drag handlers' : { // If more than this many handlers are present backswipe will not go back
value: 0|settings.standardNumDragHandlers,
min: 0,
max: 10,
format: v=>v,
onchange: v => {
settings.standardNumDragHandlers = v;
saveSettings(settings);
},
2023-01-22 08:52:05 +00:00
}
2023-01-20 08:32:11 +00:00
};
2023-01-22 08:52:05 +00:00
E.showMenu(menu);
};
2023-01-22 08:52:05 +00:00
var showAppSubMenu = function() {
var menu = {
'': { 'title': 'Backswipe' },
'< 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': 'Backswipe' },
'< Back': () => {
showMenu();
}
};
apps.forEach(app => {
menu[app.name] = () => {
settings.apps.push(app);
saveSettings(settings);
showAppSubMenu();
}
});
E.showMenu(menu);
}
loadSettings();
showMenu();
})