From 995f9ffc03e44edf06d4c3538d6177b220d487c3 Mon Sep 17 00:00:00 2001 From: Chris Cochrun Date: Sat, 1 Apr 2023 06:52:02 -0500 Subject: [PATCH] add video_thumbnail additional The actual code to generate thumbnails is still in C++ but I've added a helper method to Rust now. It still needs connected. --- .../presenter/PreviewSlideListDelegate.qml | 4 +-- src/rust/slide_model.rs | 31 ++++++++++++------- 2 files changed, 22 insertions(+), 13 deletions(-) diff --git a/src/qml/presenter/PreviewSlideListDelegate.qml b/src/qml/presenter/PreviewSlideListDelegate.qml index 9874e52..50b49ee 100644 --- a/src/qml/presenter/PreviewSlideListDelegate.qml +++ b/src/qml/presenter/PreviewSlideListDelegate.qml @@ -36,10 +36,10 @@ Item { implicitHeight: parent.height - Kirigami.Units.smallSpacing * 2 textSize: model.fontSize itemType: model.type - imageSource: model.videoBackground != "" ? model.vidThumbnail : model.imageBackground + imageSource: model.videoBackground != "" ? model.videoThumbnail : model.imageBackground chosenFont: model.font text: model.text - pdfIndex: slideIndex + pdfIndex: model.slideId } } diff --git a/src/rust/slide_model.rs b/src/rust/slide_model.rs index f956570..e8049f8 100644 --- a/src/rust/slide_model.rs +++ b/src/rust/slide_model.rs @@ -111,19 +111,9 @@ mod slide_model { SelectedRole, LoopingRole, TextRole, + VideoThumbnailRole, } - // impl Role { - // pub fn get_role(&self) -> i32 { - // match self { - // Role::ActiveRole => 12, - // Role::SelectedRole => 13, - // Role::LoopingRole => 14, - // Role::TextRole => 1, - // } - // } - // } - impl qobject::SlideyMod { // #[qinvokable] // pub fn add(self: Pin<&mut Self>) { @@ -177,6 +167,24 @@ mod slide_model { QString::default() } + #[qinvokable] + pub fn add_video_thumbnail( + mut self: Pin<&mut Self>, + video: QString, + service_item_id: i32, + index: i32, + ) { + let model_index = &self.as_ref().index(index, 0, &QModelIndex::default()); + let mut vector_roles = QVector_i32::default(); + vector_roles.append(self.get_role(Role::VideoThumbnailRole)); + if let Some(slide) = self.as_mut().slides_mut().get_mut(index as usize) { + slide.video_thumbnail = video; + } + self.as_mut() + .emit_data_changed(model_index, model_index, &vector_roles); + println!("AHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH"); + } + #[qinvokable] pub fn clear(mut self: Pin<&mut Self>) { unsafe { @@ -694,6 +702,7 @@ mod slide_model { Role::SelectedRole => 13, Role::LoopingRole => 14, Role::TextRole => 1, + Role::VideoThumbnailRole => 15, _ => 0, } }