Implement support for vertical ProgressBar
Co-authored-by: MG_REX <49415741+ThisIsRex@users.noreply.github.com>
This commit is contained in:
parent
5eedf5798c
commit
a22d96aae9
2 changed files with 101 additions and 28 deletions
|
|
@ -1,4 +1,7 @@
|
|||
use iced::widget::{column, progress_bar, slider};
|
||||
use iced::widget::{
|
||||
center, center_x, checkbox, column, progress_bar, row, slider,
|
||||
vertical_slider,
|
||||
};
|
||||
use iced::Element;
|
||||
|
||||
pub fn main() -> iced::Result {
|
||||
|
|
@ -8,25 +11,58 @@ pub fn main() -> iced::Result {
|
|||
#[derive(Default)]
|
||||
struct Progress {
|
||||
value: f32,
|
||||
is_vertical: bool,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, Copy)]
|
||||
enum Message {
|
||||
SliderChanged(f32),
|
||||
ToggleVertical(bool),
|
||||
}
|
||||
|
||||
impl Progress {
|
||||
fn update(&mut self, message: Message) {
|
||||
match message {
|
||||
Message::SliderChanged(x) => self.value = x,
|
||||
Message::ToggleVertical(is_vertical) => {
|
||||
self.is_vertical = is_vertical
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fn view(&self) -> Element<Message> {
|
||||
let bar = progress_bar(0.0..=100.0, self.value);
|
||||
|
||||
column![
|
||||
progress_bar(0.0..=100.0, self.value),
|
||||
slider(0.0..=100.0, self.value, Message::SliderChanged).step(0.01)
|
||||
if self.is_vertical {
|
||||
center(
|
||||
row![
|
||||
bar.vertical(),
|
||||
vertical_slider(
|
||||
0.0..=100.0,
|
||||
self.value,
|
||||
Message::SliderChanged
|
||||
)
|
||||
.step(0.01)
|
||||
]
|
||||
.spacing(20),
|
||||
)
|
||||
} else {
|
||||
center(
|
||||
column![
|
||||
bar,
|
||||
slider(0.0..=100.0, self.value, Message::SliderChanged)
|
||||
.step(0.01)
|
||||
]
|
||||
.spacing(20),
|
||||
)
|
||||
},
|
||||
center_x(
|
||||
checkbox("Vertical", self.is_vertical)
|
||||
.on_toggle(Message::ToggleVertical)
|
||||
),
|
||||
]
|
||||
.spacing(20)
|
||||
.padding(20)
|
||||
.into()
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue