From 00abc04913d8aef45be4e30f23d5ebc9914c8d54 Mon Sep 17 00:00:00 2001 From: Berthold Stoeger Date: Wed, 30 Sep 2020 00:01:24 +0200 Subject: [PATCH] cleanup: use getDiveSelection() to loop over selected dives getDiveSelection() returns a vector of the selected dives. Use that instead of looping over the dive table and checking manually. This removes a few lines of code. Signed-off-by: Berthold Stoeger --- core/device.cpp | 7 ++----- core/qthelper.cpp | 8 +++----- desktop-widgets/divelistview.cpp | 35 ++++---------------------------- qt-models/divepicturemodel.cpp | 21 ++++++++----------- 4 files changed, 18 insertions(+), 53 deletions(-) diff --git a/core/device.cpp b/core/device.cpp index d72f4d481..a5fa3bc2a 100644 --- a/core/device.cpp +++ b/core/device.cpp @@ -4,6 +4,7 @@ #include "subsurface-string.h" #include "device.h" #include "errorhelper.h" // for verbose flag +#include "selection.h" #include "core/settings/qPrefDiveComputer.h" /* @@ -305,12 +306,8 @@ extern "C" void call_for_each_dc (void *f, void (*callback)(void *, const char * for (const DiveComputerNode &node : values) { bool found = false; if (select_only) { - int j; - struct dive *d; - for_each_dive (j, d) { + for (dive *d: getDiveSelection()) { struct divecomputer *dc; - if (!d->selected) - continue; for_each_dc (d, dc) { if (dc->deviceid == node.deviceId) { found = true; diff --git a/core/qthelper.cpp b/core/qthelper.cpp index 25c5fd7ce..7540045b3 100644 --- a/core/qthelper.cpp +++ b/core/qthelper.cpp @@ -19,6 +19,7 @@ #include "exif.h" #include "file.h" #include "picture.h" +#include "selection.h" #include "tag.h" #include "trip.h" #include "imagedownloader.h" @@ -387,12 +388,9 @@ static bool lessThan(const QPair &a, const QPair &b) QVector> selectedDivesGasUsed() { - int i, j; - struct dive *d; + int j; QMap gasUsed; - for_each_dive (i, d) { - if (!d->selected) - continue; + for (dive *d: getDiveSelection()) { volume_t *diveGases = get_gas_used(d); for (j = 0; j < d->cylinders.nr; j++) { if (diveGases[j].mliter) { diff --git a/desktop-widgets/divelistview.cpp b/desktop-widgets/divelistview.cpp index 0a95005a6..6fb1de077 100644 --- a/desktop-widgets/divelistview.cpp +++ b/desktop-widgets/divelistview.cpp @@ -609,16 +609,12 @@ static bool can_merge(const struct dive *a, const struct dive *b, enum asked_use void DiveListView::mergeDives() { - int i; - struct dive *d; enum asked_user have_asked = NOTYET; // Collect a vector of batches of dives to merge (i.e. a vector of vector of dives) QVector> merge_batches; QVector current_batch; - for_each_dive (i, d) { - if (!d->selected) - continue; + for (dive *d: getDiveSelection()) { if (current_batch.empty()) { current_batch.append(d); } else if (can_merge(current_batch.back(), d, &have_asked)) { @@ -638,16 +634,7 @@ void DiveListView::mergeDives() void DiveListView::splitDives() { - int i; - struct dive *dive; - - // Let's collect the dives to be split first, so that we don't catch newly inserted dives! - QVector dives; - for_each_dive (i, dive) { - if (dive->selected) - dives.append(dive); - } - for (struct dive *d: dives) + for (struct dive *d: getDiveSelection()) Command::splitDives(d, duration_t{-1}); } @@ -748,15 +735,7 @@ void DiveListView::addToTrip(int delta) // no dive, no trip? get me out of here return; - QVector dives; - if (d->selected) { // there are possibly other selected dives that we should add - int idx; - for_each_dive (idx, d) { - if (d->selected) - dives.append(d); - } - } - Command::addDivesToTrip(dives, trip); + Command::addDivesToTrip(QVector::fromStdVector(getDiveSelection()), trip); } void DiveListView::markDiveInvalid() @@ -775,13 +754,7 @@ void DiveListView::deleteDive() if (!d) return; - int i; - QVector deletedDives; - for_each_dive (i, d) { - if (d->selected) - deletedDives.append(d); - } - Command::deleteDive(deletedDives); + Command::deleteDive(QVector::fromStdVector(getDiveSelection())); } void DiveListView::contextMenuEvent(QContextMenuEvent *event) diff --git a/qt-models/divepicturemodel.cpp b/qt-models/divepicturemodel.cpp index 7c9fb18c2..e73377d32 100644 --- a/qt-models/divepicturemodel.cpp +++ b/qt-models/divepicturemodel.cpp @@ -5,6 +5,7 @@ #include "core/imagedownloader.h" #include "core/picture.h" #include "core/qthelper.h" +#include "core/selection.h" #include "core/subsurface-qt/divelistnotifier.h" #include "commands/command.h" @@ -87,19 +88,15 @@ void DivePictureModel::updateDivePictures() Thumbnailer::instance()->clearWorkQueue(); } - int i; - struct dive *dive; - for_each_dive (i, dive) { - if (dive->selected) { - size_t first = pictures.size(); - FOR_EACH_PICTURE(dive) - pictures.push_back(PictureEntry(dive, *picture)); + for (struct dive *dive: getDiveSelection()) { + size_t first = pictures.size(); + FOR_EACH_PICTURE(dive) + pictures.push_back(PictureEntry(dive, *picture)); - // Sort pictures of this dive by offset. - // Thus, the list will be sorted by (dive, offset). - std::sort(pictures.begin() + first, pictures.end(), - [](const PictureEntry &a, const PictureEntry &b) { return a.offsetSeconds < b.offsetSeconds; }); - } + // Sort pictures of this dive by offset. + // Thus, the list will be sorted by (dive, offset). + std::sort(pictures.begin() + first, pictures.end(), + [](const PictureEntry &a, const PictureEntry &b) { return a.offsetSeconds < b.offsetSeconds; }); } updateThumbnails();