iced-yoda/examples/slider/src/main.rs

78 lines
1.8 KiB
Rust
Raw Normal View History

use iced::widget::{column, container, slider, text, vertical_slider};
2022-12-12 15:27:00 +01:00
use iced::{Element, Length, Sandbox, Settings};
pub fn main() -> iced::Result {
Slider::run(Settings::default())
}
#[derive(Debug, Clone)]
pub enum Message {
SliderChanged(u8),
}
pub struct Slider {
2024-01-31 21:56:55 +01:00
value: u8,
default: u8,
step: u8,
shift_step: u8,
2022-12-12 15:27:00 +01:00
}
impl Sandbox for Slider {
type Message = Message;
fn new() -> Slider {
Slider {
2024-01-31 21:56:55 +01:00
value: 50,
default: 50,
step: 5,
shift_step: 1,
}
2022-12-12 15:27:00 +01:00
}
fn title(&self) -> String {
String::from("Slider - Iced")
}
fn update(&mut self, message: Message) {
match message {
Message::SliderChanged(value) => {
2024-01-31 21:56:55 +01:00
self.value = value;
2022-12-12 15:27:00 +01:00
}
}
}
fn view(&self) -> Element<Message> {
let h_slider = container(
2024-01-31 21:56:55 +01:00
slider(0..=100, self.value, Message::SliderChanged)
.default(self.default)
.step(self.step)
.shift_step(self.shift_step),
)
.width(250);
2022-12-12 15:27:00 +01:00
let v_slider = container(
2024-01-31 21:56:55 +01:00
vertical_slider(0..=100, self.value, Message::SliderChanged)
.default(self.default)
.step(self.step)
.shift_step(self.shift_step),
)
.height(200);
2022-12-12 15:27:00 +01:00
2024-01-31 21:56:55 +01:00
let text = text(self.value);
2022-12-12 15:27:00 +01:00
container(
column![
container(v_slider).width(Length::Fill).center_x(),
container(h_slider).width(Length::Fill).center_x(),
container(text).width(Length::Fill).center_x(),
]
.spacing(25),
)
.height(Length::Fill)
.width(Length::Fill)
.center_x()
.center_y()
.into()
}
}