summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Berthold Stoeger <bstoeger@mail.tuwien.ac.at>2020-09-30 00:01:24 +0200
committerGravatar Dirk Hohndel <dirk@hohndel.org>2020-10-03 10:01:13 -0700
commit00abc04913d8aef45be4e30f23d5ebc9914c8d54 (patch)
tree1a9d51c8680a6edb9278191510278d6ac8a62def
parent7b196a5ef90ee96435ea762c7045ef47a6811a28 (diff)
downloadsubsurface-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.cpp7
-rw-r--r--core/qthelper.cpp8
-rw-r--r--desktop-widgets/divelistview.cpp35
-rw-r--r--qt-models/divepicturemodel.cpp23
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();