|
1 | | -use super::{icon_button, labeled_slider}; |
| 1 | +use super::{labeled_slider, stage_header}; |
2 | 2 | use crate::gui::amp::{Message, PowerAmpConfig}; |
3 | 3 | use crate::sim::stages::poweramp::PowerAmpType; |
4 | 4 | use iced::widget::{column, container, pick_list, row, text}; |
5 | 5 | use iced::{Element, Length}; |
6 | 6 |
|
| 7 | +const HEADER_TEXT: &str = "Power Amp"; |
7 | 8 | const POWER_AMP_TYPES: [PowerAmpType; 3] = [ |
8 | 9 | PowerAmpType::ClassA, |
9 | 10 | PowerAmpType::ClassAB, |
10 | 11 | PowerAmpType::ClassB, |
11 | 12 | ]; |
12 | 13 |
|
13 | 14 | pub fn poweramp_widget(idx: usize, cfg: &PowerAmpConfig, total_stages: usize) -> Element<Message> { |
14 | | - let mut header = row![text(format!("Power Amp {}", idx + 1))].spacing(5); |
15 | | - |
16 | | - if idx > 0 { |
17 | | - header = header.push(icon_button( |
18 | | - "↑", |
19 | | - Some(Message::MoveStageUp(idx)), |
20 | | - iced::widget::button::primary, |
21 | | - )); |
22 | | - } else { |
23 | | - header = header.push(icon_button("↑", None, iced::widget::button::secondary)); |
24 | | - } |
25 | | - |
26 | | - if idx < total_stages.saturating_sub(1) { |
27 | | - header = header.push(icon_button( |
28 | | - "↓", |
29 | | - Some(Message::MoveStageDown(idx)), |
30 | | - iced::widget::button::primary, |
31 | | - )); |
32 | | - } else { |
33 | | - header = header.push(icon_button("↓", None, iced::widget::button::secondary)); |
34 | | - } |
35 | | - |
36 | | - header = header.push(icon_button( |
37 | | - "×", |
38 | | - Some(Message::RemoveStage(idx)), |
39 | | - iced::widget::button::danger, |
40 | | - )); |
| 15 | + let header = stage_header(HEADER_TEXT, idx, total_stages); |
41 | 16 |
|
42 | 17 | let type_picker = row![ |
43 | 18 | text("Type:").width(Length::FillPortion(3)), |
@@ -70,16 +45,12 @@ pub fn poweramp_widget(idx: usize, cfg: &PowerAmpConfig, total_stages: usize) -> |
70 | 45 | ] |
71 | 46 | .spacing(5); |
72 | 47 |
|
73 | | - container( |
74 | | - column![header.align_y(iced::Alignment::Center), body] |
75 | | - .spacing(5) |
76 | | - .padding(10), |
77 | | - ) |
78 | | - .width(Length::Fill) |
79 | | - .style(|theme: &iced::Theme| { |
80 | | - container::Style::default() |
81 | | - .background(theme.palette().background) |
82 | | - .border(iced::Border::default().rounded(5)) |
83 | | - }) |
84 | | - .into() |
| 48 | + container(column![header, body].spacing(5).padding(10)) |
| 49 | + .width(Length::Fill) |
| 50 | + .style(|theme: &iced::Theme| { |
| 51 | + container::Style::default() |
| 52 | + .background(theme.palette().background) |
| 53 | + .border(iced::Border::default().rounded(5)) |
| 54 | + }) |
| 55 | + .into() |
85 | 56 | } |
0 commit comments