add a blank VerseName
This commit is contained in:
parent
214796a967
commit
28f18654d4
2 changed files with 38 additions and 10 deletions
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue