diff --git a/src/cpp/serviceitemmodel.cpp b/src/cpp/serviceitemmodel.cpp index a6b8f64..a31db02 100644 --- a/src/cpp/serviceitemmodel.cpp +++ b/src/cpp/serviceitemmodel.cpp @@ -303,7 +303,9 @@ void ServiceItemModel::removeItems() { beginRemoveRows(QModelIndex(), i, i); m_items.removeAt(i); endRemoveRows(); + QVariantMap map = getItem(i); emit rowRemoved(i, *item); + emit rowRemovedRust(i, map); qDebug() << "emitted removal of item:" << item->name(); } } diff --git a/src/cpp/serviceitemmodel.h b/src/cpp/serviceitemmodel.h index ef27867..f8b122b 100644 --- a/src/cpp/serviceitemmodel.h +++ b/src/cpp/serviceitemmodel.h @@ -119,7 +119,9 @@ signals: void itemInserted(const int &, const ServiceItem &); void itemInsertedRust(const int &, const QVariantMap &); void rowMoved(const int &, const int &, const ServiceItem &); + void rowMovedRust(const int &, const int &, const QVariantMap &); void rowRemoved(const int &, const ServiceItem &); + void rowRemovedRust(const int &, const QVariantMap &); void allRemoved(); private: diff --git a/src/main.cpp b/src/main.cpp index 5d9515a..c37cf6b 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -168,13 +168,13 @@ int main(int argc, char *argv[]) slideModel.get(), SLOT(moveRowFromService(const int&, const int&, const ServiceItem&))); QObject::connect(serviceItemModel.get(), - SIGNAL(rowRemoved(const int&, const ServiceItem&)), - slideModel.get(), - SLOT(removeServiceItem(const int&, const ServiceItem&))); - QObject::connect(serviceItemModel.get(), - SIGNAL(allRemoved()), - slideModel.get(), - SLOT(clear())); + &ServiceItemModel::rowRemovedRust, + slideMod.get(), + &SlideyMod::removeItemFromService); + // QObject::connect(serviceItemModel.get(), + // SIGNAL(allRemoved()), + // slideMod.get(), + // SLOT(clear())); QObject::connect(slideobject.get(), SIGNAL(slideChanged(int)), slideMod.get(), diff --git a/src/qml/presenter/ServiceList.qml b/src/qml/presenter/ServiceList.qml index 1c1f0df..3256730 100644 --- a/src/qml/presenter/ServiceList.qml +++ b/src/qml/presenter/ServiceList.qml @@ -506,7 +506,7 @@ Item { icon.name: "delete" onTriggered: { showPassiveNotification("remove"); - removeItem(serviceItemList.currentIndex); + removeItems(); } }, Kirigami.Action { @@ -515,11 +515,12 @@ Item { onTriggered: { showPassiveNotification("clearing all items"); ServiceItemModel.clearAll(); + serviceItemList.forceLayout() } }, Kirigami.Action { text: "Load" - icon.name: "list-remove-all" + icon.name: "fileopen" onTriggered: { loadingItem.visible = !loadingItem.visible; } diff --git a/src/rust/slide_model.rs b/src/rust/slide_model.rs index 65417f7..1db9158 100644 --- a/src/rust/slide_model.rs +++ b/src/rust/slide_model.rs @@ -165,6 +165,15 @@ mod slide_model { } } + #[qinvokable] + pub fn remove_item_from_service( + mut self: Pin<&mut Self>, + index: i32, + service_item: &QMap_QString_QVariant, + ) { + println!("Removing: {:?}", index); + } + #[qinvokable] pub fn remove_item(mut self: Pin<&mut Self>, index: i32) { if index < 0 || (index as usize) >= self.slides().len() { @@ -387,6 +396,14 @@ mod slide_model { video_thumbnail: QString::from(""), }; + // We need to move all the current slides service_item_id's up by one. + let slides_len = self.as_mut().slides_mut().len() as i32; + for slide in index..slides_len { + if let Some(slide) = self.as_mut().slides_mut().get_mut(slide as usize) { + slide.service_item_id += 1; + } + } + match ty { Some(ty) if ty == QString::from("image") => { slide.ty = ty; @@ -624,12 +641,15 @@ mod slide_model { slide.active = false; } if let Some(slide) = self.as_mut().slides_mut().get_mut(index as usize) { + println!("slide is activating {:?}", index); + println!("slide-title: {:?}", slide.service_item_id); + println!("slide-image-background: {:?}", slide.image_background); + println!("slide-video-background: {:?}", slide.video_background); slide.active = true; self.as_mut().emit_data_changed(tl, br, &vector_roles); // We use this signal generated by our signals enum to tell QML that // the active slide has changed which is used to reposition views. self.as_mut().emit_active_changed(); - println!("slide is activating {:?}", index); true } else { false