Skip to content

Commit ecb2696

Browse files
feat(ui): toast now overlays visuals
Signed-off-by: Maika Namuo <httpworldview@gmail.com>
1 parent 970684c commit ecb2696

2 files changed

Lines changed: 36 additions & 22 deletions

File tree

‎src/ui/app.rs‎

Lines changed: 18 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ use crate::visuals::registry::{VisualManager, VisualManagerHandle};
2323
use async_channel::Receiver as AsyncReceiver;
2424
use iced::alignment::{Horizontal, Vertical};
2525
use iced::event::{self, Event};
26-
use iced::widget::{column, container, mouse_area, row, stack, text};
26+
use iced::widget::{container, mouse_area, row, stack, text};
2727
use iced::{
2828
Element, Length, Settings as IcedSettings, Size, Subscription, Task, daemon as iced_daemon,
2929
window,
@@ -272,23 +272,24 @@ impl UiApp {
272272
is_active(self.exit_warning_until).then_some("q again to exit"),
273273
];
274274

275-
let mut layer = column![fill!(visuals_view)]
276-
.width(Length::Fill)
277-
.height(Length::Fill);
278-
if toast_msgs.iter().any(Option::is_some) {
279-
layer = layer.push(
280-
container(
281-
row(toast_msgs
282-
.into_iter()
283-
.flatten()
284-
.map(|m| container(text(m).size(11)).padding([2, 6]).into()))
285-
.spacing(12),
286-
)
287-
.width(Length::Fill)
288-
.align_x(Horizontal::Center),
289-
);
275+
let base: Element<'_, Message> = fill!(visuals_view).into();
276+
if !toast_msgs.iter().any(Option::is_some) {
277+
return base;
290278
}
291-
layer.into()
279+
let toast = container(
280+
row(toast_msgs
281+
.into_iter()
282+
.flatten()
283+
.map(|m| container(text(m).size(11)).padding([2, 6]).into()))
284+
.spacing(12),
285+
)
286+
.padding([6, 10])
287+
.style(theme::weak_container);
288+
let overlay = fill!(toast)
289+
.padding(8)
290+
.align_x(Horizontal::Center)
291+
.align_y(Vertical::Bottom);
292+
stack![base, overlay].into()
292293
}
293294

294295
fn wrap_bar_resize<'a>(

‎src/ui/settings/spectrum.rs‎

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,11 @@ crate::macros::choice_enum!(no_default all pub(in crate::ui) enum AvgMode {
2929
PeakHold => "Peak hold",
3030
});
3131

32+
crate::macros::choice_enum!(no_default all pub(in crate::ui) enum FrequencyDirection {
33+
LowToHigh => "Low -> High",
34+
HighToLow => "High -> Low",
35+
});
36+
3237
struct AveragingControls {
3338
mode: AvgMode,
3439
factor: f32,
@@ -48,7 +53,10 @@ settings_messages!(pane, value {
4853
Source(Channel) => set_if_changed(&mut pane.settings.source, value);
4954
SecondarySource(Channel) => set_if_changed(&mut pane.settings.secondary_source, value);
5055
FrequencyScale(FrequencyScale) => set_if_changed(&mut pane.settings.frequency_scale, value);
51-
ReverseFrequency(bool) => set_if_changed(&mut pane.settings.reverse_frequency, value);
56+
FrequencyDirection(FrequencyDirection) => set_if_changed(
57+
&mut pane.settings.reverse_frequency,
58+
value == FrequencyDirection::HighToLow,
59+
);
5260
DisplayMode(SpectrumDisplayMode) => set_if_changed(&mut pane.settings.display_mode, value);
5361
WeightingMode(SpectrumWeightingMode) => set_if_changed(&mut pane.settings.weighting_mode, value);
5462
SecondaryWeightingMode(SpectrumWeightingMode) => set_if_changed(&mut pane.settings.secondary_weighting_mode, value);
@@ -67,10 +75,10 @@ impl Pane {
6775
pub(super) fn view(&self) -> Element<'_, Message> {
6876
let s = &self.settings;
6977
let hop_divisor = get_closest_hop_divisor(s.fft_size, s.hop_size);
70-
let dir = if s.reverse_frequency {
71-
"High <- Low"
78+
let direction = if s.reverse_frequency {
79+
FrequencyDirection::HighToLow
7280
} else {
73-
"Low -> High"
81+
FrequencyDirection::LowToHigh
7482
};
7583

7684
let sources = split(
@@ -109,7 +117,12 @@ impl Pane {
109117
pick("Display", SpectrumDisplayMode::ALL, s.display_mode, Message::DisplayMode);
110118
split(
111119
controls!(8.0;
112-
toggle(dir, s.reverse_frequency, Message::ReverseFrequency);
120+
pick(
121+
"Direction",
122+
FrequencyDirection::ALL,
123+
direction,
124+
Message::FrequencyDirection,
125+
);
113126
toggle("Frequency grid", s.show_grid, Message::ShowGrid);
114127
),
115128
controls!(8.0;

0 commit comments

Comments
 (0)