diff options
author | 2023-09-20 20:56:50 +0200 | |
---|---|---|
committer | 2024-01-31 21:25:19 +0100 | |
commit | 5e2b3d4a51be97c77124dcd60e5ee3bed1b19826 (patch) | |
tree | c742f2e87be4a9360c8b958a1730820ddb349107 /examples/slider | |
parent | 66c8a804c6b665718a2cc80222ba8b906b543014 (diff) | |
download | iced-5e2b3d4a51be97c77124dcd60e5ee3bed1b19826.tar.gz iced-5e2b3d4a51be97c77124dcd60e5ee3bed1b19826.tar.bz2 iced-5e2b3d4a51be97c77124dcd60e5ee3bed1b19826.zip |
Enhance `Slider` and `VerticalSlider` functionality
* Add optional default behavior
* Add a `default` field
* Add a `default()` method to set the `default` field
* A double-click, ctrl-click or command-click will set the slider to the default value
* Add optional fine-grained control
* Add an optional `step_fine` field
* Add a `step_fine()` method to set the `step_fine` field
* Use `step_fine` in place of `step` while shift is pressed
* Add increment/decrement via up/down keys
* Update `Slider` and `VerticalSlider` examples
Diffstat (limited to 'examples/slider')
-rw-r--r-- | examples/slider/src/main.rs | 33 |
1 files changed, 26 insertions, 7 deletions
diff --git a/examples/slider/src/main.rs b/examples/slider/src/main.rs index e83804c2..e9820aed 100644 --- a/examples/slider/src/main.rs +++ b/examples/slider/src/main.rs @@ -12,13 +12,21 @@ pub enum Message { pub struct Slider { slider_value: u8, + slider_default: u8, + slider_step: u8, + slider_step_fine: u8, } impl Sandbox for Slider { type Message = Message; fn new() -> Slider { - Slider { slider_value: 50 } + Slider { + slider_value: 50, + slider_default: 50, + slider_step: 5, + slider_step_fine: 1, + } } fn title(&self) -> String { @@ -35,14 +43,25 @@ impl Sandbox for Slider { fn view(&self) -> Element<Message> { let value = self.slider_value; + let default = self.slider_default; + let step = self.slider_step; + let step_fine = self.slider_step_fine; - let h_slider = - container(slider(0..=100, value, Message::SliderChanged)) - .width(250); + let h_slider = container( + slider(0..=100, value, Message::SliderChanged) + .default(default) + .step(step) + .step_fine(step_fine), + ) + .width(250); - let v_slider = - container(vertical_slider(0..=100, value, Message::SliderChanged)) - .height(200); + let v_slider = container( + vertical_slider(0..=100, value, Message::SliderChanged) + .default(default) + .step(step) + .step_fine(step_fine), + ) + .height(200); let text = text(format!("{value}")); |