diff options
author | Berthold Stoeger <bstoeger@mail.tuwien.ac.at> | 2019-06-23 09:22:26 +0200 |
---|---|---|
committer | bstoeger <32835590+bstoeger@users.noreply.github.com> | 2019-06-23 20:08:46 +0200 |
commit | 27944a52b1c2a1c68ccfe88c4a84d3f74fb8b512 (patch) | |
tree | 160fef9677e5cc2e907d4c32448553f74df4d2db /desktop-widgets/command_private.cpp | |
parent | cbcddaa396f6668fef7750eb2721bc70ca11d0e4 (diff) | |
download | subsurface-27944a52b1c2a1c68ccfe88c4a84d3f74fb8b512.tar.gz |
Undo: don't send signals batched by trip
Since the default view is batched by trips, signals were sent trip-wise.
This seemed like a good idea at first, but when more and more parts used
these signals, it became a burden. Therefore push the batching to the
part of the code where it is needed: the trip view.
The divesAdded and divesDeleted are not yet converted, because these
are combined with trip addition/deletion. This should also be detangled,
but not now.
Since the dive-lists were sorted in the processByTrip function, the
dive-list model now does its own sorting. This will have to be
audited.
Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
Diffstat (limited to 'desktop-widgets/command_private.cpp')
-rw-r--r-- | desktop-widgets/command_private.cpp | 16 |
1 files changed, 6 insertions, 10 deletions
diff --git a/desktop-widgets/command_private.cpp b/desktop-widgets/command_private.cpp index 05947cac1..7e604dfc9 100644 --- a/desktop-widgets/command_private.cpp +++ b/desktop-widgets/command_private.cpp @@ -46,8 +46,8 @@ bool setSelection(const std::vector<dive *> &selection, dive *currentDive) { // To do so, generate vectors of dives to be selected and deselected. // We send signals batched by trip, so keep track of trip/dive pairs. - std::vector<std::pair<dive_trip *, dive *>> divesToSelect; - std::vector<std::pair<dive_trip *, dive *>> divesToDeselect; + QVector<dive *> divesToSelect; + QVector<dive *> divesToDeselect; // TODO: We might want to keep track of selected dives in a more efficient way! int i; @@ -73,20 +73,16 @@ bool setSelection(const std::vector<dive *> &selection, dive *currentDive) if (newState && !d->selected) { d->selected = true; ++amount_selected; - divesToSelect.push_back({ d->divetrip, d }); + divesToSelect.push_back(d); } else if (!newState && d->selected) { d->selected = false; - divesToDeselect.push_back({ d->divetrip, d }); + divesToDeselect.push_back(d); } } // Send the select and deselect signals - processByTrip(divesToSelect, [&](dive_trip *trip, const QVector<dive *> &divesInTrip) { - emit diveListNotifier.divesSelected(trip, divesInTrip); - }); - processByTrip(divesToDeselect, [&](dive_trip *trip, const QVector<dive *> &divesInTrip) { - emit diveListNotifier.divesDeselected(trip, divesInTrip); - }); + emit diveListNotifier.divesSelected(divesToSelect); + emit diveListNotifier.divesDeselected(divesToDeselect); bool currentDiveChanged = false; if (!currentDive) { |