diff --git a/apps/agenda/ChangeLog b/apps/agenda/ChangeLog index c7ef328398..2c59c3cc28 100644 --- a/apps/agenda/ChangeLog +++ b/apps/agenda/ChangeLog @@ -2,3 +2,4 @@ 0.02: Added settings page to force calendar sync 0.03: Disable past events display from settings 0.04: Added awareness of allDay field +0.05: Displaying calendar colour and name diff --git a/apps/agenda/README.md b/apps/agenda/README.md index a546e0a89b..7063a70a24 100644 --- a/apps/agenda/README.md +++ b/apps/agenda/README.md @@ -1,3 +1,20 @@ # Agenda -Basic agenda reading the events synchronised from GadgetBridge +Basic agenda reading the events synchronised from GadgetBridge. + +### Functionalities + +* List all events in the next week (or whatever is synchronized) +* Optionally view past events (until GB removes them) +* Show start time and location of the events in the list +* Show the colour of the calendar in the list +* Display description, location and calendar name after tapping on events + +### Report a bug + +You can easily open an issue in the espruino repo, but I won't be notified and it might take time. +If you want a (hopefully) quicker response, just report [on my fork](https://github.com/glemco/BangleApps). + +### Known Problems + +Any all-day event lasts just one day: that is a GB limitation that we will likely fix in the future. diff --git a/apps/agenda/agenda.js b/apps/agenda/agenda.js index be618ae685..9cffe02651 100644 --- a/apps/agenda/agenda.js +++ b/apps/agenda/agenda.js @@ -6,6 +6,8 @@ title, description, location, + color:int, + calName, allDay: bool, } */ @@ -73,6 +75,8 @@ function showEvent(ev) { lines = lines.concat(/*LANG*/"Location"+": ", g.wrapString(ev.location, g.getWidth()-10)); if(ev.description) lines = lines.concat("",g.wrapString(ev.description, g.getWidth()-10)); + if(ev.calName) + lines = lines.concat(/*LANG*/"Calendar"+": ", g.wrapString(ev.calName, g.getWidth()-10)); lines = lines.concat(["",/*LANG*/"< Back"]); E.showScroller({ h : g.getFontHeight(), // height of each menu item in pixels @@ -116,17 +120,16 @@ function showList() { var body = formatDateShort(getDate(ev.timestamp),ev.allDay)+"\n"+(ev.location?ev.location:/*LANG*/"No location"); if(settings.pastEvents) isPast = ev.timestamp + ev.durationInSeconds < (new Date())/1000; if (title) g.setFontAlign(-1,-1).setFont(fontBig) - .setColor(isPast ? "#888" : g.theme.fg).drawString(title, x,r.y+2); + .setColor(isPast ? "#888" : g.theme.fg).drawString(title, x+4,r.y+2); if (body) { g.setFontAlign(-1,-1).setFont(fontMedium).setColor(isPast ? "#888" : g.theme.fg); - var l = g.wrapString(body, r.w-(x+14)); - if (l.length>3) { - l = l.slice(0,3); - l[l.length-1]+="..."; - } - g.drawString(l.join("\n"), x+10,r.y+20); + g.drawString(body, x+10,r.y+20); } g.setColor("#888").fillRect(r.x,r.y+r.h-1,r.x+r.w-1,r.y+r.h-1); // dividing line between items + if(ev.color) { + g.setColor("#"+(0x1000000+Number(ev.color)).toString(16).padStart(6,"0")); + g.fillRect(r.x,r.y+4,r.x+3, r.y+r.h-4); + } }, select : idx => showEvent(CALENDAR[idx]), back : () => load() diff --git a/apps/agenda/metadata.json b/apps/agenda/metadata.json index 50ea54c103..982870905d 100644 --- a/apps/agenda/metadata.json +++ b/apps/agenda/metadata.json @@ -1,7 +1,7 @@ { "id": "agenda", "name": "Agenda", - "version": "0.04", + "version": "0.05", "description": "Simple agenda", "icon": "agenda.png", "screenshots": [{"url":"screenshot_agenda_overview.png"}, {"url":"screenshot_agenda_event1.png"}, {"url":"screenshot_agenda_event2.png"}],