From 7b8762b5ce26f475effe5deb33b49e6c007afee4 Mon Sep 17 00:00:00 2001 From: Hairo Date: Sun, 21 Jan 2024 18:43:16 -0400 Subject: [PATCH] [Rebble] add fullscreen option --- apps/rebble/ChangeLog | 1 + apps/rebble/metadata.json | 2 +- apps/rebble/rebble.app.js | 133 +++++++++++++++++++++++++-------- apps/rebble/rebble.settings.js | 12 ++- 4 files changed, 114 insertions(+), 34 deletions(-) diff --git a/apps/rebble/ChangeLog b/apps/rebble/ChangeLog index 78ba0c5da..bde6fda82 100644 --- a/apps/rebble/ChangeLog +++ b/apps/rebble/ChangeLog @@ -14,3 +14,4 @@ 0.14: cleanup code and fix fastload issue 0.15: fix draw before widget hide 0.16: Use 'modules/suncalc.js' to avoid it being copied 8 times for different apps +0.17: Add fullscreen option (on by default) to show widgets, adjust sidebar 1 and 2 when fullscreen is off diff --git a/apps/rebble/metadata.json b/apps/rebble/metadata.json index 6242236c8..449185e87 100644 --- a/apps/rebble/metadata.json +++ b/apps/rebble/metadata.json @@ -2,7 +2,7 @@ "id": "rebble", "name": "Rebble Clock", "shortName": "Rebble", - "version": "0.16", + "version": "0.17", "description": "A Pebble style clock, with configurable background, three sidebars including steps, day, date, sunrise, sunset, long live the rebellion", "readme": "README.md", "icon": "rebble.png", diff --git a/apps/rebble/rebble.app.js b/apps/rebble/rebble.app.js index 445c30125..06c344b2c 100644 --- a/apps/rebble/rebble.app.js +++ b/apps/rebble/rebble.app.js @@ -40,7 +40,7 @@ Graphics.prototype.setFontKdamThmor = function(scale) { } let loadSettings=function() { - settings = {'bg': '#0f0', 'color': 'Green', 'autoCycle': true,'sideTap':0}; + settings = {'bg': '#0f0', 'color': 'Green', 'autoCycle': true, 'fullScreen': true, 'sideTap':0}; //sideTap 0 = on | 1 = sidebar1... let tmp = require('Storage').readJSON(SETTINGS_FILE, 1) || settings; @@ -118,32 +118,60 @@ Graphics.prototype.setFontKdamThmor = function(scale) { if (drawCount % 60 == 0) updateSunRiseSunSet(location.lat, location.lon); - + g.reset(); - g.setColor(g.theme.bg); - g.fillRect(0, 0, w2, h); - g.setColor(settings.bg); - g.fillRect(w2, 0, w, h); + + if (settings.fullScreen) { + g.setColor(g.theme.bg); + g.fillRect(0, 0, w2, h); + g.setColor(settings.bg); + g.fillRect(w2, 0, w, h); - // time - g.setColor(g.theme.fg); - g.setFontKdamThmor(); - g.setFontAlign(0, -1); - g.drawString(hh, w2/2, 10 + 0); - g.drawString(mm, w2/2, 10 + h/2); + // time + g.setColor(g.theme.fg); + g.setFontKdamThmor(); + g.setFontAlign(0, -1); + g.drawString(hh, w2/2, 10 + 0); + g.drawString(mm, w2/2, 10 + h/2); - switch(sideBar) { - case 0: - drawSideBar1(); - break; - case 1: - drawSideBar2(); - break; - case 2: - drawSideBar3(); - break; + switch(sideBar) { + case 0: + drawSideBar1(); + break; + case 1: + drawSideBar2(); + break; + case 2: + drawSideBar3(); + break; + } + } else { + g.setColor(g.theme.bg); + g.fillRect(0, 24, 113, 176); + g.setColor(settings.bg); + g.fillRect(113, 24, 176, 176); + + // time + g.setColor(g.theme.fg); + g.setFontKdamThmor(); + g.setFontAlign(0, -1); + g.drawString(hh, 57, 24); + g.drawString(mm, 57, 100); + + switch(sideBar) { + case 0: + drawSideBar1Alt(); + break; + case 1: + drawSideBar2Alt(); + break; + case 2: + drawSideBar3(); + break; + } } + drawCount++; queueDraw(); } @@ -164,6 +192,16 @@ Graphics.prototype.setFontKdamThmor = function(scale) { drawDateAndCalendar(w3, h/2, dy, dd, mm); } + + let drawSideBar1Alt=function() { + let date = new Date(); + let dy= require("date_utils").dow(date.getDay(),1).toUpperCase(); + let dd= date.getDate(); + let mm= require("date_utils").month(date.getMonth()+1,1).toUpperCase(); + let yy = date.getFullYear(); + + drawDateAndCalendarAlt(145, 46, dy, dd, mm, yy); + } let drawSideBar2=function() { drawBattery(w2 + (w-w2-wb)/2, h/10, wb, 17); @@ -178,6 +216,14 @@ Graphics.prototype.setFontKdamThmor = function(scale) { setSmallFont(); g.setFontAlign(0, -1); g.drawString(formatSteps(), w3, 7*h/8); + } + + let drawSideBar2Alt=function() { + // steps + g.drawImage(boot_img, 113, 59, { scale: 1 }); + setSmallFont(); + g.setFontAlign(0, -1); + g.drawString(formatSteps(), 145, 122); } // sunrise, sunset times @@ -212,6 +258,28 @@ Graphics.prototype.setFontKdamThmor = function(scale) { g.setFontAlign(0, -1); g.drawString(mm.toUpperCase(), x, y + 70); } + + let drawDateAndCalendarAlt=function(x, y, dy, dd, mm, yy) { + // day + setTextColor(); + setSmallFont(); + g.setFontAlign(0, -1); + g.drawString(dy.toUpperCase(), x, y); + + drawCalendar(x - 18, y + 28, 35, 3, dd); + + // month + setTextColor(); + setSmallFont(); + g.setFontAlign(0, -1); + g.drawString(mm.toUpperCase(), x, y + 70); + + // year + setTextColor(); + setSmallFont(); + g.setFontAlign(0, -1); + g.drawString(yy, x, y + 94); + } // at x,y width:wi thicknes:th let drawCalendar=function(x,y,wi,th,str) { @@ -311,7 +379,10 @@ Graphics.prototype.setFontKdamThmor = function(scale) { if (drawTimeout) clearTimeout(drawTimeout); drawTimeout = undefined; delete Graphics.prototype.setFontKdamThmor; - Bangle.removeListener('charging',chargingListener); + + if (settings.fullScreen) + Bangle.removeListener('charging',chargingListener); + } } let main=function(){ @@ -341,17 +412,17 @@ Graphics.prototype.setFontKdamThmor = function(scale) { }); } - - - Bangle.on('charging',chargingListener); - - Bangle.loadWidgets(); - require("widget_utils").hide(); + + if (settings.fullScreen) { + Bangle.on('charging',chargingListener); + require("widget_utils").hide(); + } else { + Bangle.drawWidgets(); + } + draw(); - } - main(); } diff --git a/apps/rebble/rebble.settings.js b/apps/rebble/rebble.settings.js index 46252d156..444faa75f 100644 --- a/apps/rebble/rebble.settings.js +++ b/apps/rebble/rebble.settings.js @@ -2,7 +2,7 @@ const SETTINGS_FILE = "rebble.json"; // initialize with default settings... - let localSettings = {'bg': '#0f0', 'color': 'Green', 'autoCycle': true, 'sideTap':0}; + let localSettings = {'bg': '#0f0', 'color': 'Green', 'autoCycle': true, 'fullScreen': true, 'sideTap':0}; //sideTap 0 = on| 1= sideBar1 | 2 = ... // ...and overwrite them with any saved values @@ -38,6 +38,14 @@ save(); }, }, + 'Fullscreen': { + value: localSettings.fullScreen, + onchange: (v) => { + localSettings.fullScreen = v; + save(); + showMenu(); + } + } 'Auto Cycle': { value: localSettings.autoCycle, onchange: (v) => { @@ -74,4 +82,4 @@ } showMenu(); -}) \ No newline at end of file +})