From 6c33e52ea36c0ec6c90aea2666d0c4e0b114e48c Mon Sep 17 00:00:00 2001 From: Chris Cochrun Date: Sun, 5 Mar 2023 06:51:47 -0600 Subject: [PATCH] a working multi delete in libraries --- src/cpp/imagesqlmodel.cpp | 9 +++++++++ src/cpp/imagesqlmodel.h | 1 + src/cpp/presentationsqlmodel.cpp | 9 +++++++++ src/cpp/presentationsqlmodel.h | 1 + src/cpp/songsqlmodel.cpp | 10 ++++++++++ src/cpp/songsqlmodel.h | 1 + src/cpp/videosqlmodel.cpp | 9 +++++++++ src/cpp/videosqlmodel.h | 1 + src/qml/presenter/Library.qml | 16 ++++++++-------- src/qml/presenter/LibraryItem.qml | 8 ++------ 10 files changed, 51 insertions(+), 14 deletions(-) diff --git a/src/cpp/imagesqlmodel.cpp b/src/cpp/imagesqlmodel.cpp index dbbea93..b10de33 100644 --- a/src/cpp/imagesqlmodel.cpp +++ b/src/cpp/imagesqlmodel.cpp @@ -235,3 +235,12 @@ void ImageProxyModel::deleteImage(const int &row) { auto model = qobject_cast(sourceModel()); model->deleteImage(row); } + +void ImageProxyModel::deleteImages(const QVector &rows) { + auto model = qobject_cast(sourceModel()); + qDebug() << "DELETING!!!!!!!!!!!!!!!!!!!!!!!" << rows; + for (int i = rows.size() - 1; i >= 0; i--) { + qDebug() << "deleting" << rows.at(i); + model->deleteImage(rows.at(i)); + } +} diff --git a/src/cpp/imagesqlmodel.h b/src/cpp/imagesqlmodel.h index 1da1117..57d467b 100644 --- a/src/cpp/imagesqlmodel.h +++ b/src/cpp/imagesqlmodel.h @@ -62,6 +62,7 @@ public: public slots: Q_INVOKABLE QVariantMap getImage(const int &row); Q_INVOKABLE void deleteImage(const int &row); + Q_INVOKABLE void deleteImages(const QVector &rows); private: ImageSqlModel *m_imageModel; diff --git a/src/cpp/presentationsqlmodel.cpp b/src/cpp/presentationsqlmodel.cpp index 4e25c43..3d66fbf 100644 --- a/src/cpp/presentationsqlmodel.cpp +++ b/src/cpp/presentationsqlmodel.cpp @@ -270,3 +270,12 @@ void PresentationProxyModel::deletePresentation(const int &row) { auto model = qobject_cast(sourceModel()); model->deletePresentation(row); } + +void PresentationProxyModel::deletePresentations(const QVector &rows) { + auto model = qobject_cast(sourceModel()); + qDebug() << "DELETING!!!!!!!!!!!!!!!!!!!!!!!" << rows; + for (int i = rows.size() - 1; i >= 0; i--) { + qDebug() << "deleting" << rows.at(i); + model->deletePresentation(rows.at(i)); + } +} diff --git a/src/cpp/presentationsqlmodel.h b/src/cpp/presentationsqlmodel.h index f1939c5..3f3b329 100644 --- a/src/cpp/presentationsqlmodel.h +++ b/src/cpp/presentationsqlmodel.h @@ -69,6 +69,7 @@ public: public slots: Q_INVOKABLE QVariantMap getPresentation(const int &row); Q_INVOKABLE void deletePresentation(const int &row); + Q_INVOKABLE void deletePresentations(const QVector &row); private: PresentationSqlModel *m_presentationModel; diff --git a/src/cpp/songsqlmodel.cpp b/src/cpp/songsqlmodel.cpp index 9c19628..e8bdff8 100644 --- a/src/cpp/songsqlmodel.cpp +++ b/src/cpp/songsqlmodel.cpp @@ -760,3 +760,13 @@ void SongProxyModel::deleteSong(const int &row) { auto model = qobject_cast(sourceModel()); model->deleteSong(row); } + +void SongProxyModel::deleteSongs(const QVector &rows) { + auto model = qobject_cast(sourceModel()); + qDebug() << "DELETING!!!!!!!!!!!!!!!!!!!!!!!" << rows; + for (int i = rows.size() - 1; i >= 0; i--) { + qDebug() << "deleting" << rows.at(i); + model->deleteSong(rows.at(i)); + } +} + diff --git a/src/cpp/songsqlmodel.h b/src/cpp/songsqlmodel.h index 288bee4..760c80e 100644 --- a/src/cpp/songsqlmodel.h +++ b/src/cpp/songsqlmodel.h @@ -131,6 +131,7 @@ public: public slots: Q_INVOKABLE QVariantMap getSong(const int &row); Q_INVOKABLE void deleteSong(const int &row); + Q_INVOKABLE void deleteSongs(const QVector &rows); Q_INVOKABLE QStringList getLyricList(const int &row); // Q_INVOKABLE void select(int row); // Q_INVOKABLE void selectSongs(int row); diff --git a/src/cpp/videosqlmodel.cpp b/src/cpp/videosqlmodel.cpp index 01dc234..a4972a2 100644 --- a/src/cpp/videosqlmodel.cpp +++ b/src/cpp/videosqlmodel.cpp @@ -351,3 +351,12 @@ void VideoProxyModel::deleteVideo(const int &row) { auto model = qobject_cast(sourceModel()); model->deleteVideo(mapToSource(index(row,0)).row()); } + +void VideoProxyModel::deleteVideos(const QVector &rows) { + auto model = qobject_cast(sourceModel()); + qDebug() << "DELETING!!!!!!!!!!!!!!!!!!!!!!!" << rows; + for (int i = rows.size() - 1; i >= 0; i--) { + qDebug() << "deleting" << rows.at(i); + model->deleteVideo(rows.at(i)); + } +} diff --git a/src/cpp/videosqlmodel.h b/src/cpp/videosqlmodel.h index 12764c0..2742891 100644 --- a/src/cpp/videosqlmodel.h +++ b/src/cpp/videosqlmodel.h @@ -80,6 +80,7 @@ public: public slots: Q_INVOKABLE QVariantMap getVideo(const int &row); Q_INVOKABLE void deleteVideo(const int &row); + Q_INVOKABLE void deleteVideos(const QVector &row); private: VideoSqlModel *m_videoModel; diff --git a/src/qml/presenter/Library.qml b/src/qml/presenter/Library.qml index f65bd44..b2978d5 100644 --- a/src/qml/presenter/Library.qml +++ b/src/qml/presenter/Library.qml @@ -46,8 +46,8 @@ Item { editType = "song"; editSwitch(libraryList.currentIndex); }) - deleteItemFunction: (function(index) { - songProxyModel.deleteSong(index) + deleteItemFunction: (function(rows) { + songProxyModel.deleteSongs(rows) }) Component.onCompleted: selectedLibrary = "song"; @@ -72,8 +72,8 @@ Item { newItemFunction: (function() { videoProxyModel.setFilterRegularExpression(""); }) - deleteItemFunction: (function(index) { - videoProxyModel.deleteVideo(index) + deleteItemFunction: (function(rows) { + videoProxyModel.deleteVideos(rows) }) } @@ -97,8 +97,8 @@ Item { newItemFunction: (function() { imageProxyModel.setFilterRegularExpression(""); }) - deleteItemFunction: (function(index) { - imageProxyModel.deleteImage(index) + deleteItemFunction: (function(rows) { + imageProxyModel.deleteImages(rows) }) } @@ -122,8 +122,8 @@ Item { newItemFunction: (function() { presProxyModel.setFilterRegularExpression(""); }) - deleteItemFunction: (function(index) { - presProxyModel.deletePresentation(index) + deleteItemFunction: (function(rows) { + presProxyModel.deletePresentations(rows) }) } diff --git a/src/qml/presenter/LibraryItem.qml b/src/qml/presenter/LibraryItem.qml index b3bfb5b..925d098 100644 --- a/src/qml/presenter/LibraryItem.qml +++ b/src/qml/presenter/LibraryItem.qml @@ -360,13 +360,9 @@ ColumnLayout { var selection = []; var length = selectionModel.selectedIndexes.length; for (let i = 0; i < length; i++) { - selection.push(selectionModel.selectedIndexes[i]); - console.log(selection[i].row); - /* root.deleteItemFunction(selection[i].row); */ - } - for (let i = 0; i < length; i++) { - root.deleteItemFunction(selection[i].row); + selection.push(selectionModel.selectedIndexes[i].row); } + root.deleteItemFunction(selection); } } }