diff options
Diffstat (limited to 'examples')
| -rw-r--r-- | examples/styling.rs | 31 |
1 files changed, 21 insertions, 10 deletions
diff --git a/examples/styling.rs b/examples/styling.rs index a636585..127f615 100644 --- a/examples/styling.rs +++ b/examples/styling.rs @@ -35,6 +35,7 @@ enum Message { TogglerToggled(bool), PreviousTheme, NextTheme, + SystemThemeChanged(Theme), } impl Styling { @@ -65,6 +66,9 @@ impl Styling { }; } } + Message::SystemThemeChanged(theme) => { + Theme::update_system_theme(theme) + } } } @@ -165,16 +169,23 @@ impl Styling { } fn subscription(&self) -> Subscription<Message> { - keyboard::on_key_press(|key, _modifiers| match key { - keyboard::Key::Named( - keyboard::key::Named::ArrowUp | keyboard::key::Named::ArrowLeft, - ) => Some(Message::PreviousTheme), - keyboard::Key::Named( - keyboard::key::Named::ArrowDown - | keyboard::key::Named::ArrowRight, - ) => Some(Message::NextTheme), - _ => None, - }) + let theme_toggle = + keyboard::on_key_press(|key, _modifiers| match key { + keyboard::Key::Named( + keyboard::key::Named::ArrowUp + | keyboard::key::Named::ArrowLeft, + ) => Some(Message::PreviousTheme), + keyboard::Key::Named( + keyboard::key::Named::ArrowDown + | keyboard::key::Named::ArrowRight, + ) => Some(Message::NextTheme), + _ => None, + }); + + let system_theme = + Theme::subscription().map(Message::SystemThemeChanged); + + Subscription::batch([theme_toggle, system_theme]) } fn theme(&self) -> Theme { |
