remove dependency on iced_aw (segmented button)
iced_aw is dropping the segmented_button in Beta branch, suggesting to use iced button
This commit is contained in:
parent
61c02ceea6
commit
83ffb682d6
|
@ -10,7 +10,6 @@ tracing = ["dep:lttng-ust"]
|
|||
#iced = "0.4.2"
|
||||
#iced_native = "0.5.1"
|
||||
iced = { path = "../iced", features = ["advanced"] }
|
||||
iced_aw = { path = "../iced_aw", default-features = false, features = ["segmented_button", "tab_bar", "icons"] }
|
||||
chrono = { version = "0.4", features = ["unstable-locales"] }
|
||||
lttng-ust = { version = "0.1.0", optional = true }
|
||||
icalendar = "0.15.4"
|
||||
|
|
|
@ -6,20 +6,7 @@ use chrono::{
|
|||
NaiveDate,
|
||||
Locale,
|
||||
};
|
||||
use iced::{
|
||||
alignment,
|
||||
Alignment,
|
||||
Element,
|
||||
Length,
|
||||
widget::{
|
||||
button,
|
||||
row,
|
||||
Row,
|
||||
Button,
|
||||
Text, text,
|
||||
},
|
||||
};
|
||||
use iced_aw::widgets::segmented_button::SegmentedButton;
|
||||
use iced::{Alignment, Background, Border, Element, Length, Theme, alignment, theme::palette, widget::{Button, Row, Text, button::{Status, Style, secondary}, row, text}};
|
||||
|
||||
//#[derive(Default)]
|
||||
pub struct Controls {
|
||||
|
@ -48,13 +35,13 @@ impl Controls {
|
|||
.padding(5)
|
||||
.spacing(10)
|
||||
.push(row![
|
||||
SegmentedButton::new(text("Week"), ViewMode::Week, self.mode, Message::ViewModeSelected),
|
||||
SegmentedButton::new(text("Month"), ViewMode::Month, self.mode, Message::ViewModeSelected),
|
||||
SegmentedButton::new(text("Year"), ViewMode::Year, self.mode, Message::ViewModeSelected),
|
||||
Button::new(text("Week")).on_press(Message::ViewModeSelected(ViewMode::Week)).style(self.get_mode_style(ViewMode::Week)),
|
||||
Button::new(text("Month")).on_press(Message::ViewModeSelected(ViewMode::Month)).style(self.get_mode_style(ViewMode::Month)),
|
||||
Button::new(text("Year")).on_press(Message::ViewModeSelected(ViewMode::Year)).style(self.get_mode_style(ViewMode::Year)),
|
||||
])
|
||||
.push(row![
|
||||
Button::new(Text::new("<")).on_press(self.get_msg_prev()).style(button::secondary),
|
||||
Button::new(Text::new(">")).on_press(self.get_msg_next()).style(button::secondary),
|
||||
Button::new(Text::new("<")).on_press(self.get_msg_prev()).style(secondary),
|
||||
Button::new(Text::new(">")).on_press(self.get_msg_next()).style(secondary),
|
||||
].spacing(0).padding(0)
|
||||
)
|
||||
.push(
|
||||
|
@ -89,4 +76,67 @@ impl Controls {
|
|||
None => todo!(),
|
||||
}
|
||||
}
|
||||
|
||||
fn get_mode_style(&self, view_mode: ViewMode) -> impl Fn(&Theme, Status) -> Style {
|
||||
if let Some(current_view_mode) = self.mode {
|
||||
if current_view_mode == view_mode {
|
||||
mode_selected
|
||||
} else {
|
||||
mode_not_selected
|
||||
}
|
||||
} else {
|
||||
todo!()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// TODO: copied from iced button
|
||||
fn styled(pair: palette::Pair) -> Style {
|
||||
Style {
|
||||
background: Some(Background::Color(pair.color)),
|
||||
text_color: pair.text,
|
||||
border: Border::rounded(2),
|
||||
..Style::default()
|
||||
}
|
||||
}
|
||||
fn disabled(style: Style) -> Style {
|
||||
Style {
|
||||
background: style
|
||||
.background
|
||||
.map(|background| background.scale_alpha(0.5)),
|
||||
text_color: style.text_color.scale_alpha(0.5),
|
||||
..style
|
||||
}
|
||||
}
|
||||
|
||||
fn mode_not_selected(theme: &Theme, status: Status) -> Style {
|
||||
let palette = theme.extended_palette();
|
||||
let base = styled(palette.secondary.base);
|
||||
|
||||
match status {
|
||||
Status::Active | Status::Pressed => base,
|
||||
Status::Hovered => Style {
|
||||
background: Some(Background::Color(palette.secondary.strong.color)),
|
||||
..base
|
||||
},
|
||||
Status::Disabled => disabled(base),
|
||||
}
|
||||
}
|
||||
|
||||
fn mode_selected(theme: &Theme, status: Status) -> Style {
|
||||
let palette = theme.extended_palette();
|
||||
let base = styled(palette.secondary.base);
|
||||
|
||||
match status {
|
||||
Status::Active | Status::Pressed => Style {
|
||||
background: Some(Background::Color(palette.secondary.strong.color)),
|
||||
..base
|
||||
},
|
||||
Status::Hovered => Style {
|
||||
background: Some(Background::Color(palette.secondary.strong.color)),
|
||||
..base
|
||||
},
|
||||
Status::Disabled => disabled(base),
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue