BangleApps/apps/messagelist/settings.js

140 lines
4.3 KiB
JavaScript
Raw Normal View History

2022-11-26 14:28:09 +00:00
(function(back) {
let settings = require("messagegui").settings();
const inApp = (global.__FILE__ && __FILE__.startsWith("messagelist."));
function updateSetting(setting, value) {
settings[setting] = value;
let file;
switch(setting) {
case "flash":
case "showRead":
case "iconColorMode":
case "maxMessages":
case "maxUnreadTimeout":
case "openMusic":
case "repeat":
case "unlockWatch":
case "unreadTimeout":
case "vibrate":
case "vibrateCalls":
case "vibrateTimeout":
// Default app has this setting: update that file
file = "messages";
break;
default:
// write to our own settings file
file = "messagelist";
}
file += ".settings.json";
let saved = require("Storage").readJSON(file, true) || {};
saved[setting] = value;
require("Storage").writeJSON(file, saved);
}
function toggler(setting) {
return {
value: !!settings[setting],
onchange: v => updateSetting(setting, v)
};
}
function showIfMenu() {
const tapOptions = [/*LANG*/"Message menu",/*LANG*/"Dismiss",/*LANG*/"Back",/*LANG*/"Nothing"];
E.showMenu({
"": {"title": /*LANG*/"Interface"},
"< Back": () => showMainMenu(),
/*LANG*/"Font size": {
value: 0|settings.fontSize,
min: 0, max: 2,
format: v => [/*LANG*/"Small",/*LANG*/"Medium",/*LANG*/"Large",/*LANG*/"Huge"][v],
onchange: v => updateSetting("fontSize", v)
},
/*LANG*/"On Tap": {
value: settings.onTap,
min: 0, max: tapOptions.length-1, wrap: true,
format: v => tapOptions[v],
onchange: v => updateSetting("onTap", v)
},
/*LANG*/"Dismiss button": toggler("button"),
});
}
function showBMenu() {
E.showMenu({
"": {"title": /*LANG*/"Behaviour"},
"< Back": () => showMainMenu(),
/*LANG*/"Vibrate": require("buzz_menu").pattern(settings.vibrate, v => updateSetting("vibrate", v)),
/*LANG*/"Vibrate for calls": require("buzz_menu").pattern(settings.vibrateCalls, v => updateSetting("vibrateCalls", v)),
/*LANG*/"Vibrate for alarms": require("buzz_menu").pattern(settings.vibrateAlarms, v => updateSetting("vibrateAlarms", v)),
/*LANG*/"Repeat": {
value: settings.repeat,
min: 0, max: 10,
format: v => v ? v+"s" :/*LANG*/"Off",
onchange: v => updateSetting("repeat", v)
},
/*LANG*/"Vibrate timer": {
value: settings.vibrateTimeout,
min: 0, max: 240, step: 10,
format: v => v ? v+"s" :/*LANG*/"Forever",
onchange: v => updateSetting("vibrateTimeout", v)
},
/*LANG*/"Unread timer": {
value: settings.unreadTimeout,
min: 0, max: 240, step: 10,
format: v => v ? v+"s" :/*LANG*/"Off",
onchange: v => updateSetting("unreadTimeout", v)
},
/*LANG*/"Auto-open": toggler("autoOpen"),
});
}
function showMusicMenu() {
E.showMenu({
"": {"title": /*LANG*/"Music"},
"< Back": () => showMainMenu(),
/*LANG*/"Auto-open": toggler("openMusic"),
/*LANG*/"Always visible": toggler("alwaysShowMusic"),
/*LANG*/"Buttons": toggler("musicButtons"),
/*LANG*/"Show album": toggler("showAlbum"),
});
}
function showWidMenu() {
E.showMenu({
"": {"title": /*LANG*/"Widget"},
"< Back": () => showMainMenu(),
/*LANG*/"Flash icon": toggler("flash"),
// /*LANG*/"Show Read": toggler("showRead"),
});
}
function showUtilsMenu() {
2024-03-04 20:34:50 +00:00
E.showMenu({
2022-11-26 14:28:09 +00:00
"": {"title": /*LANG*/"Utilities"},
"< Back": () => showMainMenu(),
/*LANG*/"Delete all": () => {
E.showPrompt(/*LANG*/"Are you sure?",
{title:/*LANG*/"Delete All Messages"})
.then(isYes => {
if (isYes) require("messages").write([]);
showUtilsMenu();
});
}
});
}
function showMainMenu() {
E.showMenu({
"": {"title": inApp ?/*LANG*/"Settings" :/*LANG*/"Messages"},
"< Back": back,
/*LANG*/"Interface": () => showIfMenu(),
/*LANG*/"Behaviour": () => showBMenu(),
/*LANG*/"Music": () => showMusicMenu(),
/*LANG*/"Widget": () => showWidMenu(),
/*LANG*/"Utils": () => showUtilsMenu(),
});
}
showMainMenu();
})