calendar: Add menu

pull/3051/head
Erik Andresen 2023-10-15 10:17:03 +02:00
parent 7e28e75295
commit eb90dfa89a
2 changed files with 54 additions and 12 deletions

View File

@ -1,3 +1,4 @@
{
const maxX = g.getWidth(); const maxX = g.getWidth();
const maxY = g.getHeight(); const maxY = g.getHeight();
const fontSize = g.getWidth() > 200 ? 2 : 1; const fontSize = g.getWidth() > 200 ? 2 : 1;
@ -65,22 +66,22 @@ if (settings.ndColors === true) {
bgOtherEvent = cyan; bgOtherEvent = cyan;
} }
function getDowLbls(locale) { getDowLbls = function(locale) {
let days = startOnSun ? [0, 1, 2, 3, 4, 5, 6] : [1, 2, 3, 4, 5, 6, 0]; let days = startOnSun ? [0, 1, 2, 3, 4, 5, 6] : [1, 2, 3, 4, 5, 6, 0];
const d = new Date(); const d = new Date();
return days.map(i => { return days.map(i => {
d.setDate(d.getDate() + (i + 7 - d.getDay()) % 7); d.setDate(d.getDate() + (i + 7 - d.getDay()) % 7);
return require("locale").dow(d, 1); return require("locale").dow(d, 1);
}); });
} };
function sameDay(d1, d2) { sameDay = function(d1, d2) {
return d1.getFullYear() === d2.getFullYear() && return d1.getFullYear() === d2.getFullYear() &&
d1.getMonth() === d2.getMonth() && d1.getMonth() === d2.getMonth() &&
d1.getDate() === d2.getDate(); d1.getDate() === d2.getDate();
} };
function drawCalendar(date) { drawCalendar = function(date) {
g.setBgColor(bgColor); g.setBgColor(bgColor);
g.clearRect(0, 0, maxX, maxY); g.clearRect(0, 0, maxX, maxY);
g.setBgColor(bgColorMonth); g.setBgColor(bgColorMonth);
@ -231,9 +232,39 @@ function drawCalendar(date) {
); );
} }
} }
} };
function setUI() { showMenu = function() {
const menu = {
"" : {
title : "Calendar",
remove: () => {
require("widget_utils").show();
}
},
"< Back": () => {
require("widget_utils").hide();
E.showMenu();
drawCalendar(date);
setUI();
},
/*LANG*/"Settings": () => {
const appSettings = eval(require('Storage').read('calendar.settings.js'));
appSettings(showMenu);
},
/*LANG*/"Launch Alarms": () => {
load("alarm.app.js");
},
/*LANG*/"Exit": () => load(),
};
if (!require("Storage").read("alarm.app.js")) {
delete menu[/*LANG*/"Launch Alarms"];
}
require("widget_utils").show();
E.showMenu(menu);
};
setUI = function() {
Bangle.setUI({ Bangle.setUI({
mode : "custom", mode : "custom",
swipe: (dirLR, dirUD) => { swipe: (dirLR, dirUD) => {
@ -257,7 +288,14 @@ function setUI() {
drawCalendar(date); drawCalendar(date);
} }
}, },
btn: (n) => n === (process.env.HWVERSION === 2 ? 1 : 3) && load(), btn: (n) => {
if (process.env.HWVERSION === 2 || n === 2) {
showMenu();
} else if (n === 3) {
// directly exit only on Bangle.js 1
load();
}
},
touch: (n,e) => { touch: (n,e) => {
events.sort((a,b) => a.date - b.date); events.sort((a,b) => a.date - b.date);
const menu = events.filter(ev => ev.date.getFullYear() === date.getFullYear() && ev.date.getMonth() === date.getMonth()).map(e => { const menu = events.filter(ev => ev.date.getFullYear() === date.getFullYear() && ev.date.getMonth() === date.getMonth()).map(e => {
@ -270,15 +308,19 @@ function setUI() {
} }
menu[""] = { title: require("locale").month(date) + " " + date.getFullYear() }; menu[""] = { title: require("locale").month(date) + " " + date.getFullYear() };
menu["< Back"] = () => { menu["< Back"] = () => {
require("widget_utils").hide();
E.showMenu(); E.showMenu();
drawCalendar(date); drawCalendar(date);
setUI(); setUI();
}; };
require("widget_utils").show();
E.showMenu(menu); E.showMenu(menu);
} }
}); });
} };
drawCalendar(date); drawCalendar(date);
setUI(); setUI();
// No space for widgets! Bangle.loadWidgets();
require("widget_utils").hide(); // No space for widgets!
}

View File

@ -1,6 +1,6 @@
(function (back) { (function (back) {
var FILE = "calendar.json"; const FILE = "calendar.json";
var settings = require('Storage').readJSON(FILE, true) || {}; const settings = require('Storage').readJSON(FILE, true) || {};
if (settings.ndColors === undefined) if (settings.ndColors === undefined)
if (process.env.HWVERSION == 2) { if (process.env.HWVERSION == 2) {
settings.ndColors = true; settings.ndColors = true;