From 4833bffdcac069c45bc3fe43b7c73ccdd836bd3e Mon Sep 17 00:00:00 2001 From: overcat <4catcode@gmail.com> Date: Tue, 13 Jun 2023 10:24:05 +0800 Subject: [PATCH] Add QR brightness tips screen --- src/seedsigner/gui/screens/screen.py | 26 ++++++++++++++++++++ src/seedsigner/models/settings_definition.py | 7 ++++++ tests/test_controller.py | 1 + 3 files changed, 34 insertions(+) diff --git a/src/seedsigner/gui/screens/screen.py b/src/seedsigner/gui/screens/screen.py index 50a94e70..4727c352 100644 --- a/src/seedsigner/gui/screens/screen.py +++ b/src/seedsigner/gui/screens/screen.py @@ -660,6 +660,21 @@ class LargeButtonScreen(BaseTopNavScreen): class QRDisplayScreen(BaseScreen): qr_encoder: EncodeQR = None + class AdjustBrightnessTipsScreen(BaseScreen): + def __post_init__(self): + super().__post_init__() + + text_area = TextArea( + text="Use joystick Up/Down for adjusting brightness", + is_text_centered=True, + screen_y=self.canvas_height // 2, + ) + self.components.append(text_area) + + def _run(self): + # show the screen for 2 seconds + time.sleep(2) + class QRDisplayThread(BaseThread): def __init__(self, qr_encoder: EncodeQR, qr_brightness: ThreadsafeCounter, renderer: Renderer): super().__init__() @@ -669,6 +684,17 @@ class QRDisplayScreen(BaseScreen): def run(self): + from seedsigner.models.settings import Settings + + # Display the brightness tip screen + show_brightness_tips = ( + Settings.get_instance().get_value( + SettingsConstants.SETTING__QR_BRIGHTNESS_TIPS + ) + == SettingsConstants.OPTION__ENABLED + ) + if show_brightness_tips: + QRDisplayScreen.AdjustBrightnessTipsScreen().display() # Loop whether the QR is a single frame or animated; each loop might adjust # brightness setting. while self.keep_running: diff --git a/src/seedsigner/models/settings_definition.py b/src/seedsigner/models/settings_definition.py index 6c2af745..49d2a6ea 100644 --- a/src/seedsigner/models/settings_definition.py +++ b/src/seedsigner/models/settings_definition.py @@ -160,6 +160,7 @@ class SettingsConstants: SETTING__BIP85_CHILD_SEEDS = "bip85_child_seeds" SETTING__PRIVACY_WARNINGS = "privacy_warnings" SETTING__DIRE_WARNINGS = "dire_warnings" + SETTING__QR_BRIGHTNESS_TIPS = "qr_brightness_tips" SETTING__PARTNER_LOGOS = "partner_logos" SETTING__DEBUG = "debug" @@ -465,6 +466,12 @@ class SettingsDefinition: visibility=SettingsConstants.VISIBILITY__ADVANCED, default_value=SettingsConstants.OPTION__ENABLED), + SettingsEntry(category=SettingsConstants.CATEGORY__FEATURES, + attr_name=SettingsConstants.SETTING__QR_BRIGHTNESS_TIPS, + display_name="Show QR brightness tips", + visibility=SettingsConstants.VISIBILITY__ADVANCED, + default_value=SettingsConstants.OPTION__ENABLED), + SettingsEntry(category=SettingsConstants.CATEGORY__FEATURES, attr_name=SettingsConstants.SETTING__PARTNER_LOGOS, display_name="Show partner logos", diff --git a/tests/test_controller.py b/tests/test_controller.py index bd8b2c18..064f1069 100644 --- a/tests/test_controller.py +++ b/tests/test_controller.py @@ -68,6 +68,7 @@ def test_missing_settings_get_defaults(reset_controller): assert controller.settings.get_value(SettingsConstants.SETTING__BIP85_CHILD_SEEDS) == SettingsConstants.OPTION__DISABLED assert controller.settings.get_value(SettingsConstants.SETTING__PRIVACY_WARNINGS) == SettingsConstants.OPTION__ENABLED assert controller.settings.get_value(SettingsConstants.SETTING__DIRE_WARNINGS) == SettingsConstants.OPTION__ENABLED + assert controller.settings.get_value(SettingsConstants.SETTING__QR_BRIGHTNESS_TIPS) == SettingsConstants.OPTION__ENABLED assert controller.settings.get_value(SettingsConstants.SETTING__PARTNER_LOGOS) == SettingsConstants.OPTION__ENABLED # Hidden Settings defaults