danceinterpreter_rs/ui/config_window/
item_row.rs1use crate::Message;
2use iced::widget::{Container, Row, Space, button, container, row};
3use iced::{Alignment, Color, Length, Theme};
4
5pub fn build_item_row_container_styled(
6 song_row: Row<Message>,
7 highlight: bool,
8 idx: usize,
9 accent_color: Option<Color>,
10) -> Container<Message> {
11 let accent = accent_color;
12 container(
13 row![
14 container(Space::new().width(4).height(40.0))
15 .height(Length::Fixed(40.0))
16 .style(move |_t: &Theme| {
17 container::Style::default().background(accent.unwrap_or(Color::TRANSPARENT))
18 }),
19 song_row,
20 ]
21 .align_y(Alignment::Center)
22 .spacing(6),
23 )
24 .style(move |t| {
25 let palette = t.extended_palette();
26 let color = if idx.is_multiple_of(2) {
27 palette.background.weakest.color
28 } else {
29 palette.background.weaker.color
30 };
31
32 let mut style = container::Style::default().background(color);
33
34 if highlight {
35 let accent = palette.primary.base.color;
36 style = style
37 .background(palette.primary.weak.color)
38 .border(iced::Border {
39 color: accent,
40 width: 2.0,
41 radius: 4.0.into(),
42 });
43 }
44
45 style
46 })
47 .padding([4, 6])
48 .width(Length::Fill)
49}
50
51pub fn empty_folder_button_style(theme: &Theme, status: button::Status) -> button::Style {
52 let palette = theme.extended_palette();
53 let mut style = button::text(theme, status);
54 style.text_color = palette.secondary.strong.color;
55 style.background = Some(palette.background.weakest.color.into());
56 style.border.radius = 12.0.into();
57 style
58}