Feat: better user feedback on patterns page
All checks were successful
Deploy Website / deploy (push) Has been skipped
All checks were successful
Deploy Website / deploy (push) Has been skipped
This commit is contained in:
@@ -130,6 +130,34 @@ impl PlaybackState {
|
||||
self.soloed.contains(&(bank, pattern))
|
||||
}
|
||||
|
||||
pub fn has_armed(&self) -> bool {
|
||||
!self.staged_changes.is_empty()
|
||||
|| !self.staged_mute_changes.is_empty()
|
||||
|| !self.staged_prop_changes.is_empty()
|
||||
}
|
||||
|
||||
pub fn armed_summary(&self) -> Option<String> {
|
||||
let play = self.staged_changes.iter().filter(|c| matches!(c.change, PatternChange::Start { .. })).count();
|
||||
let stop = self.staged_changes.iter().filter(|c| matches!(c.change, PatternChange::Stop { .. })).count();
|
||||
let mute = self.staged_mute_changes.iter().filter(|c| matches!(c, StagedMuteChange::ToggleMute { .. })).count();
|
||||
let solo = self.staged_mute_changes.iter().filter(|c| matches!(c, StagedMuteChange::ToggleSolo { .. })).count();
|
||||
let props = self.staged_prop_changes.len();
|
||||
|
||||
let parts: Vec<String> = [
|
||||
(play, "play"),
|
||||
(stop, "stop"),
|
||||
(mute, "mute"),
|
||||
(solo, "solo"),
|
||||
(props, "props"),
|
||||
]
|
||||
.into_iter()
|
||||
.filter(|(n, _)| *n > 0)
|
||||
.map(|(n, label)| format!("{n} {label}"))
|
||||
.collect();
|
||||
|
||||
if parts.is_empty() { None } else { Some(parts.join(", ")) }
|
||||
}
|
||||
|
||||
pub fn is_effectively_muted(&self, bank: usize, pattern: usize) -> bool {
|
||||
if self.muted.contains(&(bank, pattern)) {
|
||||
return true;
|
||||
|
||||
@@ -86,6 +86,7 @@ pub struct UiState {
|
||||
pub demo_index: usize,
|
||||
pub nav_indicator_until: Option<Instant>,
|
||||
pub nav_fx: RefCell<Option<Effect>>,
|
||||
pub pulse_phase: f32,
|
||||
pub last_click: Option<(Instant, u16, u16)>,
|
||||
}
|
||||
|
||||
@@ -142,6 +143,7 @@ impl Default for UiState {
|
||||
demo_index: 0,
|
||||
nav_indicator_until: None,
|
||||
nav_fx: RefCell::new(None),
|
||||
pulse_phase: 0.0,
|
||||
last_click: None,
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user