diff options
author | 2024-02-03 18:51:30 +0100 | |
---|---|---|
committer | 2024-02-03 18:51:30 +0100 | |
commit | 17cb548e20a0594684b00c2eeda0e81cc8d06095 (patch) | |
tree | 2d6fea959f42bed1a7ff214d85de4f12785d32aa /examples/styling | |
parent | 5770efe06dc552409daf586590d4f477206c732b (diff) | |
download | iced-17cb548e20a0594684b00c2eeda0e81cc8d06095.tar.gz iced-17cb548e20a0594684b00c2eeda0e81cc8d06095.tar.bz2 iced-17cb548e20a0594684b00c2eeda0e81cc8d06095.zip |
Use `Theme::ALL` for theme selector in `styling` example
Diffstat (limited to 'examples/styling')
-rw-r--r-- | examples/styling/src/main.rs | 86 |
1 files changed, 15 insertions, 71 deletions
diff --git a/examples/styling/src/main.rs b/examples/styling/src/main.rs index 8a7963d0..cf2dcb8a 100644 --- a/examples/styling/src/main.rs +++ b/examples/styling/src/main.rs @@ -1,10 +1,9 @@ -use iced::theme::{self, Theme}; use iced::widget::{ - button, checkbox, column, container, horizontal_rule, progress_bar, radio, - row, scrollable, slider, text, text_input, toggler, vertical_rule, - vertical_space, + button, checkbox, column, container, horizontal_rule, pick_list, + progress_bar, row, scrollable, slider, text, text_input, toggler, + vertical_rule, vertical_space, }; -use iced::{Alignment, Color, Element, Length, Sandbox, Settings}; +use iced::{Alignment, Element, Length, Sandbox, Settings, Theme}; pub fn main() -> iced::Result { Styling::run(Settings::default()) @@ -19,22 +18,9 @@ struct Styling { toggler_value: bool, } -#[derive(Debug, PartialEq, Eq, Clone, Copy)] -enum ThemeType { - Light, - Dark, - Nord, - GruvboxLight, - GruvboxDark, - Dracula, - SolarizedLight, - SolarizedDark, - Custom, -} - #[derive(Debug, Clone)] enum Message { - ThemeChanged(ThemeType), + ThemeChanged(Theme), InputChanged(String), ButtonPressed, SliderChanged(f32), @@ -56,26 +42,7 @@ impl Sandbox for Styling { fn update(&mut self, message: Message) { match message { Message::ThemeChanged(theme) => { - self.theme = match theme { - ThemeType::Light => Theme::Light, - ThemeType::Dark => Theme::Dark, - ThemeType::Nord => Theme::Nord, - ThemeType::GruvboxLight => Theme::GruvboxLight, - ThemeType::GruvboxDark => Theme::GruvboxDark, - ThemeType::Dracula => Theme::Dracula, - ThemeType::SolarizedLight => Theme::SolarizedLight, - ThemeType::SolarizedDark => Theme::SolarizedDark, - ThemeType::Custom => Theme::custom( - String::from("Custom"), - theme::Palette { - background: Color::from_rgb(1.0, 0.9, 1.0), - text: Color::BLACK, - primary: Color::from_rgb(0.5, 0.5, 0.0), - success: Color::from_rgb(0.0, 1.0, 0.0), - danger: Color::from_rgb(1.0, 0.0, 0.0), - }, - ), - } + self.theme = theme; } Message::InputChanged(value) => self.input_value = value, Message::ButtonPressed => {} @@ -86,39 +53,16 @@ impl Sandbox for Styling { } fn view(&self) -> Element<Message> { - let choose_theme = [ - ThemeType::Light, - ThemeType::Dark, - ThemeType::Nord, - ThemeType::Dracula, - ThemeType::SolarizedLight, - ThemeType::SolarizedDark, - ThemeType::GruvboxLight, - ThemeType::GruvboxDark, - ThemeType::Custom, + let choose_theme = column![ + text("Theme:"), + pick_list( + Theme::ALL, + Some(self.theme.clone()), + Message::ThemeChanged + ) + .width(Length::Fill), ] - .iter() - .fold( - column![text("Choose a theme:")].spacing(10), - |column, theme| { - column.push(radio( - format!("{theme:?}"), - *theme, - Some(match self.theme { - Theme::Light => ThemeType::Light, - Theme::Dark => ThemeType::Dark, - Theme::Dracula => ThemeType::Dracula, - Theme::Nord => ThemeType::Nord, - Theme::SolarizedLight => ThemeType::SolarizedLight, - Theme::SolarizedDark => ThemeType::SolarizedDark, - Theme::GruvboxLight => ThemeType::GruvboxLight, - Theme::GruvboxDark => ThemeType::GruvboxDark, - Theme::Custom { .. } => ThemeType::Custom, - }), - Message::ThemeChanged, - )) - }, - ); + .spacing(10); let text_input = text_input("Type something...", &self.input_value) .on_input(Message::InputChanged) |