Move style types of slider to iced_widget
This commit is contained in:
parent
330a625205
commit
d735209fc3
6 changed files with 136 additions and 143 deletions
|
|
@ -23,7 +23,6 @@ pub mod pick_list;
|
|||
pub mod progress_bar;
|
||||
pub mod radio;
|
||||
pub mod rule;
|
||||
pub mod slider;
|
||||
pub mod svg;
|
||||
pub mod text_editor;
|
||||
pub mod theme;
|
||||
|
|
|
|||
|
|
@ -1,75 +0,0 @@
|
|||
//! Change the apperance of a slider.
|
||||
use crate::core::border;
|
||||
use crate::core::{Color, Pixels};
|
||||
|
||||
/// The appearance of a slider.
|
||||
#[derive(Debug, Clone, Copy)]
|
||||
pub struct Appearance {
|
||||
/// The colors of the rail of the slider.
|
||||
pub rail: Rail,
|
||||
/// The appearance of the [`Handle`] of the slider.
|
||||
pub handle: Handle,
|
||||
}
|
||||
|
||||
impl Appearance {
|
||||
/// Changes the [`HandleShape`] of the [`Appearance`] to a circle
|
||||
/// with the given radius.
|
||||
pub fn with_circular_handle(mut self, radius: impl Into<Pixels>) -> Self {
|
||||
self.handle.shape = HandleShape::Circle {
|
||||
radius: radius.into().0,
|
||||
};
|
||||
self
|
||||
}
|
||||
}
|
||||
|
||||
/// The appearance of a slider rail
|
||||
#[derive(Debug, Clone, Copy)]
|
||||
pub struct Rail {
|
||||
/// The colors of the rail of the slider.
|
||||
pub colors: (Color, Color),
|
||||
/// The width of the stroke of a slider rail.
|
||||
pub width: f32,
|
||||
/// The border radius of the corners of the rail.
|
||||
pub border_radius: border::Radius,
|
||||
}
|
||||
|
||||
/// The appearance of the handle of a slider.
|
||||
#[derive(Debug, Clone, Copy)]
|
||||
pub struct Handle {
|
||||
/// The shape of the handle.
|
||||
pub shape: HandleShape,
|
||||
/// The [`Color`] of the handle.
|
||||
pub color: Color,
|
||||
/// The border width of the handle.
|
||||
pub border_width: f32,
|
||||
/// The border [`Color`] of the handle.
|
||||
pub border_color: Color,
|
||||
}
|
||||
|
||||
/// The shape of the handle of a slider.
|
||||
#[derive(Debug, Clone, Copy)]
|
||||
pub enum HandleShape {
|
||||
/// A circular handle.
|
||||
Circle {
|
||||
/// The radius of the circle.
|
||||
radius: f32,
|
||||
},
|
||||
/// A rectangular shape.
|
||||
Rectangle {
|
||||
/// The width of the rectangle.
|
||||
width: u16,
|
||||
/// The border radius of the corners of the rectangle.
|
||||
border_radius: border::Radius,
|
||||
},
|
||||
}
|
||||
|
||||
/// A set of rules that dictate the style of a slider.
|
||||
pub trait StyleSheet {
|
||||
fn default() -> fn(&Self, Status) -> Appearance;
|
||||
}
|
||||
|
||||
pub enum Status {
|
||||
Active,
|
||||
Hovered,
|
||||
Dragging,
|
||||
}
|
||||
|
|
@ -11,7 +11,6 @@ use crate::pick_list;
|
|||
use crate::progress_bar;
|
||||
use crate::radio;
|
||||
use crate::rule;
|
||||
use crate::slider;
|
||||
use crate::svg;
|
||||
use crate::text_editor;
|
||||
use crate::toggler;
|
||||
|
|
@ -279,43 +278,6 @@ impl<T: Fn(&Theme) -> application::Appearance> application::StyleSheet for T {
|
|||
}
|
||||
}
|
||||
|
||||
impl slider::StyleSheet for Theme {
|
||||
fn default() -> fn(&Self, slider::Status) -> slider::Appearance {
|
||||
slider
|
||||
}
|
||||
}
|
||||
|
||||
pub fn slider(theme: &Theme, status: slider::Status) -> slider::Appearance {
|
||||
let palette = theme.extended_palette();
|
||||
|
||||
let handle = slider::Handle {
|
||||
shape: slider::HandleShape::Rectangle {
|
||||
width: 8,
|
||||
border_radius: 4.0.into(),
|
||||
},
|
||||
color: Color::WHITE,
|
||||
border_color: Color::WHITE,
|
||||
border_width: 1.0,
|
||||
};
|
||||
|
||||
slider::Appearance {
|
||||
rail: slider::Rail {
|
||||
colors: (palette.primary.base.color, palette.secondary.base.color),
|
||||
width: 4.0,
|
||||
border_radius: 2.0.into(),
|
||||
},
|
||||
handle: slider::Handle {
|
||||
color: match status {
|
||||
slider::Status::Active => palette.background.base.color,
|
||||
slider::Status::Hovered => palette.primary.weak.color,
|
||||
slider::Status::Dragging => palette.primary.base.color,
|
||||
},
|
||||
border_color: palette.primary.base.color,
|
||||
..handle
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
/// The style of a menu.
|
||||
#[derive(Clone, Default)]
|
||||
pub enum Menu {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue