"tap to Cycle" setting

pull/1852/head
Rarder44 2022-05-20 01:26:11 +02:00
parent 07b53c5893
commit d760fcdf93
3 changed files with 99 additions and 27 deletions

View File

@ -5,4 +5,4 @@
0.05: added charging icon
0.06: Add 12h support and autocycle control
0.07: added localization, removed deprecated code
0.08: removed unused font, fix autocycle, imported suncalc and trimmed, removed pedometer dependency
0.08: removed unused font, fix autocycle, imported suncalc and trimmed, removed pedometer dependency, "tap to cycle" setting

View File

@ -37,7 +37,16 @@ function loadLocation() {
}
function loadSettings() {
settings = require("Storage").readJSON(SETTINGS_FILE,1)|| {'bg': '#0f0', 'color': 'Green', 'autoCycle': true};
settings = require("Storage").readJSON(SETTINGS_FILE,1)|| {'bg': '#0f0', 'color': 'Green', 'autoCycle': true,'sideTap':'on'};
let settings = {'bg': '#0f0', 'color': 'Green', 'autoCycle': true,'sideTap':'on'};
let tmp = require('Storage').readJSON(SETTINGS_FILE, 1) || settings;
for (const key in tmp) {
settings[key] = tmp[key]
}
if(settings.sideTap!='on')
sideBar=parseInt(settings.sideTap)-1; //tab to show
is12Hour = (require("Storage").readJSON(GLOBAL_SETTINGS, 1) || {})["12hour"] || false;
}
@ -251,20 +260,19 @@ function formatSteps() {
}
function nextSidebar() {
if (++sideBar > 2) sideBar = 0;
log_debug("next: " + sideBar);
}
function prevSidebar() {
if (--sideBar < 0) sideBar = 2;
log_debug("prev: " + sideBar);
}
Bangle.setUI("clockupdown", btn=> {
if (btn<0) prevSidebar();
if (btn>0) nextSidebar();
draw();
});
// timeout used to update every minute
@ -294,6 +302,24 @@ Bangle.loadWidgets();
for (let wd of WIDGETS) {wd.draw=()=>{};wd.area="";}
loadSettings();
loadLocation();
if(settings.autoCycle || settings.sideTap=='on')
{
Bangle.setUI("clockupdown", btn=> {
if (btn<0) prevSidebar();
if (btn>0) nextSidebar();
draw();
});
}
else{
Bangle.setUI("clock");
}
draw(); // queues the next draw for a minutes time
Bangle.on('charging', function(charging) {
//redraw the sidebar ( with the battery )

View File

@ -2,12 +2,13 @@
const SETTINGS_FILE = "rebble.json";
// initialize with default settings...
let localSettings = {'bg': '#0f0', 'color': 'Green', 'autoCycle': true}
let localSettings = {'bg': '#0f0', 'color': 'Green', 'autoCycle': true, 'sideTap':'on'};
// ...and overwrite them with any saved values
// This way saved values are preserved if a new version adds more settings
const storage = require('Storage')
let settings = storage.readJSON(SETTINGS_FILE, 1) || localSettings;
const saved = settings || {}
for (const key in saved) {
localSettings[key] = saved[key]
@ -21,26 +22,71 @@
var color_options = ['Green','Orange','Cyan','Purple','Red','Blue'];
var bg_code = ['#0f0','#ff0','#0ff','#f0f','#f00','#00f'];
E.showMenu({
'': { 'title': 'Rebble Clock' },
'< Back': back,
'Colour': {
value: 0 | color_options.indexOf(localSettings.color),
min: 0, max: 5,
format: v => color_options[v],
onchange: v => {
localSettings.color = color_options[v];
localSettings.bg = bg_code[v];
save();
function showMenu()
{
const menu={
'': { 'title': 'Rebble Clock' },
'< Back': back,
'Colour': {
value: 0 | color_options.indexOf(localSettings.color),
min: 0, max: 5,
format: v => color_options[v],
onchange: v => {
localSettings.color = color_options[v];
localSettings.bg = bg_code[v];
save();
},
},
},
'Auto Cycle': {
value: "autoCycle" in localSettings ? localSettings.autoCycle : true,
format: () => (localSettings.autoCycle ? 'Yes' : 'No'),
onchange: () => {
localSettings.autoCycle = !localSettings.autoCycle;
save();
'Auto Cycle': {
value: localSettings.autoCycle,
onchange: (v) => {
localSettings.autoCycle = v;
save();
showMenu();
}
}
};
if( !localSettings.autoCycle)
{
menu['Tap to Cycle']={
value: localSettings.sideTap,
onchange: () => setTimeout(showTapMenu, 100, changedValue => {
localSettings.sideTap=changedValue;
save();
setTimeout(showMenu, 10);
})
};
}
});
E.showMenu(menu);
}
function showTapMenu(changeCallback)
{
var current = localSettings.sideTap;
const menu = {
"": { "title": /*LANG*/"Tap to Cycle" },
"< Back": () => changeCallback(current),
"on": { // No days set: the alarm will fire once
value: current == 'on',
onchange: () => changeCallback('on')
},
"1": {
value: current == '1',
onchange: () => changeCallback('1')
},
"2": {
value: current == '2',
onchange: () => changeCallback('2')
},
"3": {
value: current == '3',
onchange: () => changeCallback('3')
},
};
E.showMenu(menu);
}
showMenu();
})