From bae67ecf6d6907d3e95dc9335ab4f3845c4406c7 Mon Sep 17 00:00:00 2001 From: "Minges, Alexander Ralph Michael (almin100)" Date: Fri, 17 Dec 2021 13:51:18 +0100 Subject: [PATCH] calendar: use non-dithering colors by default; localize strings; remove unused variables --- apps.json | 2 +- apps/calendar/ChangeLog | 1 + apps/calendar/README.md | 1 + apps/calendar/calendar-icon.js | 6 +- apps/calendar/calendar.js | 140 +++++++++++++++++++------- apps/calendar/calendar.png | Bin 540 -> 7227 bytes apps/calendar/screenshot_calendar.png | Bin 3866 -> 1174 bytes apps/calendar/settings.js | 20 +++- 8 files changed, 122 insertions(+), 48 deletions(-) diff --git a/apps.json b/apps.json index b4ff19d42..2c2073f9e 100644 --- a/apps.json +++ b/apps.json @@ -2429,7 +2429,7 @@ { "id": "calendar", "name": "Calendar", - "version": "0.03", + "version": "0.04", "description": "Simple calendar", "icon": "calendar.png", "screenshots": [{"url":"screenshot_calendar.png"}], diff --git a/apps/calendar/ChangeLog b/apps/calendar/ChangeLog index de887bfa7..fc0fb287b 100644 --- a/apps/calendar/ChangeLog +++ b/apps/calendar/ChangeLog @@ -1,3 +1,4 @@ 0.01: Basic calendar 0.02: Make Bangle 2 compatible 0.03: Add setting to start week on Sunday +0.04: Add setting to switch color schemes. Default color scheme will now use colors that are not dithered on Bangle 2. Use localized names for months and days of the week (Language app needed). diff --git a/apps/calendar/README.md b/apps/calendar/README.md index e22d06573..ec759eb26 100644 --- a/apps/calendar/README.md +++ b/apps/calendar/README.md @@ -10,4 +10,5 @@ Basic calendar ## Settings - Starts on Sunday: whether the calendar should start on Sunday (default is Monday). +- Non-dithering Colors: use non-dithering colors (default, recommended for Bangle 2) or the original color scheme. diff --git a/apps/calendar/calendar-icon.js b/apps/calendar/calendar-icon.js index ed1bf3667..dd65290b0 100644 --- a/apps/calendar/calendar-icon.js +++ b/apps/calendar/calendar-icon.js @@ -1,5 +1 @@ -require("heatshrink").decompress( - atob( - "mEwxH+AH4A/ADuIUCARRDhgePCKIv13YAEDoYJFAA4RJFyQvcGBYRGy4dDy4uLCJgv/DoOBDgOBF5oRLF6IeBDgIvNCJYvQDwQuNCJovRADov/F9OsAEgv/F/4vhwIACAqYv/F/4vnd94vvX/4v/F/7vvF96//F/4v/d94v/F/4wsFxQwjFxgA/AH4A/AH4AZA==" - ) -) +E.toArrayBuffer(atob("MDCDAkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkgEkkkkkkkgEkkkkkkkkkkkkkPwkkkkkkkPwkkkkkkkkkkkkkPwkkkkkkkPwkkkkkkkkkgAAAPwAAAAAAAPwAAAEkkkkkCSSSPwSSSSSSSPwSSSQkkkkkCSSSPwSSSSSSSPwSSSQkkkkkCSSSPwSSSSSSSPwSSSQkkkkkCSSSPwSSSSSSSPwSSSQkkkkkCSSSQCSSSSSSSQCSSSQkkkkkCSSSSSSSSSSSSSSSSSQkkkkkCSSSSSSSSSSSSSSSSSQkkkkkCSSSSSSSSSSSSSSSSSQkkkkkCSSSSSSSSSSSSSSSSSQkkkkkP/////////////////wkkkkkP/////////////////wkkkkkP/////////////////wkkkkkP/////////////////wkkkkkP//+AB+AB+AB+AB///wkkkkkP//+AB+AB+AB+AB///wkkkkkP//+AB+AB+AB+AB///wkkkkkP//+AB+AB+AB+AB///wkkkkkP/////////////////wkkkkkP/////////////////wkkkkkP//+AB+AB+AB+AB///wkkkkkP//+AB+AB+AB+AB///wkkkkkP//+AB+AB+AB+AB///wkkkkkP//+AB+AB+AB+AB///wkkkkkP/////////////////wkkkkkP/////////////////wkkkkkP//+AB+AB+AB+AB///wkkkkkP//+AB+AB+AB+AB///wkkkkkP//+AB+AB+AB+AB///wkkkkkP//+AB+AB+AB+AB///wkkkkkP/////////////////wkkkkkP/////////////////wkkkkkP/////////////////wkkkkkP/////////////////wkkkkkh////////////////+EkkkkkkAAAAAAAAAAAAAAAAAkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkg==")) \ No newline at end of file diff --git a/apps/calendar/calendar.js b/apps/calendar/calendar.js index 5707bd97a..7da903923 100644 --- a/apps/calendar/calendar.js +++ b/apps/calendar/calendar.js @@ -1,6 +1,6 @@ const maxX = g.getWidth(); const maxY = g.getHeight(); -const fontSize = g.getWidth()>200?2:1; +const fontSize = g.getWidth() > 200 ? 2 : 1; const rowN = 7; const colN = 7; const headerH = maxY / 7; @@ -10,26 +10,105 @@ const color1 = "#035AA6"; const color2 = "#4192D9"; const color3 = "#026873"; const color4 = "#038C8C"; -const color5 = "#03A696"; +const gray1 = "#bbbbbb"; const black = "#000000"; const white = "#ffffff"; -const gray1 = "#444444"; -const gray2 = "#888888"; -const gray3 = "#bbbbbb"; const red = "#d41706"; +const blue = "#0000ff"; +const yellow = "#ffff00"; let settings = require('Storage').readJSON("calendar.json", true) || {}; if (settings.startOnSun === undefined) settings.startOnSun = false; +if (settings.ndColor === undefined) + settings.ndColor = true; + +if (settings.ndColor === true) { + let bgColor = white; + let bgColorMonth = blue; + let bgColorDow = black; + let bgColorWeekend = yellow; + let fgOtherMonth = blue; + let fgSameMonth = black; +} else { + let bgColor = color4; + let bgColorMonth = color1; + let bgColorDow = color2; + let bgColorWeekend = color3; + let fgOtherMonth = gray1; + let fgSameMonth = white; +} + +function getDowLbls(locale) { + let dowLbls; + //TODO: Find some clever way to generate this programmatically from locale lib + switch (locale) { + case "de_AT": + case "de_CH": + case "de_DE": + if (settings.startOnSun) { + dowLbls = ["So", "Mo", "Di", "Mi", "Do", "Fr", "Sa"]; + } else { + dowLbls = ["Mo", "Di", "Mi", "Do", "Fr", "Sa", "So"]; + } + break; + case "nl_NL": + if (settings.startOnSun) { + dowLbls = ["zo", "ma", "di", "wo", "do", "vr", "za"]; + } else { + dowLbls = ["ma", "di", "wo", "do", "vr", "za", "zo"]; + } + break; + case "fr_BE": + case "fr_CH": + case "fr_FR": + if (settings.startOnSun) { + dowLbls = ["Di", "Lu", "Ma", "Me", "Je", "Ve", "Sa"]; + } else { + dowLbls = ["Lu", "Ma", "Me", "Je", "Ve", "Sa", "Di"]; + } + break; + case "sv_SE": + if (settings.startOnSun) { + dowLbls = ["Di", "Lu", "Ma", "Me", "Je", "Ve", "Sa"]; + } else { + dowLbls = ["Lu", "Ma", "Me", "Je", "Ve", "Sa", "Di"]; + } + break; + case "it_CH": + case "it_IT": + if (settings.startOnSun) { + dowLbls = ["Do", "Lu", "Ma", "Me", "Gi", "Ve", "Sa"]; + } else { + dowLbls = ["Lu", "Ma", "Me", "Gi", "Ve", "Sa", "Do"]; + } + break; + case "oc_FR": + if (settings.startOnSun) { + dowLbls = ["dg", "dl", "dm", "dc", "dj", "dv", "ds"]; + } else { + dowLbls = ["dl", "dm", "dc", "dj", "dv", "ds", "dg"]; + } + break; + default: + if (settings.startOnSun) { + dowLbls = ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"]; + } else { + dowLbls = ["Mo", "Tu", "We", "Th", "Fr", "Sa", "Su"]; + } + break; + } + return dowLbls; +} function drawCalendar(date) { - g.setBgColor(color4); + g.setBgColor(bgColor); g.clearRect(0, 0, maxX, maxY); - g.setBgColor(color1); + g.setBgColor(bgColorMonth); g.clearRect(0, 0, maxX, headerH); - g.setBgColor(color2); + g.setBgColor(bgColorDow); g.clearRect(0, headerH, maxX, headerH + rowH); - g.setBgColor(color3); + g.setBgColor(bgColorWeekend); g.clearRect(colW * 5, headerH + rowH, maxX, maxY); for (let y = headerH; y < maxY; y += rowH) { g.drawLine(0, y, maxX, y); @@ -40,24 +119,11 @@ function drawCalendar(date) { const month = date.getMonth(); const year = date.getFullYear(); - const monthMap = { - 0: "January", - 1: "February", - 2: "March", - 3: "April", - 4: "May", - 5: "June", - 6: "July", - 7: "August", - 8: "September", - 9: "October", - 10: "November", - 11: "December" - }; + const localeMonth = require('locale').month(date); g.setFontAlign(0, 0); g.setFont("6x8", fontSize); g.setColor(white); - g.drawString(`${monthMap[month]} ${year}`, maxX / 2, headerH / 2); + g.drawString(`${localeMonth} ${year}`, maxX / 2, headerH / 2); g.drawPoly([10, headerH / 2, 20, 10, 20, headerH - 10], true); g.drawPoly( [maxX - 10, headerH / 2, maxX - 20, 10, maxX - 20, headerH - 10], @@ -65,12 +131,7 @@ function drawCalendar(date) { ); g.setFont("6x8", fontSize); - let dowLbls; - if (settings.startOnSun) { - dowLbls = ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"]; - } else { - dowLbls = ["Mo", "Tu", "We", "Th", "Fr", "Sa", "Su"]; - } + let dowLbls = getDowLbls(require('locale').name); dowLbls.forEach((lbl, i) => { g.drawString(lbl, i * colW + colW / 2, headerH + rowH / 2); }); @@ -120,14 +181,19 @@ function drawCalendar(date) { today.year === year && today.month === month && today.day === day - 50; if (isToday) { g.setColor(red); + let x1 = x * colW; + let y1 = y * rowH + headerH + rowH; + let x2 = x * colW + colW; + let y2 = y * rowH + headerH + rowH + rowH; + g.drawRect(x1, y1, x2, y2); g.drawRect( - x * colW, - y * rowH + headerH + rowH, - x * colW + colW - 1, - y * rowH + headerH + rowH + rowH + x1 + 1, + y1 + 1, + x2 - 1, + y2 - 1 ); } - g.setColor(day < 50 ? gray3 : white); + g.setColor(day < 50 ? fgOtherMonth : fgSameMonth); g.drawString( (day > 50 ? day - 50 : day).toString(), x * colW + colW / 2, @@ -145,10 +211,10 @@ const today = { }; drawCalendar(date); clearWatch(); -Bangle.on("touch",area=>{ +Bangle.on("touch", area => { const month = date.getMonth(); let prevMonth; - if (area==1) { + if (area == 1) { let prevMonth = month > 0 ? month - 1 : 11; if (prevMonth === 11) date.setFullYear(date.getFullYear() - 1); date.setMonth(prevMonth); diff --git a/apps/calendar/calendar.png b/apps/calendar/calendar.png index 056cab3b7e36928e0f00a595b1fa7b9e0fb9b5f4..ccbcce5fff4e578b44d2e1ba87d21339e5dd19e0 100644 GIT binary patch literal 7227 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 GhyMqGu%7Dx delta 527 zcmV+q0`UF2IGhBK7=H)`000120{Mpk000JJOGiWi{{a60|De66lK=n#(Md!>RA_3Yeo!PqkmL}w75xqU4f#*xoI~x=(AHoDK|@6lHAOkK z2|YmzTk@R-qfF0J@5{If_cQs<(eFK9?(y8mdw{|4C&eh;#)q2~>VEp+>k>&h0I9gmq7>NBbn)jhRBa@iL(PxcUDnND%PDHLkV1k+>_pbl| diff --git a/apps/calendar/screenshot_calendar.png b/apps/calendar/screenshot_calendar.png index 4507d77dd0cbf962e6f435c5d310f481a12f254c..8285932c430aa2fee31b769b9d8b7ae071953fc4 100644 GIT binary patch delta 1166 zcmV;91abSC9+nA^7=Hu<00018nfYx10004VQb$4nuFf3k0000FP)t-s000000RR60 z0RR60|NsBV7sHV0O3BsVvz&L&;^=7-TzGU!4|t{ zNsb4TS$K9yIEiG6&*dWIVl$TVo0?4U1iv5Hz71@+2BXHqUVi~weIV5iuv)DhSS_Vk zF)OfQ1&=r!!Kja5vtrf`%;K~*jb>)0m>m>XU<3oD9KnEaENFf!r&!;i+?N~Y%qhh@fEeA_VGes55Bfv zn&6ed%V342;sNY~Vg`d1FN5O2imn(@>waYgNb$;6?0=dSAS(c}!UrpGZp9iZ!-@o# zl2+7GX!2Zyz;W_?@>ZEQ$OQj~z%RAGxP50ze{#piH(K%eyF8wX-&nD0f`t<(jz1rx z$>Yoe*ne|$-L@9fqNL7Qt5Pt3a!P*y5I7{j>k=`&Y}+Q=x~(1TLW&1GE2j8&hr0)O zSt6#FZClr-dIt|kO5s5ypI;xeey(> zwys*XZ54^dz`XOO;(t@|Yhn5iwZCV{JHc-W)_*91Jbro(YDBBY6G9*KBKbkzN~J@B zxJKFLt>W|@>`~3NS5!(6*`I7-+KRhFnCh;@Tal|fST%CaK_?oeux6Nc#p^nxwB~97 z4reQ}1N-}mCmd--Dqi<$I>5@{E^O#{1nU(z6^m$}JQvBydtQ2hy_g*?5!qh2DCBcQjx9!GZO8cb_+N>rp_GDB5uAYkT_rZ!ATao{I z6-~u1v1c7AnBaW__$w=N|JeH&rR{~VLWXt4Irv7CC!z`7cZLro@5AKLe#O0%1b>%u zn>WY=&y=1iJ;84WZeQSu@ioWS_FbgC!xCKDkO4VMLPagbvlP+^<=o zk#d(2Gvb7~9dSY>v?@X&*$~}T>g08&+~ad?*uy=i^Ialg!%aR4qI8G91c9~ z*8m?nm@DdLJPsWHeFqB@zVaT~c|JbKkQK_DhO^vs|u=?(5vW!rZ;+H&CY3Kd;vD zJ|H;Ybx><#P%M4g*7GwZhHm1eNDI<(5~REWDAI5%jt!Y-Ds)z7?c0o)7~aatEUw9E zd`ogX)EfAfxUdFI^9O;Ibhj?E6FTpdQTDcm^QAauyTAKWbfpLty{G_Y%#F{=ul-}x zjTAUd6>9<8-dzJP7y4ezxIGNtE6>?>1$UC&cVg$Cl+_P{$4#jM{XOw?!{xB> zY!9p#P{=ymzg0Hx~BiL>lW&1Fi&jCD76`|sNL{93=s*2TncqULc8vU1fm9zOO zO0qg6Iy|k2qxM~6`KD3C-GK#gi@_xeuZjWY$F&cGE8Ovy-970rK<|vD@9ezZ?a8oU zqr)pEU^Oo4AIqJ=@SPaC!dS&VJVt*N8&f@MGFIqv2i zEYyL2K=6T(T!2*(+8s6x((h~nw)u3+PG%;MbfRqI>#TRBuCM|@jp$T}(l0jQvTTkXvO z6f&>9*uBZ5{H+BdOg=f8u%@%Sx=)H?E}I8S7phpjQPz4Wvm@nsDRe<%r>ysB{TsMz zST3uwcfaWf?zi{6ix0J*)_!+7J=Q@Ci3yd2soLt2|E}+U(SIJ0Wjr8#7k8SWs*{O`oQ#r|1oD zn0N(>3$L*m%tXC}gN(u>Q8y{|!i0l-^QtRT|5J5Y&ph2Z=#$kZp&m>C<>;wXatzi?ztBXb& zQZYFx2pT757|i)>0TjgUGZrU1ASnVAJ#b*WBbczT)RS|q?s7LXL%;+f z@=|{yb#f&Qowx`C-P)9s7BmAVMNY={nA}kG`J#gqCj|%{L|+ezCrt<|O2?v``XnC? z-`;y-N@@KlFim$I*Y=kU6n~W-FOc}JsV=LE99$R-uzP}b!d*!;H6CdvRMq?cdh3;C zJE7x$HaYjc(8fe*Rb7zYH|1CPaAfkf(0%RGCr?3g+$SSJ1R-C>+_n3?6&f9&Kpw>~ zIY_iecm-Ah>2{$Pi1wPot<~tL-Bmn^{VBcd%59aeeVHq@=Lj%?O-i{KxUCoGZO9c33e5DJ^la7K7)Ta)?LcsR)V&oE7 zMa#>=`fNNf2ap%nqAf>El&7`rxVg7S!T`|wjr`sSo4Wdu(}jFNSO5HaS>LT1D6~1K z6(cv>Sd~~TmBJY~a!o6Sem1#OjI*kNo(Enz+PJ1DrXzbB(ZH0+w-ozapq77ZFH3+9 zSB;^wCW?2$5huk|o7U62e8{T$rE#LCrVoNbGK)>S+7(zn<0c7JJl*$~dBeAPQiMIO zjOGr`HPfp6Fsjl3A5{dx0UUKyeAO*Qc!S8B!m`6#-eR~b+%|;%0YkE{z<95V@orRu zd)%mlQfd|g_}m{D{-!aFZo0?7EW!Z4a54>^aJAF`eo3$QyJOb1;dx@D8lQ&LwQqYm zY+Ox|L*lSrSayppEwEf0&#EC@Eo)=`&~>^P?R?7WR&L4CmZ07PNMG60wC618zj_^A zu=5=)1`jUaew=F~YXaQg>p9(v%bosH$Sf{HBH3%m2HKSvg?K~EQHeL(oyGMQ$c+{R zt~-|qAl9==`t7FjI8=xQDz;Fm^X4d)nxkpnmd`RM&8wTpwZXZ5yCHl%9IIu|GUG+b ziOr^T6Ut@?X~NCF`8m4%1f_E^@MGdZeaDC1h?7Hsn*mjrwh9pN11_(O^4!8KS_ z)j9p-a`DVWkxD?{yNN^Ar94ne*m<%s1dX`f83_Sx?sC5*2n1CReesApFUAySZ2&{n zpVtlbv?1pZN3sAW6)oZC9g55b) zQ!|CB{$Xh84$}h~g##!=8Ld}5Osc>1|FEoQxqk5pWs4XbKiIuXq_Z&lqmfz=Dkk2q z-Q)j(J7JSuKi^dYuKusiYM{CCbBU?eVD*`8kD0L-mZ^ijl(e0`xRQ6KV>P%b-dUG# zf{X8eKr-6mM)PJWcTIM>`;oP~X@S1-TeT;LJgbqq?w=D&Z`*sj-RXC`yLJC6QwS{O zo_!_+Ut+25YWvqXXlh9ExG=@|zhQNaYQ}~jNE;{~E z%e4pAUZknRhdj$qKnOdJXH0VWk9td5**ZTwl@uO`Hun|&hr7xHUddXksWptuzy>V| zjoB--uBPVyp`rwo&A3|f^7cEKwCv5k^B363*L7_zJFdJ6^^*#wlkLW>^glKeE{crC z-qV%o+kCnxA(89f6;>GWSZ>HWI8&em=x+R+ct-AAP(mC`XHCdW65DlN^os4WR+TB3 zs!E#NLD?TbmH%ii(USRPolsGjcj2e6Ed1+QSgQTXan5=Uh*}an zYLv;rLhEg(oz_}=HE5F*O1CZCMEgTSa)ph_9bJ-uge-6Cfv2!g_#-R0C#`s>B!O8UzMvyjHs3A9F+~+AR!#5 z!fiJSA$2=G8QR?VGGWRVefOdcx@-0BrUn;#(<26+fs^1r>^%UCfs9lV=MOzURu`B0bns|oC^)Hnq(!rjrGeVi^Wbnj?3*|iESrWz z_CQs%F)~G0Gz7GKr&xFSdo z@a|39={e=fu{Gk%F+bDNyecu=ChwP0kvuwQ*oNp62c00{emCin_XJ-C%G~Mp8__5Y z!LqAxUTEO9r>9>YsB?cSa_PoE$dW)&ZoqJ$h+Y>-hQ$&a`?S?TIObcd}A#N(+)eP=}IV=5fOpPc=_{=l( z6yk^8MUA3H`C~r5U)VbY*QVn@h|6}tZ%3_Sd@I?Z^cf;UDgCAVd0FW`@+!}`i8=E^ z>S&VNIdRmb`%)L#dRacBj$~_);APEISxOOgdTn+L#8Sat`&;QkJd}S)dEiJGo;Gc$ zP1V=(jZ-lTW`LHC$j4QC|1M2Fp_N28)Lx{WO_UM09?tnJM-iR^*D0kZK_Ji2F0H@l zoJdN^n7y zmivoizv9I9>!>Vc{%S4rVs$!_KNgZGkFKgdoRg>xwm0~XL7zzu&f`MaqVhZtBcb^c Uc?BnRAa?nz%xqBQCSJt<11SArXaE2J diff --git a/apps/calendar/settings.js b/apps/calendar/settings.js index f9c7783a3..76e2c7455 100644 --- a/apps/calendar/settings.js +++ b/apps/calendar/settings.js @@ -1,24 +1,34 @@ -(function(back) { +(function (back) { var FILE = "calendar.json"; var settings = require('Storage').readJSON(FILE, true) || {}; if (settings.startOnSun === undefined) - settings.startOnSun = true; + settings.startOnSun = false; + if (settings.ndColors === undefined) + settings.ndColors = true; function writeSettings() { require('Storage').writeJSON(FILE, settings); } E.showMenu({ - "" : { "title" : "Calendar" }, - "< Back" : () => back(), + "": { "title": "Calendar" }, + "< Back": () => back(), 'Start on Sunday': { value: settings.startOnSun, - format: v => v?"Yes":"No", + format: v => v ? "Yes" : "No", onchange: v => { settings.startOnSun = v; writeSettings(); } }, + 'Non-dithering colors': { + value: settings.ndColors, + format: v => v ? "Yes" : "No", + onchange: v => { + settings.ndColors = v; + writeSettings(); + } + }, }); })