Skip to content

Commit eab1c32

Browse files
authored
Merge pull request #3001 from lauzonhomeschool/alarm_type_and_settings
Alarm type and settings; fix drag keyboards colors settings
2 parents abc6b67 + 2c6209e commit eab1c32

File tree

12 files changed

+94
-12
lines changed

12 files changed

+94
-12
lines changed

apps/alarm/ChangeLog

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,3 +45,4 @@
4545
0.40: Use substring of message when it's longer than fits the designated menu entry.
4646
0.41: Fix a menu bug affecting alarms with empty messages.
4747
0.42: Fix date not getting saved in event edit menu when tapping Confirm
48+
0.43: New settings: Show confirm, Show Overflow, Show Type.

apps/alarm/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ It uses the [`sched` library](https://github.com/espruino/BangleApps/blob/master
1313
- `Repeat` → Select when the alarm will fire. You can select a predefined option (_Once_, _Every Day_, _Workdays_ or _Weekends_ or you can configure the days freely)
1414
- `New Timer` → Configure a new timer (triggered based on amount of time elapsed in hours/minutes/seconds)
1515
- `New Event` → Configure a new event (triggered based on time and date)
16-
- `Repeat` → Alarm can be be fired only once or repeated (every X number of _days_, _weeks_, _months_ or _years_)
16+
- `Repeat` → Alarm can be fired only once or repeated (every X number of _days_, _weeks_, _months_ or _years_)
1717
- `Advanced`
1818
- `Scheduler settings` → Open the [Scheduler](https://github.com/espruino/BangleApps/tree/master/apps/sched) settings page, see its [README](https://github.com/espruino/BangleApps/blob/master/apps/sched/README.md) for details
1919
- `Enable All` → Enable _all_ disabled alarms & timers

apps/alarm/app.js

Lines changed: 29 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,11 @@
11
Bangle.loadWidgets();
22
Bangle.drawWidgets();
33

4+
const settings = Object.assign({
5+
showConfirm : true,
6+
showAutoSnooze : true,
7+
showHidden : true
8+
}, require('Storage').readJSON('alarm.json',1)||{});
49
// 0 = Sunday (default), 1 = Monday
510
const firstDayOfWeek = (require("Storage").readJSON("setting.json", true) || {}).firstDayOfWeek || 0;
611
const WORKDAYS = 62;
@@ -51,12 +56,14 @@ function getLabel(e) {
5156
}
5257

5358
function trimLabel(label, maxLength) {
59+
if(settings.showOverflow) return label;
5460
return (label.length > maxLength
5561
? label.substring(0,maxLength-3) + "..."
5662
: label.substring(0,maxLength));
5763
}
5864

59-
function formatAlarmMessage(msg) {
65+
function formatAlarmProperty(msg) {
66+
if(settings.showOverflow) return msg;
6067
if (msg == null) {
6168
return msg;
6269
} else if (msg.length > 7) {
@@ -155,7 +162,7 @@ function showEditAlarmMenu(selectedAlarm, alarmIndex, withDate) {
155162
},
156163
/*LANG*/"Message": {
157164
value: alarm.msg,
158-
format: formatAlarmMessage,
165+
format: formatAlarmProperty,
159166
onchange: () => {
160167
setTimeout(() => {
161168
keyboard.input({text:alarm.msg}).then(result => {
@@ -166,6 +173,19 @@ function showEditAlarmMenu(selectedAlarm, alarmIndex, withDate) {
166173
}, 100);
167174
}
168175
},
176+
/*LANG*/"Group": {
177+
value: alarm.group,
178+
format: formatAlarmProperty,
179+
onchange: () => {
180+
setTimeout(() => {
181+
keyboard.input({text:alarm.group}).then(result => {
182+
alarm.group = result;
183+
prepareAlarmForSave(alarm, alarmIndex, time, date, true);
184+
setTimeout(showEditAlarmMenu, 10, alarm, alarmIndex, withDate);
185+
});
186+
}, 100);
187+
}
188+
},
169189
/*LANG*/"Enabled": {
170190
value: alarm.on,
171191
onchange: v => alarm.on = v
@@ -197,6 +217,10 @@ function showEditAlarmMenu(selectedAlarm, alarmIndex, withDate) {
197217
};
198218

199219
if (!keyboard) delete menu[/*LANG*/"Message"];
220+
if (!keyboard || !settings.showGroup) delete menu[/*LANG*/"Group"];
221+
if (!settings.showConfirm) delete menu[/*LANG*/"Confirm"];
222+
if (!settings.showAutoSnooze) delete menu[/*LANG*/"Auto Snooze"];
223+
if (!settings.showHidden) delete menu[/*LANG*/"Hidden"];
200224
if (!alarm.date) {
201225
delete menu[/*LANG*/"Day"];
202226
delete menu[/*LANG*/"Month"];
@@ -387,7 +411,7 @@ function showEditTimerMenu(selectedTimer, timerIndex) {
387411
},
388412
/*LANG*/"Message": {
389413
value: timer.msg,
390-
format: formatAlarmMessage,
414+
format: formatAlarmProperty,
391415
onchange: () => {
392416
setTimeout(() => {
393417
keyboard.input({text:timer.msg}).then(result => {
@@ -420,6 +444,8 @@ function showEditTimerMenu(selectedTimer, timerIndex) {
420444
};
421445

422446
if (!keyboard) delete menu[/*LANG*/"Message"];
447+
if (!settings.showConfirm) delete menu[/*LANG*/"Confirm"];
448+
if (!settings.showHidden) delete menu[/*LANG*/"Hidden"];
423449
if (!isNew) {
424450
menu[/*LANG*/"Delete"] = () => {
425451
E.showPrompt(getLabel(timer) + "\n" + /*LANG*/"Are you sure?", { title: /*LANG*/"Delete Timer" }).then((confirm) => {

apps/alarm/metadata.json

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"id": "alarm",
33
"name": "Alarms & Timers",
44
"shortName": "Alarms",
5-
"version": "0.42",
5+
"version": "0.43",
66
"description": "Set alarms and timers on your Bangle",
77
"icon": "app.png",
88
"tags": "tool,alarm",
@@ -11,7 +11,8 @@
1111
"dependencies": { "scheduler":"type", "alarm":"widget" },
1212
"storage": [
1313
{ "name": "alarm.app.js", "url": "app.js" },
14-
{ "name": "alarm.img", "url": "app-icon.js", "evaluate": true }
14+
{ "name": "alarm.img", "url": "app-icon.js", "evaluate": true },
15+
{ "name": "alarm.settings.js", "url":"settings.js" }
1516
],
1617
"screenshots": [
1718
{ "url": "screenshot-1.png" },
@@ -25,5 +26,6 @@
2526
{ "url": "screenshot-9.png" },
2627
{ "url": "screenshot-10.png" },
2728
{ "url": "screenshot-11.png" }
28-
]
29+
],
30+
"data":[ {"name":"alarm.settings.json"} ]
2931
}

apps/alarm/settings.js

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
(function(back) {
2+
let settings = Object.assign({
3+
showConfirm : true,
4+
showAutoSnooze : true,
5+
showHidden : true
6+
}, require('Storage').readJSON('alarm.json',1)||{});
7+
8+
const save = () => require('Storage').write('alarm.json', settings);
9+
const DATE_FORMATS = ['default', 'mmdd'];
10+
const DATE_FORMATS_LABELS = [/*LANG*/'Default', /*LANG*/'MMDD'];
11+
12+
const appMenu = {
13+
'': {title: 'alarm'}, '< Back': back,
14+
/*LANG*/'Menu Date Format': {
15+
value: DATE_FORMATS.indexOf(settings.menuDateFormat || 'default'),
16+
format: v => DATE_FORMATS_LABELS[v],
17+
min: 0,
18+
max: DATE_FORMATS.length - 1,
19+
onchange : v => {
20+
if(v > 0) {
21+
settings.menuDateFormat=DATE_FORMATS[v];
22+
} else {
23+
delete settings.menuDateFormat;
24+
}
25+
save();
26+
}
27+
},
28+
/*LANG*/'Show Menu Auto Snooze': {
29+
value : !!settings.showAutoSnooze,
30+
onchange : v => { settings.showAutoSnooze=v; save();}
31+
},
32+
/*LANG*/'Show Menu Confirm': {
33+
value : !!settings.showConfirm,
34+
onchange : v => { settings.showConfirm=v; save();}
35+
},
36+
/*LANG*/'Show Menu Hidden': {
37+
value : !!settings.showHidden,
38+
onchange : v => { settings.showHidden=v; save();}
39+
},
40+
/*LANG*/'Show Menu Group': {
41+
value : !!settings.showGroup,
42+
onchange : v => { settings.showGroup=v; save();}
43+
},
44+
/*LANG*/'Show Text Overflow': {
45+
value : !!settings.showOverflow,
46+
onchange : v => { settings.showOverflow=v; save();}
47+
},
48+
};
49+
50+
E.showMenu(appMenu);
51+
});

apps/dragboard/ChangeLog

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,3 +7,4 @@
77
0.07: Settings for display colors
88
0.08: Catch and discard swipe events on fw2v19 and up (as well as some cutting
99
edge 2v18 ones), allowing compatability with the Back Swipe app.
10+
0.09: Fix colors settings, where color was stored as string instead of the expected int.

apps/dragboard/metadata.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{ "id": "dragboard",
22
"name": "Dragboard",
3-
"version":"0.08",
3+
"version":"0.09",
44
"description": "A library for text input via swiping keyboard",
55
"icon": "app.png",
66
"type":"textinput",

apps/dragboard/settings.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
value: settings[key] == color,
2222
onchange: () => {
2323
if (color >= 0) {
24-
settings[key] = color;
24+
settings[key] = parseInt(color);
2525
} else {
2626
delete settings[key];
2727
}

apps/draguboard/ChangeLog

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
0.01: New App based on dragboard, but with a U shaped drag area
22
0.02: Catch and discard swipe events on fw2v19 and up (as well as some cutting
33
edge 2v18 ones), allowing compatability with the Back Swipe app.
4+
0.03: Fix "Uncaught Error: Unhandled promise rejection: ReferenceError: "dragHandlerDB" is not defined"

apps/draguboard/lib.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,7 @@ exports.input = function(options) {
148148
g.clearRect(Bangle.appRect);
149149
resolve(text);
150150
},
151-
drag: dragHandlerDB
151+
drag: dragHandlerUB
152152
});
153153
Bangle.prependListener&&Bangle.prependListener('swipe', catchSwipe); // Intercept swipes on fw2v19 and later. Should not break on older firmwares.
154154

apps/draguboard/metadata.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{ "id": "draguboard",
22
"name": "DragUboard",
3-
"version":"0.02",
3+
"version":"0.03",
44
"description": "A library for text input via swiping U-shaped keyboard.",
55
"icon": "app.png",
66
"type":"textinput",

apps/draguboard/settings.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
value: settings[key] == color,
2222
onchange: () => {
2323
if (color >= 0) {
24-
settings[key] = color;
24+
settings[key] = parseInt(color);
2525
} else {
2626
delete settings[key];
2727
}

0 commit comments

Comments
 (0)