diff options
author | Berthold Stoeger <bstoeger@mail.tuwien.ac.at> | 2020-09-30 00:01:24 +0200 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2020-10-03 10:01:13 -0700 |
commit | 00abc04913d8aef45be4e30f23d5ebc9914c8d54 (patch) | |
tree | 1a9d51c8680a6edb9278191510278d6ac8a62def | |
parent | 7b196a5ef90ee96435ea762c7045ef47a6811a28 (diff) | |
download | subsurface-00abc04913d8aef45be4e30f23d5ebc9914c8d54.tar.gz |
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 <bstoeger@mail.tuwien.ac.at>
-rw-r--r-- | core/device.cpp | 7 | ||||
-rw-r--r-- | core/qthelper.cpp | 8 | ||||
-rw-r--r-- | desktop-widgets/divelistview.cpp | 35 | ||||
-rw-r--r-- | qt-models/divepicturemodel.cpp | 23 |
4 files changed, 19 insertions, 54 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<QString, int> &a, const QPair<QString, int> &b) QVector<QPair<QString, int>> selectedDivesGasUsed() { - int i, j; - struct dive *d; + int j; QMap<QString, int> 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<QVector<dive *>> merge_batches; QVector<dive *> 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<struct dive *> 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<dive *> 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<dive *>::fromStdVector(getDiveSelection()), trip); } void DiveListView::markDiveInvalid() @@ -775,13 +754,7 @@ void DiveListView::deleteDive() if (!d) return; - int i; - QVector<struct dive*> deletedDives; - for_each_dive (i, d) { - if (d->selected) - deletedDives.append(d); - } - Command::deleteDive(deletedDives); + Command::deleteDive(QVector<dive *>::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)); - - // 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; }); - } + 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; }); } updateThumbnails(); |