summaryrefslogtreecommitdiffstats
path: root/style/src/theme.rs
diff options
context:
space:
mode:
authorLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2022-06-01 02:40:42 +0200
committerLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2022-06-01 02:40:42 +0200
commit77dc9dc2cb4ac092ce88c2700253fbfc54292e2b (patch)
treeff0754b29e7703de1ab48b4867e0ab058990d55b /style/src/theme.rs
parente4ca779e436561bf48e5d34cdf554292fd4761e4 (diff)
downloadiced-77dc9dc2cb4ac092ce88c2700253fbfc54292e2b.tar.gz
iced-77dc9dc2cb4ac092ce88c2700253fbfc54292e2b.tar.bz2
iced-77dc9dc2cb4ac092ce88c2700253fbfc54292e2b.zip
Implement theme styling for `ProgressBar`
Diffstat (limited to '')
-rw-r--r--style/src/theme.rs39
1 files changed, 39 insertions, 0 deletions
diff --git a/style/src/theme.rs b/style/src/theme.rs
index 71a25dbe..ca780457 100644
--- a/style/src/theme.rs
+++ b/style/src/theme.rs
@@ -5,6 +5,7 @@ pub use self::palette::Palette;
use crate::application;
use crate::button;
use crate::pane_grid;
+use crate::progress_bar;
use crate::radio;
use crate::rule;
use crate::slider;
@@ -282,6 +283,44 @@ impl pane_grid::StyleSheet for Theme {
}
/*
+ * Progress Bar
+ */
+#[derive(Clone, Copy)]
+pub enum ProgressBar {
+ Primary,
+ Success,
+ Danger,
+ Custom(fn(&Theme) -> progress_bar::Appearance),
+}
+
+impl Default for ProgressBar {
+ fn default() -> Self {
+ Self::Primary
+ }
+}
+
+impl progress_bar::StyleSheet for Theme {
+ type Style = ProgressBar;
+
+ fn appearance(&self, style: Self::Style) -> progress_bar::Appearance {
+ let palette = self.extended_palette();
+
+ let from_palette = |bar: Color| progress_bar::Appearance {
+ background: palette.background.weak.color.into(),
+ bar: bar.into(),
+ border_radius: 2.0,
+ };
+
+ match style {
+ ProgressBar::Primary => from_palette(palette.primary.base.color),
+ ProgressBar::Success => from_palette(palette.success.base.color),
+ ProgressBar::Danger => from_palette(palette.danger.base.color),
+ ProgressBar::Custom(f) => f(self),
+ }
+ }
+}
+
+/*
* Rule
*/
#[derive(Clone, Copy)]