add a blank VerseName

This commit is contained in:
Chris Cochrun 2026-01-29 11:08:10 -06:00
parent 214796a967
commit 28f18654d4
2 changed files with 38 additions and 10 deletions

View file

@ -55,6 +55,7 @@ pub enum VerseName {
Outro { number: usize },
Instrumental { number: usize },
Other { number: usize },
Blank,
}
impl VerseName {
@ -106,6 +107,7 @@ impl VerseName {
string.push_str(&number.to_string());
string
}
Self::Blank => "Blank".to_string(),
}
}
}
@ -862,6 +864,7 @@ impl Song {
VerseName::Other { number } => {
format!("Other {number}")
}
VerseName::Blank => "Blank".into(),
};
new_lyrics.push_str(&verse_name);

View file

@ -44,7 +44,10 @@ use crate::{
presenter::slide_view,
slide_editor::SlideEditor,
text_svg,
widgets::verse_editor::{self, VerseEditor},
widgets::{
draggable,
verse_editor::{self, VerseEditor},
},
},
};
@ -113,6 +116,7 @@ pub enum Message {
OpenStrokeColorPicker,
ChipHovered(Option<usize>),
ChipDropped((usize, Vec<u8>, String)),
ChipReorder(draggable::DragEvent),
}
impl SongEditor {
@ -434,6 +438,23 @@ impl SongEditor {
}
}
}
Message::ChipReorder(event) => match event {
draggable::DragEvent::Picked { index } => (),
draggable::DragEvent::Dropped {
index,
target_index,
drop_position,
} => {
if let Some(mut song) = self.song.clone()
&& let Some(verses) = song.verses.as_mut()
{
let verse = verses.remove(index);
verses.insert(target_index, verse);
self.update_song(song);
}
}
draggable::DragEvent::Canceled { index } => (),
},
Message::None => (),
}
Action::None
@ -606,15 +627,18 @@ impl SongEditor {
})
.on_press(Message::EditVerseOrder);
let verse_options =
container(scrollable(row(verse_chips)).direction(
Direction::Horizontal(
Scrollbar::new().spacing(space_s),
),
))
.padding(space_s)
.width(Length::Fill)
.class(theme::Container::Primary);
let verse_options = container(
scrollable(
draggable::row(verse_chips)
.on_drag(|event| Message::ChipReorder(event)),
)
.direction(Direction::Horizontal(
Scrollbar::new().spacing(space_s),
)),
)
.padding(space_s)
.width(Length::Fill)
.class(theme::Container::Primary);
let verse_order_items: Vec<Element<Message>> = if let Some(
song,
@ -1043,6 +1067,7 @@ fn verse_chip(verse: VerseName) -> Element<'static, ()> {
todo!()
}
VerseName::Other { .. } => (other_color, dark_text),
VerseName::Blank => (other_color, dark_text),
};
text(name)