From 0eef97dcfea740939fa53b0f3802ce4270ee989e Mon Sep 17 00:00:00 2001 From: Chris Cochrun Date: Wed, 17 May 2023 17:16:57 -0500 Subject: [PATCH] bug: new_song now works properly --- src/qml/presenter/Library.qml | 2 +- src/rust/song_model.rs | 73 ++++++++++++++++------------------- 2 files changed, 34 insertions(+), 41 deletions(-) diff --git a/src/qml/presenter/Library.qml b/src/qml/presenter/Library.qml index cc02108..0fa611d 100644 --- a/src/qml/presenter/Library.qml +++ b/src/qml/presenter/Library.qml @@ -44,7 +44,7 @@ Item { newItemFunction: (function() { songProxyModel.setFilterRegularExpression(""); songProxyModel.songModel.newSong(); - libraryList.currentIndex = songProxyModel.songModel.rowCount() - 1; + libraryList.currentIndex = songProxyModel.songModel.count() - 1; if (!editMode) editMode = true; editSwitch(libraryList.currentIndex, "song"); diff --git a/src/rust/song_model.rs b/src/rust/song_model.rs index 4d608c2..f37e050 100644 --- a/src/rust/song_model.rs +++ b/src/rust/song_model.rs @@ -190,56 +190,49 @@ mod song_model { } #[qinvokable] - pub fn new_song(self: Pin<&mut Self>) { + pub fn new_song(mut self: Pin<&mut Self>) -> bool { let song_id = self.rust().highest_id + 1; let song_title = String::from("title"); + let db = &mut self.as_mut().get_db(); let song = Song { id: song_id, - title: song_title, + title: song_title.clone(), ..Default::default() }; - self.add_song(song); + let result = insert_into(songs) + .values(( + id.eq(&song_id), + title.eq(&song_title), + lyrics.eq(&song.lyrics), + author.eq(&song.author), + ccli.eq(&song.ccli), + audio.eq(&song.audio), + verse_order.eq(&song.verse_order), + background.eq(&song.background), + background_type.eq(&song.background_type), + horizontal_text_alignment.eq(&song.horizontal_text_alignment), + vertical_text_alignment.eq(&song.vertical_text_alignment), + font.eq(&song.font), + font_size.eq(&song.font_size), + )) + .execute(db); + println!("{:?}", result); + + match result { + Ok(_i) => { + self.as_mut().add_song(song); + println!("{:?}", self.as_mut().songs()); + true + } + Err(_e) => { + println!("Cannot connect to database"); + false + } + } } - // fn add_item( - // mut self: Pin<&mut Self>, - // song_id: i32, - // song_title: QString, - // song_path: QString, - // ) -> bool { - // let db = &mut self.as_mut().get_db(); - // // println!("{:?}", db); - // let song = self::Song { - // id: song_id, - // title: song_title.clone(), - // path: song_path.clone(), - // }; - // println!("{:?}", song); - - // let result = insert_into(songs) - // .values(( - // id.eq(&song_id), - // title.eq(&song_title.to_string()), - // path.eq(&song_path.to_string()), - // )) - // .execute(db); - // println!("{:?}", result); - - // match result { - // Ok(_i) => { - // self.as_mut().add_song(song); - // println!("{:?}", self.as_mut().songs()); - // true - // } - // Err(_e) => { - // println!("Cannot connect to database"); - // false - // } - // } - // } - fn add_song(mut self: Pin<&mut Self>, song: self::Song) { let index = self.as_ref().songs().len() as i32; println!("{:?}", song);