diff --git a/apps/setting/ChangeLog b/apps/setting/ChangeLog index ea2ecd02b..1513194fe 100644 --- a/apps/setting/ChangeLog +++ b/apps/setting/ChangeLog @@ -52,3 +52,4 @@ 0.46: Fix regression after making 'calibrate battery' only for Bangle.js 2 0.47: Allow colors to be translated Improve "Turn Off" user experience +0.48: Allow reading custom themes from files diff --git a/apps/setting/metadata.json b/apps/setting/metadata.json index ce4e5b337..17519730e 100644 --- a/apps/setting/metadata.json +++ b/apps/setting/metadata.json @@ -1,7 +1,7 @@ { "id": "setting", "name": "Settings", - "version": "0.47", + "version": "0.48", "description": "A menu for setting up Bangle.js", "icon": "settings.png", "tags": "tool,system", diff --git a/apps/setting/settings.js b/apps/setting/settings.js index 39cf6c1d1..3bb9b4e22 100644 --- a/apps/setting/settings.js +++ b/apps/setting/settings.js @@ -221,7 +221,8 @@ function showThemeMenu() { Bangle.drawWidgets(); m.draw(); } - var m = E.showMenu({ + + var themesMenu = { '':{title:/*LANG*/'Theme'}, '< Back': ()=>showSystemMenu(), /*LANG*/'Dark BW': ()=>{ @@ -239,9 +240,26 @@ function showThemeMenu() { fgH:cl("#000"), bgH:cl("#0ff"), dark:false }); - }, - /*LANG*/'Customize': ()=>showCustomThemeMenu(), - }); + } + }; + + require("Storage").list(/^.*\.theme$/).forEach( + n => { + let newTheme = require("Storage").readJSON(n); + themesMenu[newTheme.name ? newTheme.name : n] = () => { + upd({ + fg:cl(newTheme.fg), bg:cl(newTheme.bg), + fg2:cl(newTheme.fg2), bg2:cl(newTheme.bg2), + fgH:cl(newTheme.fgH), bgH:cl(newTheme.bgH), + dark:newTheme.dark + }); + }; + } + ); + + themesMenu[/*LANG*/'Customize'] = () => showCustomThemeMenu(); + + var m = E.showMenu(themesMenu); function showCustomThemeMenu() { function setT(t, v) {