summaryrefslogtreecommitdiffstats
path: root/examples/slider
diff options
context:
space:
mode:
authorLibravatar Jonatan Pettersson <jonatan.pettersson@proton.me>2023-09-20 20:56:50 +0200
committerLibravatar Héctor Ramón Jiménez <hector@hecrj.dev>2024-01-31 21:25:19 +0100
commit5e2b3d4a51be97c77124dcd60e5ee3bed1b19826 (patch)
treec742f2e87be4a9360c8b958a1730820ddb349107 /examples/slider
parent66c8a804c6b665718a2cc80222ba8b906b543014 (diff)
downloadiced-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.rs33
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}"));