refactor: undo changes to radio
This commit is contained in:
parent
e2166ecad0
commit
bc26dff2ca
3 changed files with 22 additions and 11 deletions
|
|
@ -23,6 +23,13 @@ pub fn main() -> iced::Result {
|
||||||
|
|
||||||
static CUSTOM_THEME: OnceCell<Theme> = OnceCell::new();
|
static CUSTOM_THEME: OnceCell<Theme> = OnceCell::new();
|
||||||
|
|
||||||
|
#[derive(Debug, PartialEq, Eq, Clone, Copy)]
|
||||||
|
enum ThemeType {
|
||||||
|
Light,
|
||||||
|
Dark,
|
||||||
|
Custom,
|
||||||
|
}
|
||||||
|
|
||||||
#[derive(Default)]
|
#[derive(Default)]
|
||||||
struct Styling {
|
struct Styling {
|
||||||
theme: Theme,
|
theme: Theme,
|
||||||
|
|
@ -34,7 +41,7 @@ struct Styling {
|
||||||
|
|
||||||
#[derive(Debug, Clone)]
|
#[derive(Debug, Clone)]
|
||||||
enum Message {
|
enum Message {
|
||||||
ThemeChanged(Theme),
|
ThemeChanged(ThemeType),
|
||||||
InputChanged(String),
|
InputChanged(String),
|
||||||
ButtonPressed,
|
ButtonPressed,
|
||||||
SliderChanged(f32),
|
SliderChanged(f32),
|
||||||
|
|
@ -55,7 +62,11 @@ impl Sandbox for Styling {
|
||||||
|
|
||||||
fn update(&mut self, message: Message) {
|
fn update(&mut self, message: Message) {
|
||||||
match 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::InputChanged(value) => self.input_value = value,
|
||||||
Message::ButtonPressed => {}
|
Message::ButtonPressed => {}
|
||||||
Message::SliderChanged(value) => self.slider_value = value,
|
Message::SliderChanged(value) => self.slider_value = value,
|
||||||
|
|
@ -65,17 +76,17 @@ impl Sandbox for Styling {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn view(&self) -> Element<Message> {
|
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![text("Choose a theme:")].spacing(10),
|
||||||
|column, theme| {
|
|column, theme| {
|
||||||
column.push(radio(
|
column.push(radio(
|
||||||
match theme {
|
format!("{:?}", theme),
|
||||||
Theme::Light => "Light",
|
|
||||||
Theme::Dark => "Dark",
|
|
||||||
Theme::Custom { .. } => "Custom",
|
|
||||||
},
|
|
||||||
*theme,
|
*theme,
|
||||||
Some(self.theme),
|
Some(match self.theme {
|
||||||
|
Theme::Light => ThemeType::Light,
|
||||||
|
Theme::Dark => ThemeType::Dark,
|
||||||
|
Theme::Custom { .. } => ThemeType::Custom,
|
||||||
|
}),
|
||||||
Message::ThemeChanged,
|
Message::ThemeChanged,
|
||||||
))
|
))
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -143,7 +143,7 @@ where
|
||||||
Message: Clone,
|
Message: Clone,
|
||||||
Renderer: crate::text::Renderer,
|
Renderer: crate::text::Renderer,
|
||||||
Renderer::Theme: widget::radio::StyleSheet,
|
Renderer::Theme: widget::radio::StyleSheet,
|
||||||
V: Copy + PartialEq,
|
V: Copy + Eq,
|
||||||
{
|
{
|
||||||
widget::Radio::new(value, label, selected, on_click)
|
widget::Radio::new(value, label, selected, on_click)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -84,7 +84,7 @@ where
|
||||||
f: F,
|
f: F,
|
||||||
) -> Self
|
) -> Self
|
||||||
where
|
where
|
||||||
V: PartialEq + Copy,
|
V: Eq + Copy,
|
||||||
F: FnOnce(V) -> Message,
|
F: FnOnce(V) -> Message,
|
||||||
{
|
{
|
||||||
Radio {
|
Radio {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue