adding some tweaks to making song_editor working better

This commit is contained in:
Chris Cochrun 2023-10-09 15:11:55 -05:00
parent 96d5bdac73
commit f34e8cbd7e
4 changed files with 71 additions and 67 deletions

View file

@ -754,6 +754,7 @@ QStringList SongProxyModel::getLyricList(const int &row) {
QVariantMap SongProxyModel::getSong(const int &row) {
QVariantMap song = m_songModel->getItem(mapToSource(index(row, 0)).row());
qDebug() << song;
return song;
}

View file

@ -302,7 +302,7 @@ Item {
onEditingFinished: updateVerseOrder(text);
background: Presenter.TextBackground {
control: songVorderField
errorCondition: song.vorder.length === 0
errorCondition: song.verseOrderError
}
}
@ -473,7 +473,19 @@ Item {
function newSong(index) {
clearSlides();
song = songProxyModel.getSong(index);
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;
changeSlideHAlignment("Center");
changeSlideVAlignment("Center");
@ -485,22 +497,26 @@ Item {
}
function changeSong(index) {
if (songProxyModel.songModel.count === index)
newSong(index)
else {
clearSlides();
const updatedSong = songProxyModel.getSong(index);
console.log(updatedSong.verseOrder + " " + updatedSong.title);
console.log(updatedSong.vorder + " " + updatedSong.title + " " + updatedSong.audio);
songEditorModel.title = updatedSong.title;
songEditorModel.lyrics = updatedSong.lyrics;
songEditorModel.author = updatedSong.author;
songEditorModel.ccli = updatedSong.ccli;
songEditorModel.audio = updatedSong.audio;
songEditorModel.verseOrder = updatedSong.verseOrder;
songEditorModel.verseOrder = updatedSong.vorder;
songEditorModel.background = updatedSong.background;
songEditorModel.backgroundType = updatedSong.backgroundType;
songEditorModel.horizontalTextAlignment = updatedSong.horizontalTextAlignment;
songEditorModel.verticalTextAlignment = updatedSong.verticalTextAlignment;
songEditorModel.font = updatedSong.font;
songEditorModel.fontSize = updatedSong.fontSize;
songIndex = song.id;
songEditorModel.checkVerseOrder();
songIndex = updatedSong.id;
changeSlideHAlignment(song.horizontalTextAlignment);
changeSlideVAlignment(song.verticalTextAlignment);
@ -512,6 +528,7 @@ Item {
footerSecondText = song.title;
songList.loadVideo();
}
}
function updateLyrics(lyrics) {
songProxyModel.songModel.updateLyrics(songIndex, lyrics);
@ -537,6 +554,8 @@ Item {
}
function updateVerseOrder(vorder) {
songEditorModel.verseOrder = vorder;
songEditorModel.checkVerseOrder();
songProxyModel.songModel.updateVerseOrder(songIndex, vorder)
}

View file

@ -1,5 +1,6 @@
#[cxx_qt::bridge]
pub mod song_editor {
use tracing::{debug, debug_span, error, info, instrument};
unsafe extern "C++" {
include!("cxx-qt-lib/qmap.h");
@ -31,13 +32,13 @@ pub mod song_editor {
#[qproperty]
ccli: QString,
#[qproperty]
audio: QUrl,
audio: QString,
#[qproperty]
verse_order: QString,
#[qproperty]
verse_order_format: bool,
verse_order_error: bool,
#[qproperty]
background: QUrl,
background: QString,
#[qproperty]
background_type: QString,
#[qproperty]
@ -59,10 +60,10 @@ pub mod song_editor {
lyrics: QString::default(),
author: QString::default(),
ccli: QString::default(),
audio: QUrl::default(),
audio: QString::default(),
verse_order: QString::default(),
verse_order_format: true,
background: QUrl::default(),
verse_order_error: false,
background: QString::default(),
background_type: QString::default(),
horizontal_text_alignment: QString::default(),
vertical_text_alignment: QString::default(),
@ -80,38 +81,21 @@ pub mod song_editor {
// pinned_model.update_ccli(0, QString::from("idk"));
todo!()
}
// #[qinvokable]
// fn set_song(
// mut self: Pin<&mut Self>,
// title: QString,
// lyrics: QString,
// author: QString,
// ccli: QString,
// audio: QUrl,
// verse_order: QString,
// background: QUrl,
// background_type: QString,
// horizontal_text_alignment: QString,
// vertical_text_alignment: QString,
// font: QString,
// font_size: i32,
// ) -> bool {
// self.as_mut().set_title(title);
// self.as_mut().set_lyrics(lyrics);
// self.as_mut().set_author(author);
// self.as_mut().set_ccli(ccli);
// self.as_mut().set_audio(audio);
// self.as_mut().set_verse_order(verse_order);
// self.as_mut().set_background(background);
// self.as_mut().set_background_type(background_type);
// self.as_mut().set_horizontal_text_alignment(
// horizontal_text_alignment,
// );
// self.as_mut()
// .set_vertical_text_alignment(vertical_text_alignment);
// self.as_mut().set_font(font);
// self.as_mut().set_font_size(font_size);
// true
// }
#[qinvokable]
pub fn check_verse_order(mut self: Pin<&mut Self>) {
let vo = self.verse_order().to_string();
let split = vo.split(" ");
debug!(verse_order = ?vo, iterator = ?split);
for s in split {
if s.contains(",") {
self.as_mut().set_verse_order_error(true);
} else if s.is_empty() {
self.as_mut().set_verse_order_error(true);
} else {
self.as_mut().set_verse_order_error(false);
}
}
}
}
}

View file

@ -793,7 +793,7 @@ pub mod song_model {
let role_names_iter = role_names.iter();
if let Some(song) = self.rust().songs.get(index as usize)
{
debug!(song);
debug!(?song);
for i in role_names_iter {
qvariantmap.insert(
QString::from(&i.1.to_string()),