diff options
| author | 2020-01-09 18:46:06 +0100 | |
|---|---|---|
| committer | 2020-01-09 18:46:06 +0100 | |
| commit | 0a8302450557877cb667b51fc84383aaf0a11b02 (patch) | |
| tree | fe3a8a6b0ae82f7fd1fa0c0de34b4b09d0b9edda /examples/stopwatch | |
| parent | 6699329d3f91c5b9d8e8e55ad88de24bd3894955 (diff) | |
| parent | 7b278755fc7929633b5771824beac4d39b16e82e (diff) | |
| download | iced-0a8302450557877cb667b51fc84383aaf0a11b02.tar.gz iced-0a8302450557877cb667b51fc84383aaf0a11b02.tar.bz2 iced-0a8302450557877cb667b51fc84383aaf0a11b02.zip  | |
Merge pull request #146 from hecrj/feature/custom-styling
Custom styling
Diffstat (limited to '')
| -rw-r--r-- | examples/stopwatch.rs | 46 | 
1 files changed, 35 insertions, 11 deletions
diff --git a/examples/stopwatch.rs b/examples/stopwatch.rs index f4d485e2..c9a61ee9 100644 --- a/examples/stopwatch.rs +++ b/examples/stopwatch.rs @@ -1,7 +1,6 @@  use iced::{ -    button, Align, Application, Background, Button, Color, Column, Command, -    Container, Element, HorizontalAlignment, Length, Row, Settings, -    Subscription, Text, +    button, Align, Application, Button, Column, Command, Container, Element, +    HorizontalAlignment, Length, Row, Settings, Subscription, Text,  };  use std::time::{Duration, Instant}; @@ -98,30 +97,29 @@ impl Application for Stopwatch {          ))          .size(40); -        let button = |state, label, color: [f32; 3]| { +        let button = |state, label, style| {              Button::new(                  state,                  Text::new(label) -                    .color(Color::WHITE)                      .horizontal_alignment(HorizontalAlignment::Center),              )              .min_width(80) -            .background(Background::Color(color.into())) -            .border_radius(10)              .padding(10) +            .style(style)          };          let toggle_button = {              let (label, color) = match self.state { -                State::Idle => ("Start", [0.11, 0.42, 0.87]), -                State::Ticking { .. } => ("Stop", [0.9, 0.4, 0.4]), +                State::Idle => ("Start", style::Button::Primary), +                State::Ticking { .. } => ("Stop", style::Button::Destructive),              };              button(&mut self.toggle, label, color).on_press(Message::Toggle)          }; -        let reset_button = button(&mut self.reset, "Reset", [0.7, 0.7, 0.7]) -            .on_press(Message::Reset); +        let reset_button = +            button(&mut self.reset, "Reset", style::Button::Secondary) +                .on_press(Message::Reset);          let controls = Row::new()              .spacing(20) @@ -177,3 +175,29 @@ mod time {          }      }  } + +mod style { +    use iced::{button, Background, Color, Vector}; + +    pub enum Button { +        Primary, +        Secondary, +        Destructive, +    } + +    impl button::StyleSheet for Button { +        fn active(&self) -> button::Style { +            button::Style { +                background: Some(Background::Color(match self { +                    Button::Primary => Color::from_rgb(0.11, 0.42, 0.87), +                    Button::Secondary => Color::from_rgb(0.5, 0.5, 0.5), +                    Button::Destructive => Color::from_rgb(0.8, 0.2, 0.2), +                })), +                border_radius: 12, +                shadow_offset: Vector::new(1.0, 1.0), +                text_color: Color::WHITE, +                ..button::Style::default() +            } +        } +    } +}  | 
