trying to tweak song editor to work

This commit is contained in:
Chris Cochrun 2023-12-01 09:54:16 -06:00
parent 2fcfadb7f4
commit 3f9a1714c4
2 changed files with 66 additions and 76 deletions

View file

@ -475,76 +475,53 @@ Item {
repeat: true repeat: true
running: false running: false
onTriggered: { onTriggered: {
if (lyricsEditor.text === song.lyrics) if (lyricsEditor.text === songEditorModel.lyrics)
return; return;
updateLyrics(lyricsEditor.text); else
songEditorModel.lyrics = lyricsEditor.text;
/* updateLyrics(lyricsEditor.text); */
} }
} }
function newSong(index) {
clearSlides();
let thisSong = songProxyModel.getSong(index);
songEditorModel.title = thisSong.title;
songEditorModel.lyrics = thisSong.lyrics;
songEditorModel.author = thisSong.author;
songEditorModel.ccli = thisSong.ccli;
songEditorModel.audio = thisSong.audio;
songEditorModel.verseOrder = thisSong.vorder;
songEditorModel.background = thisSong.background;
songEditorModel.backgroundType = thisSong.backgroundType;
songEditorModel.horizontalTextAlignment = thisSong.horizontalTextAlignment;
songEditorModel.verticalTextAlignment = thisSong.verticalTextAlignment;
songEditorModel.font = thisSong.font;
songEditorModel.fontSize = thisSong.fontSize;
songEditorModel.checkFiles();
songID = thisSong.id;
updateHorizontalTextAlignment("Center");
changeSlideHAlignment("Center");
updateVerticalTextAlignment("Center");
changeSlideVAlignment("Center");
updateFont("Noto Sans");
changeSlideFont("Noto Sans", true);
updateFontSize(50);
changeSlideFontSize(50, true);
updateLyrics("Lyrics");
songList.loadVideo();
console.log("New song with ID: " + song.id);
}
function changeSong(index) { function changeSong(index) {
console.log("Preparing to change song: " + index + 1 + " out of " + songProxyModel.songModel.count); console.log("Preparing to change song: " + index + 1 + " out of " + songProxyModel.songModel.count);
if (songProxyModel.songModel.count - 1 === index) clearSlides();
newSong(index) const updatedSong = songProxyModel.getSong(index);
else { console.log(updatedSong.vorder + " " + updatedSong.title + " " + updatedSong.audio);
clearSlides(); songEditorModel.title = updatedSong.title;
const updatedSong = songProxyModel.getSong(index); songEditorModel.lyrics = updatedSong.lyrics;
console.log(updatedSong.vorder + " " + updatedSong.title + " " + updatedSong.audio); songEditorModel.author = updatedSong.author;
songEditorModel.title = updatedSong.title; songEditorModel.ccli = updatedSong.ccli;
songEditorModel.lyrics = updatedSong.lyrics; songEditorModel.audio = updatedSong.audio;
songEditorModel.author = updatedSong.author; songEditorModel.verseOrder = updatedSong.vorder;
songEditorModel.ccli = updatedSong.ccli; songEditorModel.background = updatedSong.background;
songEditorModel.audio = updatedSong.audio; songEditorModel.backgroundType = updatedSong.backgroundType;
songEditorModel.verseOrder = updatedSong.vorder; songEditorModel.horizontalTextAlignment = updatedSong.horizontalTextAlignment;
songEditorModel.background = updatedSong.background; songEditorModel.verticalTextAlignment = updatedSong.verticalTextAlignment;
songEditorModel.backgroundType = updatedSong.backgroundType; songEditorModel.font = updatedSong.font;
songEditorModel.horizontalTextAlignment = updatedSong.horizontalTextAlignment; songEditorModel.fontSize = updatedSong.fontSize;
songEditorModel.verticalTextAlignment = updatedSong.verticalTextAlignment; songEditorModel.checkVerseOrder();
songEditorModel.font = updatedSong.font; songEditorModel.checkFiles();
songEditorModel.fontSize = updatedSong.fontSize; songID = updatedSong.id;
songEditorModel.checkVerseOrder();
songEditorModel.checkFiles();
songID = updatedSong.id;
changeSlideHAlignment(song.horizontalTextAlignment); changeSlideHAlignment(song.horizontalTextAlignment);
changeSlideVAlignment(song.verticalTextAlignment); changeSlideVAlignment(song.verticalTextAlignment);
changeSlideFont(song.font, true); changeSlideFont(song.font, true);
changeSlideFontSize(song.fontSize, true) changeSlideFontSize(song.fontSize, true)
changeSlideText(songProxyModel.modelIndex(index).row); changeSlideText(songProxyModel.modelIndex(index).row);
console.log("Changing to song: " + song.title + " with ID: " + songID); console.log("Changing to song: " + song.title + " with ID: " + songID);
footerFirstText = "Song: "; footerFirstText = "Song: ";
footerSecondText = song.title; footerSecondText = song.title;
songList.loadVideo(); songList.loadVideo();
}
Connections {
target: songEditorModel
function onLyricsChanged() {
showPassiveNotification("Lyrics changed");
songProxyModel.songModel.updateLyrics(songID, lyricsEditor.text);
clearSlides();
changeSlideText(songID);
} }
} }

View file

@ -248,7 +248,7 @@ use self::song_model::{
SongRoles, SongRoles,
}; };
#[derive(Default, Clone, Debug)] #[derive(Clone, Debug)]
pub struct Song { pub struct Song {
id: i32, id: i32,
title: String, title: String,
@ -265,6 +265,18 @@ pub struct Song {
font_size: i32, font_size: i32,
} }
impl Default for Song {
fn default() -> Self {
Self {
horizontal_text_alignment: String::from("Center"),
vertical_text_alignment: String::from("Center"),
font: String::from("Quicksand Bold"),
font_size: 50,
..Default::default()
}
}
}
#[derive(Default, Debug)] #[derive(Default, Debug)]
pub struct SongModelRust { pub struct SongModelRust {
count: i32, count: i32,
@ -451,18 +463,19 @@ impl song_model::SongModel {
) -> (usize, QModelIndex, QVector_i32) { ) -> (usize, QModelIndex, QVector_i32) {
let mut vector_roles = QVector_i32::default(); let mut vector_roles = QVector_i32::default();
vector_roles.append(self.as_ref().get_role(role)); vector_roles.append(self.as_ref().get_role(role));
let index = self if let Some(index) =
.as_ref() self.as_ref().songs.iter().position(|x| x.id == song_id)
.songs {
.iter() let model_index = self.as_ref().index(
.position(|x| x.id == song_id) index as i32,
.unwrap(); 0,
let model_index = self.as_ref().index( &QModelIndex::default(),
index as i32, );
0, (index, model_index, vector_roles)
&QModelIndex::default(), } else {
); error!(song_id, "This song appears to be missing");
(index, model_index, vector_roles) (0, QModelIndex::default(), vector_roles)
}
} }
pub fn update_title( pub fn update_title(