From b50faa919a9f8c50687a16435d7db946771b674b Mon Sep 17 00:00:00 2001 From: hughbarney Date: Mon, 29 Nov 2021 20:12:25 +0000 Subject: [PATCH] Pebble - long live the rebellion --- apps.json | 18 ++++- apps/pebble/ChangeLog | 1 + apps/pebble/icons8-sport-shoes-64.png | Bin 0 -> 2522 bytes apps/pebble/pebble.app.js | 103 ++++++++++++++++++++++++++ apps/pebble/pebble.png | Bin 0 -> 1213 bytes apps/pebble/pebble.settings.js | 38 ++++++++++ apps/pebble/pebble_screenshot.png | Bin 0 -> 2799 bytes apps/pebble/pebble_screenshot2.png | Bin 0 -> 2736 bytes apps/pebble/pebble_screenshot3.png | Bin 0 -> 2788 bytes 9 files changed, 159 insertions(+), 1 deletion(-) create mode 100644 apps/pebble/ChangeLog create mode 100644 apps/pebble/icons8-sport-shoes-64.png create mode 100644 apps/pebble/pebble.app.js create mode 100644 apps/pebble/pebble.png create mode 100644 apps/pebble/pebble.settings.js create mode 100644 apps/pebble/pebble_screenshot.png create mode 100644 apps/pebble/pebble_screenshot2.png create mode 100644 apps/pebble/pebble_screenshot3.png diff --git a/apps.json b/apps.json index 770f2a286..cfac33be3 100644 --- a/apps.json +++ b/apps.json @@ -4543,5 +4543,21 @@ "storage": [ {"name":"mylocation.settings.js","url":"mylocation.settings.js"} ] - } + }, + { + "id": "pebble", + "name": "Pebble Clock", + "shortName": "Pebble", + "version": "0.01", + "description": "A pebble style clock to keep the rebellion going", + "icon": "pebble.png", + "dependencies": {"widpedom":"app"}, + "screenshots": [{"url":"screenshot_pebble.png"}], + "type": "clock", + "tags": "clock", + "supports": ["BANGLEJS2"], + "storage": [ + {"name":"pebble.app.js","url":"pebble.app.js"}, + {"name":"pebble.img","url":"pebble.icon.js","evaluate":true}, + } ] diff --git a/apps/pebble/ChangeLog b/apps/pebble/ChangeLog new file mode 100644 index 000000000..9db0e26c5 --- /dev/null +++ b/apps/pebble/ChangeLog @@ -0,0 +1 @@ +0.01: first release diff --git a/apps/pebble/icons8-sport-shoes-64.png b/apps/pebble/icons8-sport-shoes-64.png new file mode 100644 index 0000000000000000000000000000000000000000..4ae00db96a02ace82a8f08eb43bbf32a0c08b255 GIT binary patch literal 2522 zcmV<02_^Q4P)^p0K_gw z1`vtanBN840CC8$+eCW@$F4@i1Bt-#o7uUZkXtz34#08V!o^I#dk!{g4V4vT7!3Ns zfG6Mzd=HdcShvqu`WbBmNKHJ8T%jQN&dJz2IClNs7B~xh0VDv&EUe#aES&*yKy+1Q zxs{`nGwz;Vq$Zui*3OP4D;`CuR8mz@CKCj~5AXsUfq&C(+|57+oCGF!X-fd^1*-cP zb2;#_m6ej^k3NN~n|rq}KYo8ZmE~n!oAkg(KnQRNn9)bwJ|PFz1I}IAynxxjK0w=t znEAk5K`^W~QUnHh09Z1s(+yKoaKc=vU;J@7Plfr}vWU?pGxQUFtb z8PHLn>;oe1d2Ah_5m9K2ZM?HOnv(onfQ!It-~?BUZ~>;Zw@(3(D-?vxyq7skAI5uR zK&OBpn20;{B{3hqOJ#8Z08Y-Xj2Rn@w~sGQPA*s}m7V7o7hWXx`@@tL7j`t2051c( z0Aqg{unPF+=oxcZ_}pf^U7TocsAuaF4^ohwaoqrFJ9}nCEN0f?Xk0wJu6drxWF-EZ z1Ko`1C3Qe@mm>wp;|8$J7$_}xDrB&O^ z9V7g??RFo&-nW;wHXZXO4`F7=Kvr&!qe*LE+_YItoIM|aps8VWZ>aFa_2ud`uV@CL{Z!dxB+XyycqHY7~&rYK%2?pGtE`RA3i`qRyy_$ zj!c*`oz%p$RF;=A*j>ZArK8w&=sbxzwYYkCF>l4=*NxTCswb-LfSa$CO_Uno^7tW`G53cnAN(Mask!vJh~Vmx}I zz>7PQ09dkSJ=Q84i|GbU4ddY#Hh28H9nf5r>{`76qaavJv?p%&9?shJn;7ov$H`;g z(W2EdHOPa7(}(fO&SYvEb&MQ8fzZ3dEv|jn{QL14GY-sq6AyOIcN=F0p;Xym=jz7r zG2@vrHv<2Vi5BmGNw23e*E|qcS5=U7_D2-*0c`tI2$>ff*s(tsxm?ae&up}~b_ZdR zOUX@100{4v0eW34b)`j|KKKQjS4Hviib$$Ui!CO+?dd=A^t>tPTg(;p_lFK32m+7X z=Yzku6Kl4g!Dtc)yMGyjhx=Mg_ow)d4e9t8&}o1^W;zXfrjqbhFdL(8!`)FyPSRPP zdteTEsfjl%diuyg5@L_ga``eMke!iAQNaaV9aX&ea3K4R7jh!05_>0SA|G3G!+O`l z*2$&gqg%HO(5U2$9%jq)k;BM*FO)w_bf=~HGOs-u-PigZFqhQ3-!u z?Lh!GJrabq)c~IT`#As>t$qfLy+fb1u8oLRZy>Lvn9p{;*U@f;M28!Ad2ie zRn3l<|H?}{|I;Vw13TZNuCg2tuR#Qi4d&#rBQ#xVB*@2w=Jk)}2S*=b3f{&FuFvEO0Tcg}Ri>lXb3WHR1=+?TklMsgC*aPq`)0zxLB zQdpso%aF@{zGA8_E#}~^4?rekR`>!gHP&+`E*6;#-uiPWMU~CG`B?@snT+MnZbCMo z_f?o6iU^{JNf6PSjOa}QI)jl*&CR68e#^P9KBugG;FZZ_xVYXzU2P3O;m@vm95o77 z%^t|6Jq4UT9D}>x=w5Yh@0JZ1^lf!*SMx&9X(>$2q-pazQXVK|R1k4Oa z@El5RO0fEs`p1yBpP#%DJ& zafD-!LBq$nvT08NrP=Ad>P&vZkL1K3$4aRrFmy8IC54m}T)zXg4Z*8Huv7Y+UVrokYDalHuI5QQ4?#h;;*PtN;1y8_t%(P_UV~T#b?scf)PDzQ^_)_Ibc&x?Fe%T?fH(z^l5V z3^&h#m;?cNA4cSUM- literal 0 HcmV?d00001 diff --git a/apps/pebble/pebble.app.js b/apps/pebble/pebble.app.js new file mode 100644 index 000000000..5ef8099c6 --- /dev/null +++ b/apps/pebble/pebble.app.js @@ -0,0 +1,103 @@ +// inspired by +//https://apps.rebble.io/en_US/application/55cf75fc61e031bb4b000025?dev_settings=true§ion=watchfaces + +Graphics.prototype.setFontQahiri = function(scale) { + // Actual height 60 (60 - 1) + g.setFontCustom(atob("AAAAAAAAfAAAAAAAAAAAAP4AAAAAAAAAAAD/AAAAAAAAAAAB/wAAAAAAAAAAAf8AAAAAAAAAAAH/AAAAAAAAAAAA/wAAAAAAAAAAAH4AAAAAAAAAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAAAAAAAB8AAAAAAAAAAAD/gAAAAAAAAAAH/4AAAAAAAAAAP/8AAAAAAAAAAP/4AAAAAAAAAAf/4AAAAAAAAAA//wAAAAAAAAAB//gAAAAAAAAAD//AAAAAAAAAAD//AAAAAAAAAAH/+AAAAAAAAAAP/8AAAAAAAAAAf/4AAAAAAAAAAf/4AAAAAAAAAA//wAAAAAAAAAB//gAAAAAAAAAD//AAAAAAAAAAH/+AAAAAAAAAAH/+AAAAAAAAAAP/8AAAAAAAAAAH/4AAAAAAAAAAB/wAAAAAAAAAAAPwAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//////wAAAAAAP/////8AAAAAAD//////AAAAAAA//////wAAAAAAP/////8AAAAAAD//////AAAAAAA//////wAAAAAAP/////8AAAAAAD/AAAD/AAAAAAA/wAAA/wAAAAAAP8AAAP8AAAAAAD/AAAD/AAAAAAA/wAAA/wAAAAAAP8AAAP8AAAAAAD/AAAD/AAAAAAA//////wAAAAAAP/////8AAAAAAD//////AAAAAAA//////wAAAAAAP/////8AAAAAAD//////AAAAAAA//////wAAAAAAP/////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//////wAAAAAAP/////8AAAAAAD//////AAAAAAA//////wAAAAAAP/////8AAAAAAD//////AAAAAAA//////wAAAAAAP/////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/wH///wAAAAAAP8B///8AAAAAAD/Af///AAAAAAA/wH///wAAAAAAP8B///8AAAAAAD/Af///AAAAAAA/wH///wAAAAAAP8B///8AAAAAAD/Af4D/AAAAAAA/wH+A/wAAAAAAP8B/gP8AAAAAAD/Af4D/AAAAAAA/wH+A/wAAAAAAP8B/gP8AAAAAAD/Af4D/AAAAAAA///+A/wAAAAAAP///gP8AAAAAAD///4D/AAAAAAA///+A/wAAAAAAP///gP8AAAAAAD///4D/AAAAAAA///+A/wAAAAAAH///gH8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/wH+A/wAAAAAAP8B/gP8AAAAAAD/Af4D/AAAAAAA/wH+A/wAAAAAAP8B/gP8AAAAAAD/Af4D/AAAAAAA/wH+A/wAAAAAAP8B/gP8AAAAAAD/Af4D/AAAAAAA/wH+A/wAAAAAAP8B/gP8AAAAAAD/Af4D/AAAAAAA/wH+A/wAAAAAAP8B/gP8AAAAAAD/Af4D/AAAAAAA//////wAAAAAAP/////8AAAAAAD//////AAAAAAA//////wAAAAAAP/////8AAAAAAD//////AAAAAAA//////wAAAAAAH/////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA///AAAAAAAAAAP//wAAAAAAAAAD//8AAAAAAAAAA///AAAAAAAAAAP//wAAAAAAAAAD//8AAAAAAAAAA///AAAAAAAAAAP//wAAAAAAAAAAAP8AAAAAAAAAAAD/AAAAAAAAAAAA/wAAAAAAAAAAAP8AAAAAAAAAAAD/AAAAAAAAAAAA/wAAAAAAAAAAAP8AAAAAAAAAA//////wAAAAAAP/////8AAAAAAD//////AAAAAAA//////wAAAAAAP/////8AAAAAAD//////AAAAAAA//////wAAAAAAH/////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA///+A/wAAAAAAP///gP8AAAAAAD///4D/AAAAAAA///+A/wAAAAAAP///gP8AAAAAAD///4D/AAAAAAA///+A/wAAAAAAP///gP8AAAAAAD/Af4D/AAAAAAA/wH+A/wAAAAAAP8B/gP8AAAAAAD/Af4D/AAAAAAA/wH+A/wAAAAAAP8B/gP8AAAAAAD/Af4D/AAAAAAA/wH///wAAAAAAP8B///8AAAAAAD/Af///AAAAAAA/wH///wAAAAAAP8B///8AAAAAAD/Af///AAAAAAA/wH///wAAAAAAH8A///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//////wAAAAAAP/////8AAAAAAD//////AAAAAAA//////wAAAAAAP/////8AAAAAAD//////AAAAAAA//////wAAAAAAP/////8AAAAAAD/Af4D/AAAAAAA/wH+A/wAAAAAAP8B/gP8AAAAAAD/Af4D/AAAAAAA/wH+A/wAAAAAAP8B/gP8AAAAAAD/Af4D/AAAAAAA/wH///wAAAAAAP8B///8AAAAAAD/Af///AAAAAAA/wH///wAAAAAAP8B///8AAAAAAD/Af///AAAAAAA/wH///wAAAAAAH8A///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/wAAAAAAAAAAAP8AAAAAAAAAAAD/AAAAAAAAAAAA/wAAAAAAAAAAAP8AAAAAAAAAAAD/AAAAAAAAAAAA/wAAAAAAAAAAAP8AAAAAAAAAAAD/AAAAAAAAAAAA/wAAAAAAAAAAAP8AAAAAAAAAAAD/AAAAAAAAAAAA/wAAAAAAAAAAAP8AAAAAAAAAAAD/AAAAAAAAAAAA//////wAAAAAAP/////8AAAAAAD//////AAAAAAA//////wAAAAAAP/////8AAAAAAD//////AAAAAAA//////wAAAAAAH/////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//////wAAAAAAP/////8AAAAAAD//////AAAAAAA//////wAAAAAAP/////8AAAAAAD//////AAAAAAA//////wAAAAAAP/////8AAAAAAD/Af4D/AAAAAAA/wH+A/wAAAAAAP8B/gP8AAAAAAD/Af4D/AAAAAAA/wH+A/wAAAAAAP8B/gP8AAAAAAD/Af4D/AAAAAAA//////wAAAAAAP/////8AAAAAAD//////AAAAAAA//////wAAAAAAP/////8AAAAAAD//////AAAAAAA//////wAAAAAAH/////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA///+A/wAAAAAAP///gP8AAAAAAD///4D/AAAAAAA///+A/wAAAAAAP///gP8AAAAAAD///4D/AAAAAAA///+A/wAAAAAAP///gP8AAAAAAD/Af4D/AAAAAAA/wH+A/wAAAAAAP8B/gP8AAAAAAD/Af4D/AAAAAAA/wH+A/wAAAAAAP8B/gP8AAAAAAD/Af4D/AAAAAAA//////wAAAAAAP/////8AAAAAAD//////AAAAAAA//////wAAAAAAP/////8AAAAAAD//////AAAAAAA//////wAAAAAAH/////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA+AAfAAAAAAAAAfwAP4AAAAAAAAP8AD/AAAAAAAAD/gB/wAAAAAAAA/4Af8AAAAAAAAP+AH/AAAAAAAAD/AA/wAAAAAAAAfgAH4AAAAAAAABwAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=="), 46, atob("DR0bDBsbGxsbGxsbDQ=="), 80+(scale<<8)+(1<<16)); +} + +const SETTINGS_FILE = "pebble.json"; +let settings; + +function loadSettings() { + settings = require("Storage").readJSON(SETTINGS_FILE,1)|| {'bg': '#0f0', 'color': 'Green'}; +} + +var img = require("heatshrink").decompress(atob("oFAwkGswA/AH4A/AH4A/AH4A/AFEAD74gdsAfBELlggMhD70iILsAiUAIKQRBgxAHgUiIKQQJUAMSD4JBQsBVBIAq/DEAJBCJ45VHkAxEDwKfDIIUREBq2BmcQCAQeCkczmRBEiAgND4MxSoYGBAAQgCAAohKDARhBG4IeDEAQ8BAA5fJABgpBgFDgEiQgJEHT4IeMmMBkMFAYJJDEQaYDiYfMkECiEEoEDBAX//8ykJsBD4MAWwIALiBeCqAyDn//BoYgBgAeMYAMhgE0CRIOBD58BkEEmCRKkEGD5szkUQqdASJUxD4MAgKBKmUigFEGJZgBAATODFw0CkEBmoOJAAQdB7owBOBDdCgbdED5fd6pRIgDdCeBkxD4fdeAgNEkMFmheLdgIfE6BgGmDdCoDdKDwYfD6gzGiBeBrpLHXYUQXIMgD4NND4SAFZgMRgAKBPwroBBYIeBIAL/CADESL4VmsAcWgMRkQeDAAMAkQAWMAQeCD4MSDqqdBDwgfBAC8GDwiAXDowA/AH4A/AH4A/AH4A/AEA")); + +const h = g.getHeight(); +const w = g.getWidth(); +const ha = 2*h/5 - 8; +const h2 = 3*h/5 - 10; +const h3 = 7*h/8; + +function draw() { + var date = new Date(); + var da = date.toString().split(" "); + //var timeStr = require("locale").time(date,1); // causes screen corruption ??? + var timeStr = da[4].substr(0,5); + const t = 6; + + g.reset(); + g.setColor(settings.bg); + g.fillRect(0, 0, w, h2 - t); + + // contrast bar + g.setColor(g.theme.fg); + g.fillRect(0, h2 - t, w, h2); + + // day and steps + g.setColor('#000'); // really needs to be black regardless of theme + g.setFont('Vector', 22); + g.setFontAlign(0, -1); + g.drawString(da[0], w/4, ha); // day of week + g.drawString(getSteps(), 3*w/4, ha); + + // time + g.setColor(g.theme.bg); + g.fillRect(0, h2, w, h3); + g.setFontQahiri(); + g.setFontAlign(0, -1); + g.setColor(g.theme.fg); + g.drawString(timeStr, w/2, h2 - 8); + + // contrast bar + g.setColor(g.theme.fg); + g.fillRect(0, h3, w, h3 + t); + + // the bottom + g.setColor(settings.bg); + g.fillRect(0, h3 + t, w, h); + + g.setColor(settings.bg); + g.drawImage(img, w/2 + ((w/2) - 64)/2, 10, { scale: 1 }); + drawCalendar(((w/2) - 48)/2, 10, 48, 4, da[2]); +} + +// at x,y width:wi thicknes:th +function drawCalendar(x,y,wi,th,str) { + g.setColor(g.theme.fg); + g.fillRect(x, y, x + wi, y + wi); + g.setColor(g.theme.bg); + g.fillRect(x + th, y + th, x + wi - th, y + wi - th); + g.setColor(g.theme.fg); + + var hook_t = 6; + // first calendar hook, one third in + g.fillRect(x + (wi/3) - (th/2), y - hook_t, x + wi/3 + th - (th/2), y + hook_t); + // second calendar hook, two thirds in + g.fillRect(x + (2*wi/3) -(th/2), y - hook_t, x + 2*wi/3 + th - (th/2), y + hook_t); + + g.setFont('Vector', 22); + g.setFontAlign(0, 0); + g.drawString(str, x + wi/2 + th/2, y + wi/2 + th/2); +} + +function getSteps() { + if (WIDGETS.wpedom !== undefined) { + return WIDGETS.wpedom.getSteps(); + } + return '????'; +} + +g.clear(); +Bangle.loadWidgets(); +/* + * we are not drawing the widgets as we are taking over the whole screen + * so we will blank out the draw() functions of each widget + */ +for (var wd of WIDGETS) {wd.draw=()=>{};} +loadSettings(); +setInterval(draw, 15000); // refresh every 15s +draw(); +Bangle.setUI("clock"); diff --git a/apps/pebble/pebble.png b/apps/pebble/pebble.png new file mode 100644 index 0000000000000000000000000000000000000000..10f5adb56b224f3e4d037c4d195fbd9efc81b959 GIT binary patch literal 1213 zcmV;u1Va0XP)POM$%3@Whhhyn@nYhxDeg-e<-cZ zYFr2k?%buN)IY$D3u)c7&`lO@rMoJkr~#QIf+Nxtsa1-};Ey=&+{^zdH@zOnM{mX zvjtWIh=|(&%XQtCm^E8qH2}cN%z6O8ZE6bK^H45MbUEA#JEV9`wMn*=ov6V^% zySuwkO0~5~DF?#<%d&1sDYbW0Hk-xj>T1XM!^1;VDwVeD28LA&YzBCqmmwl;+y4GO zgb;{C^xd7DoZ$HQ*iU*PlgY#ig+iSt(^m8u_dq(G-UG14rPmA*y;>|5zciuESp-cK zzzd8G0~P~16+jM57D5&SEX%sZrKQ7UAq-RlmX?-oDy4Ra==sOnq?EQ&YLqXv|L}5|Ola!1|954-`%Wb(F@@^;gu`v9KmHh$=b zz?A|0PN3hg)_~-=MDC3mBG9he1EGlU<1aQo_~dDZ%=}?Bz_u0A^B$@-pn9+O6{;nG zYf}<`Kd>0H)5AUs5CP97fT*MJ>ls1HVDZr?Fg>Z@^Z2lhdcFPy5q)~`|M@n#Ym7~U z@i=f}MB(%|LZi#=!uS}FOsYUTu4=XV)%yDS`#mKI!$r`xf!P^_vHy8YA_Oo!r7#)r z!*gJK77zlsHtGN2E=(GYo6bbfrL6?V#{kEEG$bCJKfoG|15-%_#@%gTE_Ep!jRH5W zKPrx~n8GvTm)X0XOWzAv5#aiC_;mso1HT!XnVETOb91x#hsS?5Ha6yc10G}G4G==a z0W_D;`+?$l(-}Oj4Cr?P{buM5U@d|Tm+;LG`eQJ?aQA2PHJY`D-~SMJ@1qG$N#hLt z5V$g+-wE`afj8jn?CfJ9#B)u53qj%sekt5&H16ecxu1HCANV^UEJJTVs3G8Y_SYob z=a51f;5ZH($KlGQF9aO|PtK#9bBHKZPJs*{qGFiNOdzGa6DB^;5D-GVDW%+j=2&bW z4obR2luslQ`(eacDoQGqdX0!a=g{)uPN`Hf^6CuNH258Wo{y_`LBW(Tivi_w`7Z!> zIka>rrJig9&iR&6s|Cxlj2XbW7bpP8>Kf+e=CHQ52Fud_-hX;}itX)f?MqVtJlnQI zRr*e_8K9IZ_^r}bR#vdQyxcMV;NU>}(iDKQsrQ8d-aFu;5Vn2IdwY9OO8KrDkB*Ky zy)$y0J8xG=4+z` b5C9$mizYm;5j?(%00000NkvXXu0mjfggZkP literal 0 HcmV?d00001 diff --git a/apps/pebble/pebble.settings.js b/apps/pebble/pebble.settings.js new file mode 100644 index 000000000..b60600316 --- /dev/null +++ b/apps/pebble/pebble.settings.js @@ -0,0 +1,38 @@ +(function(back) { + const SETTINGS_FILE = "pebble.json"; + + // initialize with default settings... + let s = {'bg': '#0f0', 'color': 'Green'} + + // ...and overwrite them with any saved values + // This way saved values are preserved if a new version adds more settings + const storage = require('Storage') + let settings = storage.readJSON(SETTINGS_FILE, 1) || s; + const saved = settings || {} + for (const key in saved) { + s[key] = saved[key] + } + + function save() { + settings = s + storage.write(SETTINGS_FILE, settings) + } + + var color_options = ['Green','Orange','Cyan','Perple','Red','Blue']; + var bg_code = ['#0f0','#ff0','#0ff','#f0f','#f00','#00f']; + + E.showMenu({ + '': { 'title': 'Pebble Clock' }, + '< Back': back, + 'Colour': { + value: 0 | color_options.indexOf(s.color), + min: 0, max: 5, + format: v => color_options[v], + onchange: v => { + s.color = color_options[v]; + s.bg = bg_code[v]; + save(); + }, + } + }); +}) diff --git a/apps/pebble/pebble_screenshot.png b/apps/pebble/pebble_screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..d618368db84657fdc60e478c4507fac2bb9c931f GIT binary patch literal 2799 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 Z1IS-lm>yN9{UNZe0B!4JQ)!J${WlQI5-k7# literal 0 HcmV?d00001