From d61da6f09fd642312ac2a82684171f0d026b47d1 Mon Sep 17 00:00:00 2001 From: Chris Cochrun Date: Sat, 12 Aug 2023 14:07:13 -0500 Subject: [PATCH] some initial setup to get the service_item_model.rs working --- src/main.cpp | 14 +++++++------- src/rust/service_item_model.rs | 26 +++++++++++++++++++++++--- src/rust/settings.rs | 8 +++++--- 3 files changed, 35 insertions(+), 13 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index 7180b93..ff9ffa0 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -148,7 +148,7 @@ int main(int argc, char *argv[]) QScopedPointer slideMod(new SlideyMod); QScopedPointer filemanager(new File); // QScopedPointer preswin(new QQuickView); - QScopedPointer serviceItemModel(new ServiceItemModel); + QScopedPointer serviceItemModel(new ServiceItemMod); QScopedPointer slideobject(new SlideObj); Settings *settings = new Settings; @@ -169,19 +169,19 @@ int main(int argc, char *argv[]) slideModel.get(), SLOT(addItemFromService(const int&, const ServiceItem&))); QObject::connect(serviceItemModel.get(), - &ServiceItemModel::itemAddedRust, + &ServiceItemMod::itemAdded, slideMod.get(), &SlideyMod::addItemFromService); QObject::connect(serviceItemModel.get(), - &ServiceItemModel::itemInsertedRust, + &ServiceItemMod::itemInserted, slideMod.get(), &SlideyMod::insertItemFromService); QObject::connect(serviceItemModel.get(), - &ServiceItemModel::rowMovedRust, + &ServiceItemMod::itemMoved, slideMod.get(), &SlideyMod::moveItemFromService); QObject::connect(serviceItemModel.get(), - &ServiceItemModel::rowRemovedRust, + &ServiceItemMod::itemRemoved, slideMod.get(), &SlideyMod::removeItemFromService); // QObject::connect(serviceItemModel.get(), @@ -193,12 +193,12 @@ int main(int argc, char *argv[]) slideMod.get(), SLOT(activate(int))); - if (!serviceItemModel.get()->loadLastSaved()) { + if (!serviceItemModel.get()->load(settings->getLastSaveFile())) { qDebug() << "Last saved file is missing or there isn't a last saved file."; serviceItemModel.get()->addItem("Black", "image", "qrc:/assets/black.jpg", "image", QStringList(""), - "", "", 0, 1, false); + "", "", 0, 1, false, 0, 0); } // apparently mpv needs this class set diff --git a/src/rust/service_item_model.rs b/src/rust/service_item_model.rs index 3196dd6..01a22f0 100644 --- a/src/rust/service_item_model.rs +++ b/src/rust/service_item_model.rs @@ -95,9 +95,21 @@ mod service_item_model { SelectedChanged, ItemInserted { index: &'a i32, + item: &'a QMap_QString_QVariant, }, ItemAdded { index: &'a i32, + item: &'a QMap_QString_QVariant, + }, + ItemRemoved { + index: &'a i32, + item: &'a QMap_QString_QVariant, + }, + ItemMoved { + source_index: &'a i32, + dest_index: &'a i32, + // index: &'a i32, + item: &'a QMap_QString_QVariant, }, } @@ -120,7 +132,11 @@ mod service_item_model { // use crate::video_thumbnail; // use image::{ImageBuffer, Rgba}; - use std::path::PathBuf; + use dirs; + use std::fs; + use std::io::{self, Write}; + use std::path::{Path, PathBuf}; + use std::str; impl qobject::ServiceItemMod { #[qinvokable] pub fn clear(mut self: Pin<&mut Self>) { @@ -150,9 +166,9 @@ mod service_item_model { mut self: Pin<&mut Self>, name: QString, ty: QString, - text: QStringList, background: QString, background_type: QString, + text: QStringList, audio: QString, font: QString, font_size: i32, @@ -333,7 +349,11 @@ mod service_item_model { #[qinvokable] pub fn load(mut self: Pin<&mut Self>, file: QUrl) -> bool { - todo!(); + // todo!(); + println!("THE LAST SAVE FILE ISSSSS: {file}"); + let lf = PathBuf::from(file.to_local_file().unwrap_or_default().to_string()); + println!("{:?}", lf); + false } #[qinvokable] diff --git a/src/rust/settings.rs b/src/rust/settings.rs index 0d6b48c..42e09d7 100644 --- a/src/rust/settings.rs +++ b/src/rust/settings.rs @@ -7,6 +7,8 @@ mod settings { unsafe extern "C++" { include!("cxx-qt-lib/qstring.h"); type QString = cxx_qt_lib::QString; + include!("cxx-qt-lib/qurl.h"); + type QUrl = cxx_qt_lib::QUrl; } #[derive(Clone)] @@ -17,7 +19,7 @@ mod settings { #[qproperty] sound_effect: QString, #[qproperty] - last_save_file: QString, + last_save_file: QUrl, } impl Default for Settings { @@ -25,7 +27,7 @@ mod settings { Self { screen: QString::from(""), sound_effect: QString::from(""), - last_save_file: QString::from(""), + last_save_file: QUrl::from(""), } } } @@ -54,7 +56,7 @@ mod settings { let sf = config.get("General", "lastSaveFile"); println!("{:?}", sf); if let Some(s) = sf { - self.set_last_save_file(QString::from(&s)); + self.set_last_save_file(QUrl::from(&s)); println!("{s}"); } else { println!("error loading last save file");