songs are almost editable
This commit is contained in:
parent
452cb33adf
commit
7137cf715d
|
@ -446,7 +446,6 @@ impl Song {
|
||||||
|
|
||||||
for verse in verse_order.unwrap_or_default() {
|
for verse in verse_order.unwrap_or_default() {
|
||||||
let mut verse_name = "";
|
let mut verse_name = "";
|
||||||
debug!(verse = verse);
|
|
||||||
for word in VERSE_KEYWORDS {
|
for word in VERSE_KEYWORDS {
|
||||||
let end_verse =
|
let end_verse =
|
||||||
verse.get(1..2).unwrap_or_default();
|
verse.get(1..2).unwrap_or_default();
|
||||||
|
@ -476,9 +475,9 @@ impl Song {
|
||||||
error!("NOT WORKING!");
|
error!("NOT WORKING!");
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
for lyric in lyric_list.iter() {
|
// for lyric in lyric_list.iter() {
|
||||||
debug!(lyric = ?lyric)
|
// debug!(lyric = ?lyric)
|
||||||
}
|
// }
|
||||||
Ok(lyric_list)
|
Ok(lyric_list)
|
||||||
} else {
|
} else {
|
||||||
Err(miette!("There are no lyrics"))
|
Err(miette!("There are no lyrics"))
|
||||||
|
|
|
@ -40,6 +40,7 @@ pub struct SongEditor {
|
||||||
background: Option<Background>,
|
background: Option<Background>,
|
||||||
video: Option<Video>,
|
video: Option<Video>,
|
||||||
current_font: Font,
|
current_font: Font,
|
||||||
|
ccli: String,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Clone)]
|
#[derive(Debug, Clone)]
|
||||||
|
@ -84,12 +85,44 @@ impl SongEditor {
|
||||||
background: None,
|
background: None,
|
||||||
video: None,
|
video: None,
|
||||||
current_font: cosmic::font::default(),
|
current_font: cosmic::font::default(),
|
||||||
|
ccli: "8".to_owned(),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
pub fn update(&mut self, message: Message) -> Task<Message> {
|
pub fn update(&mut self, message: Message) -> Task<Message> {
|
||||||
match message {
|
match message {
|
||||||
Message::ChangeSong(song) => {
|
Message::ChangeSong(song) => {
|
||||||
self.song = Some(song);
|
self.song = Some(song.clone());
|
||||||
|
self.title = song.title;
|
||||||
|
if let Some(font) = song.font {
|
||||||
|
self.font = font
|
||||||
|
};
|
||||||
|
if let Some(font_size) = song.font_size {
|
||||||
|
self.font_size = font_size as usize
|
||||||
|
};
|
||||||
|
if let Some(verse_order) = song.verse_order {
|
||||||
|
self.verse_order = verse_order
|
||||||
|
.into_iter()
|
||||||
|
.map(|mut s| {
|
||||||
|
s.push_str(" ");
|
||||||
|
s
|
||||||
|
})
|
||||||
|
.collect();
|
||||||
|
}
|
||||||
|
if let Some(author) = song.author {
|
||||||
|
self.author = author
|
||||||
|
};
|
||||||
|
if let Some(audio) = song.audio {
|
||||||
|
self.audio = audio
|
||||||
|
};
|
||||||
|
if let Some(ccli) = song.ccli {
|
||||||
|
self.ccli = ccli
|
||||||
|
};
|
||||||
|
if let Some(lyrics) = song.lyrics {
|
||||||
|
self.lyrics =
|
||||||
|
text_editor::Content::with_text(&lyrics)
|
||||||
|
};
|
||||||
|
self.background = song.background;
|
||||||
|
|
||||||
Task::none()
|
Task::none()
|
||||||
}
|
}
|
||||||
Message::UpdateSong(song) => {
|
Message::UpdateSong(song) => {
|
||||||
|
@ -124,16 +157,39 @@ impl SongEditor {
|
||||||
}
|
}
|
||||||
Message::ChangeTitle(title) => {
|
Message::ChangeTitle(title) => {
|
||||||
debug!(title);
|
debug!(title);
|
||||||
self.title = title;
|
self.title = title.clone();
|
||||||
Task::none()
|
if let Some(mut song) = self.song.clone() {
|
||||||
|
song.title = title;
|
||||||
|
self.update(Message::UpdateSong(song))
|
||||||
|
} else {
|
||||||
|
Task::none()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Message::ChangeVerseOrder(verse_order) => {
|
Message::ChangeVerseOrder(verse_order) => {
|
||||||
self.verse_order = verse_order;
|
self.verse_order = verse_order.clone();
|
||||||
Task::none()
|
if let Some(mut song) = self.song.clone() {
|
||||||
|
let verse_order = verse_order
|
||||||
|
.split(" ")
|
||||||
|
.into_iter()
|
||||||
|
.map(|s| s.to_owned())
|
||||||
|
.collect();
|
||||||
|
song.verse_order = Some(verse_order);
|
||||||
|
self.update(Message::UpdateSong(song))
|
||||||
|
} else {
|
||||||
|
Task::none()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Message::ChangeLyrics(action) => {
|
Message::ChangeLyrics(action) => {
|
||||||
self.lyrics.perform(action);
|
self.lyrics.perform(action);
|
||||||
Task::none()
|
|
||||||
|
let lyrics = self.lyrics.text();
|
||||||
|
|
||||||
|
if let Some(mut song) = self.song.clone() {
|
||||||
|
song.lyrics = Some(lyrics);
|
||||||
|
self.update(Message::UpdateSong(song))
|
||||||
|
} else {
|
||||||
|
Task::none()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Message::Edit(edit) => {
|
Message::Edit(edit) => {
|
||||||
debug!(edit);
|
debug!(edit);
|
||||||
|
@ -143,8 +199,13 @@ impl SongEditor {
|
||||||
Message::None => Task::none(),
|
Message::None => Task::none(),
|
||||||
Message::ChangeAuthor(author) => {
|
Message::ChangeAuthor(author) => {
|
||||||
debug!(author);
|
debug!(author);
|
||||||
self.author = author;
|
self.author = author.clone();
|
||||||
Task::none()
|
if let Some(mut song) = self.song.clone() {
|
||||||
|
song.author = Some(author);
|
||||||
|
self.update(Message::UpdateSong(song))
|
||||||
|
} else {
|
||||||
|
Task::none()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -155,7 +216,13 @@ impl SongEditor {
|
||||||
|
|
||||||
let column = column::with_children(vec![
|
let column = column::with_children(vec![
|
||||||
self.toolbar(),
|
self.toolbar(),
|
||||||
row![self.left_column(), slide_preview].into(),
|
row![
|
||||||
|
container(self.left_column())
|
||||||
|
.center_x(Length::FillPortion(2)),
|
||||||
|
container(slide_preview)
|
||||||
|
.center_x(Length::FillPortion(3))
|
||||||
|
]
|
||||||
|
.into(),
|
||||||
])
|
])
|
||||||
.spacing(theme::active().cosmic().space_l());
|
.spacing(theme::active().cosmic().space_l());
|
||||||
column.into()
|
column.into()
|
||||||
|
|
Loading…
Reference in a new issue