From 16f86f2f65e73935496e3324bb16f9b8cd4d7953 Mon Sep 17 00:00:00 2001 From: Berthold Stoeger Date: Tue, 24 Nov 2020 20:17:27 +0100 Subject: [PATCH] desktop: use getDiveSelection to access selected dives In the list view two functions were still manually collecting the selected dives. Use getDiveSelection() there as well. Careful: that means that the check for dives that are already outside of a trip now has to be done in the RemoveDivesFromTrip command. Signed-off-by: Berthold Stoeger --- commands/command_divelist.cpp | 8 +++++++- desktop-widgets/divelistview.cpp | 19 ++----------------- 2 files changed, 9 insertions(+), 18 deletions(-) diff --git a/commands/command_divelist.cpp b/commands/command_divelist.cpp index b19075581..262197214 100644 --- a/commands/command_divelist.cpp +++ b/commands/command_divelist.cpp @@ -740,8 +740,14 @@ void TripBase::undoit() redoit(); } -RemoveDivesFromTrip::RemoveDivesFromTrip(const QVector &divesToRemove) +RemoveDivesFromTrip::RemoveDivesFromTrip(const QVector &divesToRemoveIn) { + // Filter out dives outside of trip. Note: This is in a separate loop to get the command-description right. + QVector divesToRemove; + for (dive *d: divesToRemoveIn) { + if (d->divetrip) + divesToRemove.push_back(d); + } setText(QStringLiteral("%1 [%2]").arg(Command::Base::tr("remove %n dive(s) from trip", "", divesToRemove.size())).arg(getListOfDives(divesToRemove))); divesToMove.divesToMove.reserve(divesToRemove.size()); for (dive *d: divesToRemove) { diff --git a/desktop-widgets/divelistview.cpp b/desktop-widgets/divelistview.cpp index 14973cf0a..3d5974c53 100644 --- a/desktop-widgets/divelistview.cpp +++ b/desktop-widgets/divelistview.cpp @@ -679,15 +679,7 @@ void DiveListView::mergeTripBelow() void DiveListView::removeFromTrip() { - //TODO: move this to C-code. - int i; - struct dive *d; - QVector divesToRemove; - for_each_dive (i, d) { - if (d->selected && d->divetrip) - divesToRemove.append(d); - } - Command::removeDivesFromTrip(divesToRemove); + Command::removeDivesFromTrip(stdToQt(getDiveSelection())); } void DiveListView::newTripAbove() @@ -695,14 +687,7 @@ void DiveListView::newTripAbove() struct dive *d = contextMenuIndex.data(DiveTripModelBase::DIVE_ROLE).value(); if (!d) // shouldn't happen as we only are setting up this action if this is a dive return; - //TODO: port to c-code. - int idx; - QVector dives; - for_each_dive (idx, d) { - if (d->selected) - dives.append(d); - } - Command::createTrip(dives); + Command::createTrip(stdToQt(getDiveSelection())); } void DiveListView::addToTripBelow()