From 5ea59aa0534ca0c8c18ca96950455beabd077e78 Mon Sep 17 00:00:00 2001 From: David Peer Date: Wed, 24 Aug 2022 22:19:52 +0200 Subject: [PATCH 1/6] Set timer for agenda entries --- apps/bwclk/ChangeLog | 3 +- apps/bwclk/README.md | 2 +- apps/bwclk/app.js | 71 ++++++++++++++++++++++++++++++---------- apps/bwclk/metadata.json | 2 +- 4 files changed, 58 insertions(+), 20 deletions(-) diff --git a/apps/bwclk/ChangeLog b/apps/bwclk/ChangeLog index 967062223..ae95e8ae7 100644 --- a/apps/bwclk/ChangeLog +++ b/apps/bwclk/ChangeLog @@ -14,4 +14,5 @@ 0.14: Adds humidity to weather data. 0.15: Added option for a dynamic mode to show widgets only if unlocked. 0.16: You can now show your agenda if your calendar is synced with Gadgetbridge. -0.17: Fix - Step count was no more shown in the menu. \ No newline at end of file +0.17: Fix - Step count was no more shown in the menu. +0.18: Set timer for an agenda entry by simply clicking in the middle of the screen. Only one timer can be set. \ No newline at end of file diff --git a/apps/bwclk/README.md b/apps/bwclk/README.md index 3f177d6fa..dfb9bf515 100644 --- a/apps/bwclk/README.md +++ b/apps/bwclk/README.md @@ -7,7 +7,7 @@ A very minimalistic clock to mainly show date and time. The BW clock provides many features and also 3rd party integrations: - Bangle data such as steps, heart rate, battery or charging state. - A timer can be set directly. *Requirement: Scheduler library* -- Show agenda entries. *Requirement: Gadgetbridge calendar sync enabled* +- Show agenda entries. A timer for an agenda entry can also be set by simply clicking in the middle of the screen. This can be used to not forget a meeting etc. Note that only one agenda-timer can be set at a time. *Requirement: Gadgetbridge calendar sync enabled* - Weather temperature as well as the wind speed can be shown. *Requirement: Weather app* - HomeAssistant triggers can be executed directly. *Requirement: HomeAssistant app* diff --git a/apps/bwclk/app.js b/apps/bwclk/app.js index 577014130..6de1a8b7f 100644 --- a/apps/bwclk/app.js +++ b/apps/bwclk/app.js @@ -8,7 +8,8 @@ const storage = require('Storage'); * Statics */ const SETTINGS_FILE = "bwclk.setting.json"; -const TIMER_IDX = "bwclk"; +const TIMER_IDX = "bwclk_timer"; +const TIMER_AGENDA_IDX = "bwclk_agenda"; const W = g.getWidth(); const H = g.getHeight(); @@ -205,8 +206,8 @@ try{ require('sched'); menu.push([ function(){ - var text = isAlarmEnabled() ? getAlarmMinutes() + " min." : "Timer"; - return [text, imgTimer(), () => decreaseAlarm(), () => increaseAlarm(), null ] + var text = isAlarmEnabled(TIMER_IDX) ? getAlarmMinutes(TIMER_IDX) + " min." : "Timer"; + return [text, imgTimer(), () => decreaseAlarm(TIMER_IDX), () => increaseAlarm(TIMER_IDX), null ] }, ]); } catch(ex) { @@ -219,6 +220,7 @@ try{ * Note that we handle the agenda differently in order to hide old entries... */ var agendaIdx = 0; +var agendaTimerIdx = 0; if(storage.readJSON("android.calendar.json") !== undefined){ function nextAgendaEntry(){ agendaIdx += 1; @@ -248,7 +250,41 @@ if(storage.readJSON("android.calendar.json") !== undefined){ var dateStr = locale.date(date).replace(/\d\d\d\d/,""); dateStr += entry.durationInSeconds < 86400 ? " / " + locale.time(date,1) : ""; - return [title + "\n" + dateStr, imgAgenda(), () => nextAgendaEntry(), () => previousAgendaEntry(), null] + function dynImgAgenda(){ + if(isAlarmEnabled(TIMER_AGENDA_IDX) && agendaTimerIdx == agendaIdx){ + return imgTimer(); + } else { + return imgAgenda(); + } + } + + return [title + "\n" + dateStr, dynImgAgenda(), () => nextAgendaEntry(), () => previousAgendaEntry(), function(){ + try{ + var alarm = require('sched') + + // If other time, we disable the old one and enable this one. + if(agendaIdx != agendaTimerIdx){ + agendaTimerIdx = -1; + alarm.setAlarm(TIMER_AGENDA_IDX, undefined); + } + + // Disable alarm if enabled + if(isAlarmEnabled(TIMER_AGENDA_IDX)){ + agendaTimerIdx = -1; + alarm.setAlarm(TIMER_AGENDA_IDX, undefined); + alarm.reload(); + return + } + + // Otherwise, set alarm for given event + agendaTimerIdx = agendaIdx; + alarm.setAlarm(TIMER_AGENDA_IDX, { + msg: title, + timer : parseInt((date - now)), + }); + alarm.reload(); + } catch(ex){ } + }] }, ]); } @@ -364,10 +400,10 @@ function getWeather(){ } -function isAlarmEnabled(){ +function isAlarmEnabled(idx){ try{ var alarm = require('sched'); - var alarmObj = alarm.getAlarm(TIMER_IDX); + var alarmObj = alarm.getAlarm(idx); if(alarmObj===undefined || !alarmObj.on){ return false; } @@ -379,22 +415,22 @@ function isAlarmEnabled(){ } -function getAlarmMinutes(){ - if(!isAlarmEnabled()){ +function getAlarmMinutes(idx){ + if(!isAlarmEnabled(idx)){ return -1; } var alarm = require('sched'); - var alarmObj = alarm.getAlarm(TIMER_IDX); + var alarmObj = alarm.getAlarm(idx); return Math.round(alarm.getTimeToAlarm(alarmObj)/(60*1000)); } -function increaseAlarm(){ +function increaseAlarm(idx){ try{ - var minutes = isAlarmEnabled() ? getAlarmMinutes() : 0; - var alarm = require('sched') - alarm.setAlarm(TIMER_IDX, { + var minutes = isAlarmEnabled(idx) ? getAlarmMinutes(idx) : 0; + var alarm = require('sched'); + alarm.setAlarm(idx, { timer : (minutes+5)*60*1000, }); alarm.reload(); @@ -402,16 +438,16 @@ function increaseAlarm(){ } -function decreaseAlarm(){ +function decreaseAlarm(idx){ try{ - var minutes = getAlarmMinutes(); + var minutes = getAlarmMinutes(idx); minutes -= 5; var alarm = require('sched') - alarm.setAlarm(TIMER_IDX, undefined); + alarm.setAlarm(idx, undefined); if(minutes > 0){ - alarm.setAlarm(TIMER_IDX, { + alarm.setAlarm(idx, { timer : minutes*60*1000, }); } @@ -670,6 +706,7 @@ Bangle.on('touch', function(btn, e){ menuEntry[4](); setTimeout(()=>{ Bangle.buzz(80, 0.6); + drawTime(); }, 250); } catch(ex){ // In case it fails, we simply ignore it. diff --git a/apps/bwclk/metadata.json b/apps/bwclk/metadata.json index 1eb1fde72..0f9836a42 100644 --- a/apps/bwclk/metadata.json +++ b/apps/bwclk/metadata.json @@ -1,7 +1,7 @@ { "id": "bwclk", "name": "BW Clock", - "version": "0.17", + "version": "0.18", "description": "A very minimalistic clock to mainly show date and time.", "readme": "README.md", "icon": "app.png", From a23b8a4e745a4de2b6a807de6878b745afb560dd Mon Sep 17 00:00:00 2001 From: David Peer Date: Wed, 24 Aug 2022 22:21:29 +0200 Subject: [PATCH 2/6] Updated screenshot --- apps/bwclk/screenshot_3.png | Bin 3312 -> 3294 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/apps/bwclk/screenshot_3.png b/apps/bwclk/screenshot_3.png index f9a9a7d3fdaf5fc43aa87825bddf80455f98fbbc..6586dc3555ebeefcc7f397d78258bd6ce273109e 100644 GIT binary patch literal 3294 zcmb_fdpOgN_kV8;ZEkbRGM9+lR&pz>avxjqNg1p9PPp7We@(*N?n$U%2N0RWJ5 zcXRgI^0oh}jMSE`X`CW$IZ&h*#u0ehhnxif*8|y?d_$02Aw~i9;Df8o*Zdm6mTWG0LeVFZ_JY>?d*3ZIg2BEzXg?5WeP-!hEXY(! ztC|K}xwJaP2Gk_zczfWmZQ?}|keP%r(V=PIJ!G?&_Ljp?Rpih;%KqNYIm72cW%!uK zo_#QWx@bKxP>(?8GcBHUp1c;&D(Xlv*iep!-#g+@6_%pHq+$CpTS}Y z@1T{!4S1WQDrc>_h|I zmsTD1%i|kP4h}jZQ>2N($Gts$8_O5~3F7`I`ML3@rvOGiTkGg)PMli#_A#z_8pJY& zynM#UBujC4XG_InAAoxPLZvl0X5n0&DaV8}3f8V(=PhC4M`sc|6T@t1sBm6^$Z97~ z(uH5Tv_zcoJe-n=|0rYN+^bg8?dv!o6z71lVzxmsz%IFi5LU6?B_*m zU+>^(i0e~9?monhB8ms-fCh=V8kp7tycm%3MI|rCE%-%DQ;~YHJLH8jF%aQpixsOO zLM8yBTLl_&)Yw_Zc-xBFH|K}_#fO@~Fg`XF6@Hq&52(0M;0dTFJ(doCkYb-;Pc?T9 z{xcp@|5|y!#5ltH#buDLP=-IzqpM1mBz0gHQXa>0W11{lass%s15cvF&!R1tIXY3} z4`_i`;I>NnJ06gp=JXP+ve$$ek>Qb2=X;)X*S8(r@&h z9iab0;<@D%ev6}*1s z`(xU!V9`3f49Bff>l`TST_0G&LDb>RQ|h?1;a~LY*2g=U7wC_w(5y>GB!-lOqoTb3 zWSU534gb@ACsyI zKd%jCvCKBqz#BHJc%^vC5_;`Ny1zt{B~Aj5RAb}!#r|%sO$v4o*;$-UAId-wmAGRR4nYKin6_@!(8qwli zFiN94EaLx=HmgO`yN5aZPnwf^YMW#^^`A=)ZeoRj4faGZC8^*a>)z6uk`uc2IvJDt{sW27hu>l+}n<5H;|sX=b@NfC&c`hF(> zBRyxaIN`ntYEHF{UTnZ< z^SA4(*|Ip{{FO-2dewOgJ9)KBcw`z zN*blLI*5Imscp3xRa&YBPAY;cgXz;au3&6mW(g3j$SV++25IhbbP8Ha?p1)4L$kV< zHV-@!^6n^?bx!kwk$BY{adKbw2p-~EXsbwO(xcpp@PK5k9&G-5M42t)OJUouj#goh z-R|3Jpe*C4V2G=H#jWcE;fJuDRlw3J396%NqddaAeG|&|iBoxBprXj}?7o$-@sI|n zsr+9z%vDKFR|9v=1HOJ!HTiw0$D@O1`;;+TI;_Uv!8u=wV$KqHjb64i9Cr0}Tw)STsD@!VXAcPRvPUiu*Jo=AN} zh7aX5WUQ^)d7X=t#k;>yd1-=Zap35kT2Meq<$;wp=+)O(o>sXcXRz;S4YDn{pE_-v~Q zr=c=5K>Zyw6&HU*wb<8|F_fK6KBSC)L#E&4byd(dBCyZvI9gF@!a z3$H2!(6~5&YT4u&GNl*cy~;Enp_0l$ApY})c&;g*IeSb3_IqlqIS!=F=h9XpGq3eh z>vE&hh#n5y3xD4pm8Av`Y;mczQb-EBEDj~o3)V{vXOf6x7c z0<-jyAFkZXJ(cLBoH^p!dH;tfC!n!#>o)WTR9PzFC$8T>VZiw{PpI$3&*rX!jK8s$%ZB1Jlb{Zth~j7&lB{zdmjzRUIxG8taF}OOUJwZv1{ z>_~Su7!|5z%prK(nvWxE%ocs!!Q|)xPnWOSdFR)KOa!r}L17o#ORJ;HZW`q?!95Zu z=aL{b_E!WPgy4<4pOG0B1VUp&-WQb90FOLxSIpK1#TZq`dTouB(X;LuLx`l%@S&Aw z1{i$61&`3&nli12&%e4Kvj-k`88aALX^fkLXd~!4s2yDKw!&ObW$R%9++94JpE{D0 F{|Dgx3}XNQ literal 3312 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 From 752e91e1b8cb5f3be5f28651338f27bc854114b8 Mon Sep 17 00:00:00 2001 From: David Peer Date: Wed, 24 Aug 2022 22:27:47 +0200 Subject: [PATCH 3/6] Minor design improvement --- apps/bwclk/app.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/bwclk/app.js b/apps/bwclk/app.js index 6de1a8b7f..d577ed511 100644 --- a/apps/bwclk/app.js +++ b/apps/bwclk/app.js @@ -248,7 +248,7 @@ if(storage.readJSON("android.calendar.json") !== undefined){ var title = entry.title.slice(0,14); var date = new Date(entry.timestamp*1000); var dateStr = locale.date(date).replace(/\d\d\d\d/,""); - dateStr += entry.durationInSeconds < 86400 ? " / " + locale.time(date,1) : ""; + dateStr += entry.durationInSeconds < 86400 ? "/ " + locale.time(date,1) : ""; function dynImgAgenda(){ if(isAlarmEnabled(TIMER_AGENDA_IDX) && agendaTimerIdx == agendaIdx){ From 4485e58218fd3b8662269a3186cfec294c52838d Mon Sep 17 00:00:00 2001 From: David Peer Date: Wed, 24 Aug 2022 22:29:03 +0200 Subject: [PATCH 4/6] Updated screenshot --- apps/bwclk/screenshot_3.png | Bin 3294 -> 3438 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/apps/bwclk/screenshot_3.png b/apps/bwclk/screenshot_3.png index 6586dc3555ebeefcc7f397d78258bd6ce273109e..8d982cac483cd804c66a797c2075692ffb413b60 100644 GIT binary patch delta 3423 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 F{|Dgx3}XNQ From 77a498950cf77da48d850d43956cb9417a9ec5a9 Mon Sep 17 00:00:00 2001 From: David Peer Date: Sun, 4 Sep 2022 11:49:26 +0200 Subject: [PATCH 5/6] Added altitude --- apps/bwclk/app.js | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/apps/bwclk/app.js b/apps/bwclk/app.js index d577ed511..cf8b47ed7 100644 --- a/apps/bwclk/app.js +++ b/apps/bwclk/app.js @@ -13,6 +13,11 @@ const TIMER_AGENDA_IDX = "bwclk_agenda"; const W = g.getWidth(); const H = g.getHeight(); +/************ + * Global data + */ +var pressureData; + /************ * Settings */ @@ -182,6 +187,14 @@ function imgAgenda() { } } +function imgMountain() { + return { + width : 24, height : 24, bpp : 1, + transparent : 1, + buffer : atob("//////////////////////3///n///D//uZ//E8//A+/+Z+f8//P5//n7//3z//zn//5AAAAAAAA////////////////////") + } +} + /************ * 2D MENU with entries of: * [name, icon, opt[customDownFun], opt[customUpFun], opt[customCenterFun]] @@ -196,6 +209,7 @@ var menu = [ function(){ return [ E.getBattery() + "%", Bangle.isCharging() ? imgCharging() : imgBattery() ] }, function(){ return [ getSteps(), imgSteps() ] }, function(){ return [ Math.round(Bangle.getHealthStatus("last").bpm) + " bpm", imgBpm()] }, + function(){ return [ getAltitude(), imgMountain() ]}, ] ] @@ -366,6 +380,14 @@ function getSteps() { } +function getAltitude(){ + if(pressureData && pressureData.altitude){ + return Math.round(pressureData.altitude) + "m"; + } + return "???"; +} + + function getWeather(){ var weatherJson; @@ -469,6 +491,11 @@ function draw() { drawTime(); drawLock(); drawWidgets(); + + // Now lets measure some data.. + Bangle.getPressure().then(data=>{ + pressureData = data + }); } From 95b02bdef2b8358441ea1032225eae84587a4508 Mon Sep 17 00:00:00 2001 From: David Peer Date: Mon, 5 Sep 2022 10:03:04 +0200 Subject: [PATCH 6/6] minor changes --- apps/bwclk/app.js | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/apps/bwclk/app.js b/apps/bwclk/app.js index cf8b47ed7..8cd81cbd7 100644 --- a/apps/bwclk/app.js +++ b/apps/bwclk/app.js @@ -479,6 +479,19 @@ function decreaseAlarm(idx){ } +function handleAsyncData(){ + try{ + + if (settings.menuPosX == 1){ + Bangle.getPressure().then(data=>{ + pressureData = data + }); + } + + }catch(ex){ } +} + + /************ * DRAW */ @@ -486,16 +499,14 @@ function draw() { // Queue draw again queueDraw(); + // Now lets measure some data.. + handleAsyncData(); + // Draw clock drawDate(); drawTime(); drawLock(); drawWidgets(); - - // Now lets measure some data.. - Bangle.getPressure().then(data=>{ - pressureData = data - }); }