diff options
Diffstat (limited to 'qt-models')
-rw-r--r-- | qt-models/divepicturemodel.cpp | 26 | ||||
-rw-r--r-- | qt-models/divepicturemodel.h | 2 |
2 files changed, 19 insertions, 9 deletions
diff --git a/qt-models/divepicturemodel.cpp b/qt-models/divepicturemodel.cpp index 9b993cb5a..3fa1a07f4 100644 --- a/qt-models/divepicturemodel.cpp +++ b/qt-models/divepicturemodel.cpp @@ -127,19 +127,29 @@ QVariant DivePictureModel::data(const QModelIndex &index, int role) const return ret; } -void DivePictureModel::removePicture(const QString &fileUrl, bool last) +// Return true if we actually removed a picture +static bool removePictureFromSelectedDive(const char *fileUrl) { int i; struct dive *dive; for_each_dive (i, dive) { - if (dive->selected && dive_remove_picture(dive, qPrintable(fileUrl))) - break; - } - if (last) { - copy_dive(current_dive, &displayed_dive); - updateDivePictures(); - mark_divelist_changed(true); + if (dive->selected && dive_remove_picture(dive, fileUrl)) + return true; } + return false; +} + +void DivePictureModel::removePictures(const QVector<QString> &fileUrls) +{ + bool removed = false; + for (const QString &fileUrl: fileUrls) + removed |= removePictureFromSelectedDive(qPrintable(fileUrl)); + if (!removed) + return; + copy_dive(current_dive, &displayed_dive); + mark_divelist_changed(true); + + updateDivePictures(); } int DivePictureModel::rowCount(const QModelIndex &parent) const diff --git a/qt-models/divepicturemodel.h b/qt-models/divepicturemodel.h index 7f2cde6d0..61eb1d984 100644 --- a/qt-models/divepicturemodel.h +++ b/qt-models/divepicturemodel.h @@ -22,7 +22,7 @@ public: virtual int rowCount(const QModelIndex &parent = QModelIndex()) const; virtual void updateDivePictures(); void updateDivePicturesWhenDone(QList<QFuture<void>>); - void removePicture(const QString& fileUrl, bool last); + void removePictures(const QVector<QString> &fileUrls); int rowDDStart, rowDDEnd; void updateDivePictureOffset(const QString &filename, int offsetSeconds); public slots: |