Skip to content

Commit 5356ac1

Browse files
Add theme to settings
1 parent 3f4ab9c commit 5356ac1

File tree

2 files changed

+22
-15
lines changed

2 files changed

+22
-15
lines changed

internal_filesystem/apps/com.micropythonos.settings/assets/settings.py

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,12 @@ def __init__(self):
1818
super().__init__()
1919
self.prefs = None
2020
self.settings = [
21-
{"title": "Light/Dark Theme", "key": "light_dark_theme", "value_label": None, "cont": None},
22-
{"title": "Theme Color", "key": "theme_color", "value_label": None, "cont": None, "placeholder": "HTML hex color, like: EC048C"},
23-
{"title": "Reboot into Bootloader", "key": "boot_mode", "value_label": None, "cont": None},
24-
{"title": "Display Brightness", "key": "display_brightness", "value_label": None, "cont": None, "placeholder": "A value from 0 to 100."},
25-
{"title": "Timezone", "key": "timezone", "value_label": None, "cont": None, "placeholder": "Example: Europe/Prague"},
21+
{"title": "Light/Dark Theme", "key": "theme_light_dark", "value_label": None, "cont": None},
22+
{"title": "Theme Color", "key": "theme_primary_color", "value_label": None, "cont": None, "placeholder": "HTML hex color, like: EC048C"},
23+
#{"title": "Display Brightness", "key": "display_brightness", "value_label": None, "cont": None, "placeholder": "A value from 0 to 100."},
24+
# Maybe also add font size (but ideally then all fonts should scale up/down)
25+
#{"title": "Reboot into Bootloader", "key": "boot_mode", "value_label": None, "cont": None}, # special that doesn't get saved
26+
#{"title": "Timezone", "key": "timezone", "value_label": None, "cont": None, "placeholder": "Example: Europe/Prague"},
2627
]
2728

2829
def onCreate(self):
@@ -105,7 +106,7 @@ def onCreate(self):
105106
setting_label.align(lv.ALIGN.TOP_LEFT,0,0)
106107
setting_label.set_style_text_font(lv.font_montserrat_26, 0)
107108

108-
if setting["key"] == "light_dark_theme" or setting["key"] == "boot_mode":
109+
if setting["key"] == "theme_light_dark" or setting["key"] == "boot_mode":
109110
# Create container for radio buttons
110111
self.radio_container = lv.obj(settings_screen_detail)
111112
self.radio_container.set_width(lv.pct(100))
@@ -237,7 +238,7 @@ def cambutton_cb_unused(self, event):
237238
self.startActivityForResult(Intent(activity_class=CameraApp).putExtra("scanqr_mode", True), self.gotqr_result_callback)
238239

239240
def save_setting(self, setting):
240-
if ( setting["key"] =="light_dark_theme" or setting["key"] == "boot_mode" ) and self.radio_container:
241+
if ( setting["key"] =="theme_light_dark" or setting["key"] == "boot_mode" ) and self.radio_container:
241242
if setting["key"] == "boot_mode":
242243
options = [("Normal", "normal"), ("Bootloader", "bootloader")]
243244
else:

internal_filesystem/main.py

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,16 +7,22 @@
77
fs_driver.fs_register(fs_drv, 'M')
88

99
import mpos.apps
10+
import mpos.config
1011
import mpos.ui
1112

12-
RED = lv.palette_main(lv.PALETTE.RED)
13-
DARKPINK = lv.color_hex(0xEC048C)
14-
MEDIUMPINK = lv.color_hex(0xF480C5)
15-
LIGHTPINK = lv.color_hex(0xF9E9F2)
16-
DARKYELLOW = lv.color_hex(0xFBDC05)
17-
LIGHTYELLOW = lv.color_hex(0xFBE499)
18-
theme = lv.theme_default_init(display._disp_drv, DARKPINK, DARKYELLOW, False, lv.font_montserrat_12)
19-
#theme = lv.theme_default_init(display._disp_drv, DARKPINK, DARKYELLOW, True, lv.font_montserrat_12)
13+
prefs = mpos.config.SharedPreferences("com.micropythonos.settings")
14+
15+
# Load and set theme:
16+
theme_light_dark = prefs.get_string("theme_light_dark", "light") # default to a light theme
17+
theme_dark_bool = ( theme_light_dark == "dark" )
18+
primary_color = lv.theme_get_color_primary(None)
19+
color_string = prefs.get_string("theme_primary_color")
20+
if color_string:
21+
color_string = color_string.replace("0x", "").replace("#", "").strip().lower()
22+
color_int = int(color_string, 16)
23+
print(f"Setting primary color: {color_int}")
24+
primary_color = lv.color_hex(color_int)
25+
theme = lv.theme_default_init(display._disp_drv, primary_color, lv.color_hex(0xFBDC05), theme_dark_bool, lv.font_montserrat_12)
2026

2127
#display.set_theme(theme)
2228

0 commit comments

Comments
 (0)