From 3c0c1801cd869f7a98c23356ab2ae4e373f55f31 Mon Sep 17 00:00:00 2001 From: Berthold Stoeger Date: Fri, 18 May 2018 21:57:18 +0200 Subject: Dive pictures: change removePicture() interface The function removePicture() had a flag "last", which would indicate that the called had finished removing pictures. Only then would the model be recalculated. This is a strange interface and, matter of fact, the caller was buggy: if the last picture to be removed didn't have a proper url, removePicture() was never called with "last" being set. Change the interface to take a list of pictures to be deleted. This will allow us to make picture deletion smarter in follow-up commits. Signed-off-by: Berthold Stoeger --- desktop-widgets/tab-widgets/TabDivePhotos.cpp | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) (limited to 'desktop-widgets/tab-widgets') diff --git a/desktop-widgets/tab-widgets/TabDivePhotos.cpp b/desktop-widgets/tab-widgets/TabDivePhotos.cpp index a2a41398f..1a5d233e5 100644 --- a/desktop-widgets/tab-widgets/TabDivePhotos.cpp +++ b/desktop-widgets/tab-widgets/TabDivePhotos.cpp @@ -60,23 +60,21 @@ void TabDivePhotos::contextMenuEvent(QContextMenuEvent *event) void TabDivePhotos::removeSelectedPhotos() { - bool last = false; if (!ui->photosView->selectionModel()->hasSelection()) return; QModelIndexList indexes = ui->photosView->selectionModel()->selectedRows(); if (indexes.count() == 0) indexes = ui->photosView->selectionModel()->selectedIndexes(); - QModelIndex photo = indexes.first(); - do { - photo = indexes.first(); - last = indexes.count() == 1; + QVector photosToDelete; + photosToDelete.reserve(indexes.count()); + for (const auto &photo: indexes) { if (photo.isValid()) { QString fileUrl = photo.data(Qt::DisplayPropertyRole).toString(); - if (fileUrl.length() > 0) - DivePictureModel::instance()->removePicture(fileUrl, last); + if (!fileUrl.isEmpty()) + photosToDelete.push_back(fileUrl); } - indexes.removeFirst(); - } while(!indexes.isEmpty()); + } + DivePictureModel::instance()->removePictures(photosToDelete); } //TODO: This looks overly wrong. We shouldn't call MainWindow to retrieve the DiveList to add Images. -- cgit v1.2.3-70-g09d2