refactor: undo changes to radio

This commit is contained in:
Ashley Wulber 2022-09-07 12:04:56 -04:00 committed by Héctor Ramón Jiménez
parent e2166ecad0
commit bc26dff2ca
No known key found for this signature in database
GPG key ID: 140CC052C94F138E
3 changed files with 22 additions and 11 deletions

View file

@ -23,6 +23,13 @@ pub fn main() -> iced::Result {
static CUSTOM_THEME: OnceCell<Theme> = OnceCell::new();
#[derive(Debug, PartialEq, Eq, Clone, Copy)]
enum ThemeType {
Light,
Dark,
Custom,
}
#[derive(Default)]
struct Styling {
theme: Theme,
@ -34,7 +41,7 @@ struct Styling {
#[derive(Debug, Clone)]
enum Message {
ThemeChanged(Theme),
ThemeChanged(ThemeType),
InputChanged(String),
ButtonPressed,
SliderChanged(f32),
@ -55,7 +62,11 @@ impl Sandbox for Styling {
fn update(&mut self, message: Message) {
match message {
Message::ThemeChanged(theme) => self.theme = theme,
Message::ThemeChanged(theme) => self.theme = match theme {
ThemeType::Light => Theme::Light,
ThemeType::Dark => Theme::Dark,
ThemeType::Custom => *CUSTOM_THEME.get().unwrap(),
},
Message::InputChanged(value) => self.input_value = value,
Message::ButtonPressed => {}
Message::SliderChanged(value) => self.slider_value = value,
@ -65,17 +76,17 @@ impl Sandbox for Styling {
}
fn view(&self) -> Element<Message> {
let choose_theme = [Theme::Light, Theme::Dark, *CUSTOM_THEME.get().unwrap()].iter().fold(
let choose_theme = [ThemeType::Light, ThemeType::Dark, ThemeType::Custom].iter().fold(
column![text("Choose a theme:")].spacing(10),
|column, theme| {
column.push(radio(
match theme {
Theme::Light => "Light",
Theme::Dark => "Dark",
Theme::Custom { .. } => "Custom",
},
format!("{:?}", theme),
*theme,
Some(self.theme),
Some(match self.theme {
Theme::Light => ThemeType::Light,
Theme::Dark => ThemeType::Dark,
Theme::Custom { .. } => ThemeType::Custom,
}),
Message::ThemeChanged,
))
},

View file

@ -143,7 +143,7 @@ where
Message: Clone,
Renderer: crate::text::Renderer,
Renderer::Theme: widget::radio::StyleSheet,
V: Copy + PartialEq,
V: Copy + Eq,
{
widget::Radio::new(value, label, selected, on_click)
}

View file

@ -84,7 +84,7 @@ where
f: F,
) -> Self
where
V: PartialEq + Copy,
V: Eq + Copy,
F: FnOnce(V) -> Message,
{
Radio {