diff options
author | Berthold Stoeger <bstoeger@mail.tuwien.ac.at> | 2018-05-18 21:57:18 +0200 |
---|---|---|
committer | Lubomir I. Ivanov <neolit123@gmail.com> | 2018-05-21 22:17:28 +0300 |
commit | 3c0c1801cd869f7a98c23356ab2ae4e373f55f31 (patch) | |
tree | 5166f64760eb0eef594e4a10af764c52b240d81d /desktop-widgets/tab-widgets/TabDivePhotos.cpp | |
parent | fbe1144eaf7e800a014c7a97b846835ba9f3bc7f (diff) | |
download | subsurface-3c0c1801cd869f7a98c23356ab2ae4e373f55f31.tar.gz |
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 <bstoeger@mail.tuwien.ac.at>
Diffstat (limited to 'desktop-widgets/tab-widgets/TabDivePhotos.cpp')
-rw-r--r-- | desktop-widgets/tab-widgets/TabDivePhotos.cpp | 16 |
1 files changed, 7 insertions, 9 deletions
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<QString> 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. |