From 02e12ffd86fc84988890243de3a16109334911be Mon Sep 17 00:00:00 2001 From: aaronrolls Date: Wed, 24 Aug 2022 10:38:13 +0000 Subject: [PATCH 01/23] Bug Fixes --- apps/chimer/settings.js | 2 +- apps/chimer/widget.js | 18 ++++++++++++++---- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/apps/chimer/settings.js b/apps/chimer/settings.js index 1174246bd..594188c00 100644 --- a/apps/chimer/settings.js +++ b/apps/chimer/settings.js @@ -36,7 +36,7 @@ Repetition: { value: settings.repeat, min: 1, - max: 3, + max: 5, format: (v) => v, onchange: (v) => { settings.repeat = v; diff --git a/apps/chimer/widget.js b/apps/chimer/widget.js index 9029511f8..807f2b0cb 100644 --- a/apps/chimer/widget.js +++ b/apps/chimer/widget.js @@ -32,7 +32,7 @@ } else { return; } - sleep(100); + sleep(150); } } @@ -44,7 +44,11 @@ m = now.getMinutes(), s = now.getSeconds(), ms = now.getMilliseconds(); - if (h > settings.end || h < settings.start) { + if ( + h > settings.end || + (h >= settings.end && m !== 0) || + h < settings.start + ) { var mLeft = 60 - m, sLeft = mLeft * 60 - s, msLeft = sLeft * 1000 - ms; @@ -52,7 +56,8 @@ return; } if (settings.freq === 1) { - if ((m !== lastMinute && m === 0) || m === 30) chime(); + if ((m !== lastMinute && m === 0) || (m !== lastMinute && m === 30)) + chime(); lastHour = h; lastMinute = m; // check again in 30 minutes @@ -70,7 +75,12 @@ } setTimeout(check, msLeft); } else if (settings.freq === 2) { - if ((m !== lastMinute && m === 0) || m === 15 || m === 30 || m === 45) + if ( + (m !== lastMinute && m === 0) || + (m !== lastMinute && m === 15) || + (m !== lastMinute && m === 30) || + (m !== lastMinute && m === 45) + ) chime(); lastHour = h; lastMinute = m; From 5ea59aa0534ca0c8c18ca96950455beabd077e78 Mon Sep 17 00:00:00 2001 From: David Peer Date: Wed, 24 Aug 2022 22:19:52 +0200 Subject: [PATCH 02/23] 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 03/23] 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 04/23] 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 05/23] 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 a3de2a946075be9e9bc43d0cb3ffbd58094d0867 Mon Sep 17 00:00:00 2001 From: aaronrolls Date: Thu, 25 Aug 2022 09:15:35 +0000 Subject: [PATCH 06/23] Added readme, change up version to 0.02 --- apps/chimer/metadata.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/apps/chimer/metadata.json b/apps/chimer/metadata.json index fab277f15..d5bc04950 100644 --- a/apps/chimer/metadata.json +++ b/apps/chimer/metadata.json @@ -1,12 +1,13 @@ { "id": "chimer", "name": "Chimer", - "version": "0.01", + "version": "0.02", "description": "A fork of Hour Chime that adds extra features such as: \n - Buzz or beep on every 60, 30 or 15 minutes. \n - Reapeat Chime up to 3 times \n - Set hours to disable chime", "icon": "widget.png", "type": "widget", "tags": "widget", "supports": ["BANGLEJS", "BANGLEJS2"], + "readme": "README.MD", "storage": [ { "name": "chimer.wid.js", "url": "widget.js" }, { "name": "chimer.settings.js", "url": "settings.js" } From 747b21f7fe9d092584567ed63720359b94d4992b Mon Sep 17 00:00:00 2001 From: aaronrolls Date: Thu, 25 Aug 2022 09:15:42 +0000 Subject: [PATCH 07/23] Created --- apps/chimer/ChangeLog | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 apps/chimer/ChangeLog diff --git a/apps/chimer/ChangeLog b/apps/chimer/ChangeLog new file mode 100644 index 000000000..01bd00a0a --- /dev/null +++ b/apps/chimer/ChangeLog @@ -0,0 +1,2 @@ +0.01: Initial Creation +0.02: Fixed some sleep bugs. Added a sleep mode toggle \ No newline at end of file From b3c33855ac94f8f7c63767511c99f7d70abf5e75 Mon Sep 17 00:00:00 2001 From: aaronrolls Date: Thu, 25 Aug 2022 09:15:59 +0000 Subject: [PATCH 08/23] Added setting to toggle sleep mode --- apps/chimer/settings.js | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/apps/chimer/settings.js b/apps/chimer/settings.js index 594188c00..ea049f493 100644 --- a/apps/chimer/settings.js +++ b/apps/chimer/settings.js @@ -43,7 +43,14 @@ writeSettings(settings); }, }, - "Start Hour": { + "Sleep Mode": { + value: settings.sleep, + onchange: (v) => { + settings.sleep = v; + writeSettings(settings); + }, + }, + "Sleep Start": { value: settings.start, min: 0, max: 23, @@ -53,7 +60,7 @@ writeSettings(settings); }, }, - "End Hour": { + "Sleep End": { value: settings.end, min: 0, max: 23, @@ -71,6 +78,7 @@ type: 1, freq: 0, repeat: 1, + sleep: true, start: 6, end: 22, }; From 478cef2393e63529dc7b0560fc18abc81da878b7 Mon Sep 17 00:00:00 2001 From: aaronrolls Date: Thu, 25 Aug 2022 09:16:51 +0000 Subject: [PATCH 09/23] Added sleep mode feature --- apps/chimer/widget.js | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/apps/chimer/widget.js b/apps/chimer/widget.js index 807f2b0cb..18358df9e 100644 --- a/apps/chimer/widget.js +++ b/apps/chimer/widget.js @@ -7,6 +7,7 @@ type: 1, freq: 0, repeat: 1, + sleep: true, start: 6, end: 22, }; @@ -45,9 +46,9 @@ s = now.getSeconds(), ms = now.getMilliseconds(); if ( - h > settings.end || - (h >= settings.end && m !== 0) || - h < settings.start + (settings.sleep && h > settings.end) || + (settings.sleep && h >= settings.end && m !== 0) || + (settings.sleep && h < settings.start) ) { var mLeft = 60 - m, sLeft = mLeft * 60 - s, From 8f70e2779a31528d6c661514b14abbb5d44edd77 Mon Sep 17 00:00:00 2001 From: aaronrolls Date: Thu, 25 Aug 2022 09:26:36 +0000 Subject: [PATCH 10/23] Added sleep mode toggle --- apps/chimer/settings.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/chimer/settings.js b/apps/chimer/settings.js index ea049f493..55160c9be 100644 --- a/apps/chimer/settings.js +++ b/apps/chimer/settings.js @@ -44,7 +44,7 @@ }, }, "Sleep Mode": { - value: settings.sleep, + value: !!settings.sleep, onchange: (v) => { settings.sleep = v; writeSettings(settings); From 5d14311c584e99c83f6ea9ee47ca25bd2d755096 Mon Sep 17 00:00:00 2001 From: thyttan <6uuxstm66@mozmail.com⁩> Date: Fri, 26 Aug 2022 01:58:19 +0200 Subject: [PATCH 11/23] move setUI("clock") up before loadWidgets(). This makes bwclock and "Digital clock widget" play nice together --- apps/bwclk/app.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/bwclk/app.js b/apps/bwclk/app.js index d577ed511..f1c650c10 100644 --- a/apps/bwclk/app.js +++ b/apps/bwclk/app.js @@ -735,6 +735,9 @@ E.on("kill", function(){ // dark/light theme as well as the colors. g.setTheme({bg:g.theme.fg,fg:g.theme.bg, dark:!g.theme.dark}).clear(); +// Show launcher when middle button pressed +Bangle.setUI("clock"); + // Load widgets and draw clock the first time Bangle.loadWidgets(); @@ -744,6 +747,3 @@ for (let wd of WIDGETS) {wd._draw=wd.draw; wd._area=wd.area;} // Draw first time draw(); - -// Show launcher when middle button pressed -Bangle.setUI("clock"); From a16d414e4ebc471b180c7992542e1b8588f36db1 Mon Sep 17 00:00:00 2001 From: thyttan <6uuxstm66@mozmail.com⁩> Date: Fri, 26 Aug 2022 02:20:01 +0200 Subject: [PATCH 12/23] bump version --- apps/bwclk/ChangeLog | 3 ++- apps/bwclk/metadata.json | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/apps/bwclk/ChangeLog b/apps/bwclk/ChangeLog index ae95e8ae7..5ff1eb90e 100644 --- a/apps/bwclk/ChangeLog +++ b/apps/bwclk/ChangeLog @@ -15,4 +15,5 @@ 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. -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 +0.18: Set timer for an agenda entry by simply clicking in the middle of the screen. Only one timer can be set. +0.19: Fix - Compatibility with "Digital clock widget" diff --git a/apps/bwclk/metadata.json b/apps/bwclk/metadata.json index 0f9836a42..bc2bb37b6 100644 --- a/apps/bwclk/metadata.json +++ b/apps/bwclk/metadata.json @@ -1,7 +1,7 @@ { "id": "bwclk", "name": "BW Clock", - "version": "0.18", + "version": "0.19", "description": "A very minimalistic clock to mainly show date and time.", "readme": "README.md", "icon": "app.png", From 1751b96e6670897935d997f772e7bed1bca7a2dc Mon Sep 17 00:00:00 2001 From: storm64 Date: Sun, 28 Aug 2022 16:30:13 +0200 Subject: [PATCH 13/23] Update .gitignore Add Nextcloud and Windows configuration files. --- .gitignore | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.gitignore b/.gitignore index a9398e871..f4588ac6f 100644 --- a/.gitignore +++ b/.gitignore @@ -11,3 +11,6 @@ tests/Layout/testresult.bmp apps.local.json _site .jekyll-cache +.owncloudsync.log +Desktop.ini +.sync_*.db* From bd829f27e92e0c487f31e39ddb75d05939b8fe61 Mon Sep 17 00:00:00 2001 From: Erik Andresen Date: Fri, 2 Sep 2022 20:03:50 +0200 Subject: [PATCH 14/23] widgps: Do not take widget space if icon is hidden --- apps/widgps/.ChangeLog.swp | Bin 0 -> 12288 bytes apps/widgps/.metadata.json.swp | Bin 0 -> 12288 bytes apps/widgps/.widget.js.swp | Bin 0 -> 12288 bytes apps/widgps/ChangeLog | 3 ++- apps/widgps/metadata.json | 2 +- apps/widgps/widget.js | 5 +++-- 6 files changed, 6 insertions(+), 4 deletions(-) create mode 100644 apps/widgps/.ChangeLog.swp create mode 100644 apps/widgps/.metadata.json.swp create mode 100644 apps/widgps/.widget.js.swp diff --git a/apps/widgps/.ChangeLog.swp b/apps/widgps/.ChangeLog.swp new file mode 100644 index 0000000000000000000000000000000000000000..0ad8a6b78f715368557e99f268fe89e6c6eade41 GIT binary patch literal 12288 zcmeI2&59F25XU>-JnSm#3zRNsge715Va&*Es6coT~YtSHP$%HL;oq-xuNr_3Vlo;jn3!no|PP@S8l$gog51RA#g1M zd+K;J9Hf%Ndw1c^!P{$9OR^9U0zyCt2mv7=1cZPP5CXeRAXXjqnOC^6UgPH4cmDC~ zpW=jo5D)@FKnMr{As_^VfDjM@LO=)zfgL1(xl%v&l!AR0&;S2#-v58yQtBJq7q*J+ zKHGQB`O5Z&tQnxqs^$7x;^4?VWMeC`(4SJX(?r2Oh)_9W zTE%GtzV#mKa0G5i-lrv50LQ1UVU2u`JvZ#T+yV}VC#Pqvtdj{`rXi_5o&4>QW*kr8 zIR`2ibkxrBA}KoBOrCkdMMCatn+}uq(Q+{6F8-=PPtg5Xhsb**otv%Du42jA?d)Ni M;5mo&1|FgQ0L?SUh5!Hn literal 0 HcmV?d00001 diff --git a/apps/widgps/.metadata.json.swp b/apps/widgps/.metadata.json.swp new file mode 100644 index 0000000000000000000000000000000000000000..b9181f20d7dc4c1e2f9341bd2ab365f99c150634 GIT binary patch literal 12288 zcmeI2(P|Sx6ox0gQlwVe7Z|7DMG3nxf@r-lp&?Xk5u;U*g44`ovvxDH?o3QeDL#w0 zzJzb!l~=xi2tI>&W_N?t3hAYVf8gKQoH^&rIbW_q&OvK$dxzhP+Kko>#=bpV9e%#` zy74k&Oc&{4FfUpMnH(NEFN+0^@z_puyk%!5vr@UZD@~H=PM*71hQ};b32hVYrIKDo zZ=5v?QsNi{K;Xgzmf4;5?N)GK7dQFZ>hlXn!Vv^O00ck)1V8`;KmY_l;PMmjd4s*D zHkRsE*6O|S*Is|b1_B@e0w4eaAOHd&00JNY0w4eaAaDr@NX6KPWyY>vr{d}V|M~C# zpDT?0AblZyA{o*isY}`*Es?%c%vaJ!(p%C4(p}O9X@zu+6!KmnVSxY$fB*=900@8p z2!H?xfB*>mCj?Fz=ldkiPlS;ZEjC3pk6n&oi*PK$RJPdUujqZhNssfsPJ5r4#8HrF zifNHinzOc$=6saWBRS1{b<;fT598^-ucHdj-V_SfA&n^gh4Z$M3AIv|ED9}EXpD=e zz0TH7FPbP3@(MT2b6a>997VUY+kf19G@$zDuWeDbE4)mCPYFi*CJn1s@%}h3(^mIa zwsdICZ{H|4No7~s4U07QX?6T8HOIV)n&)<=3oeb~qx6W=aJ`>8Zb#)= q|H&Zk?+&QKQ2aYxxH?%YYTd7l)i=lmx$+k!mAWc5uc@s4g#7{=CBj|+ literal 0 HcmV?d00001 diff --git a/apps/widgps/.widget.js.swp b/apps/widgps/.widget.js.swp new file mode 100644 index 0000000000000000000000000000000000000000..914d069103c2512c2910399744afd34b564191d9 GIT binary patch literal 12288 zcmeI2Pi)&%9LL{4Y`_?xA%w(`_%&mjL#jCKDiKj-=!I-)fh?P{u>~ZA6TdiaQ#;ts z(rSy4IB?r>XcvwMX?IQ>5O4zt4jd6T5OCq&5pm%A{I5<|(QXIO*t7Jho%hf0_j!Mu zsP2?rU2aghIL~lA%Gl?%gWY3~yt(J%fHC3Ot1@|~qcbqNtA1d3I~3IW?wZhR?${Z) zhUx27!?6Z}4~M>P$UkG-wBnNpiYxvO&8ci=797ghsU{CxxIp5h)s@^LD%78MU3@8K2 zfHI&AC}q2@8BD76`TPL@CrBqDqt`8 z?qSA00$0H@m;+CPr@$ewAN+NIv5&zA;5~2+ybg|lec-Ey7<(5ifjl?>_JN=GGxjBT zAGqK-a1{LdAY(s(@4?sL6Ho(3z%$@+@XG^?eFi=SH^6mp2>f|JW50o)z>nYya06Tc zr@=gU5?tTMm=8Q)01oot!@Z2X1J;2J&VwR&0$hW`A?SfOz(sHloCTrZyL+ms=#_#0 zp@GR{lGpN!EIBPQq6tX;Zl1GOGG87+-}Z~^voueI=z0T9g*ll&M&Nd|T)k>nd3sa} zyt<Uz!M3w+GGKs4ICce2epR-3;zZu7>%m^Zp-d9%rReTnlWl&#gqyt=l)tA#G- zWn{GLX`Aw*Qpx3KGd-}1re}-AA31sg&jX|xV?Mgci4_3ZW3MH+dUlEi%50V4oj z)1zT+#8aSMZu2ZMUDB+MdA(}IQ-EU%0Mtj!m;!06;l(Wk>^fvPCiM+}DpvDZXx@607uI(eU>1cVh zMHJ>IlI2*e8Q!Y!$d;|Mxc263+q{zP?rI3OEI_GB*UMF1FJKD6?Ka4~9r9%xQ~GbR zPvP>9BapqFntxO2Sd%Zh1J~1Xhs))1F25*6VD&+%<%x~7?5@^tA~TUEZ@mjq|B# zMou@dUF;6n94;)^>L<^&iYOgE&9qDc?lVcAcWDPJxKWUXnY#POpeox1h2_`ni|#5x z%2<#igem(ThZXb%$(No*KtsH2?V5Ji7z{R|1!omKfnG#gpL_<>^HWiwSEw8Gk-V+# zbfBl7&-4P7P-T8W25or4z=vGm*o(M*sL*ZuYIx;1;AiH!S?7ScK zF;l-7^{hfOaXmTwJ9S95eaXO%E%$XiSSsWW%vSgaIOC3mr@787*(N4i+ygX-l3^YS zrz0L0Lj