mirror of
https://github.com/subsurface/subsurface.git
synced 2024-11-30 22:20:21 +00:00
Undo: sort dives by dive_less_than() in signals
In signals dives were sorted by date. This criterion is not be unique. Therefore sort by the dive_less_than() function of the core to avoid any inconsistencies between the Qt-models and the core data. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
This commit is contained in:
parent
38ba434966
commit
12a13d722a
2 changed files with 4 additions and 4 deletions
|
@ -1,7 +1,6 @@
|
|||
// SPDX-License-Identifier: GPL-2.0
|
||||
|
||||
// The DiveListNotifier emits signals when the dive-list changes (dives/trips created/deleted/moved/edited)
|
||||
// Note that vectors are passed by reference, so this will only work for signals inside the UI thread!
|
||||
// The DiveListNotifier emits signals when the dive-list changes (dives/trips/divesites created/deleted/moved/edited)
|
||||
|
||||
#ifndef DIVELISTNOTIFIER_H
|
||||
#define DIVELISTNOTIFIER_H
|
||||
|
@ -48,7 +47,7 @@ signals:
|
|||
// or the deletion spans multiple trips. But most of the time only dives of a single trip
|
||||
// will be affected and trips don't overlap, so these considerations are moot.
|
||||
// Notes:
|
||||
// - The dives are always sorted by start-time.
|
||||
// - The dives are always sorted by according to the dives_less_than() function of the core.
|
||||
// - The "trip" arguments are null for top-level-dives.
|
||||
void divesAdded(dive_trip *trip, bool addTrip, const QVector<dive *> &dives);
|
||||
void divesDeleted(dive_trip *trip, bool deleteTrip, const QVector<dive *> &dives);
|
||||
|
|
|
@ -15,6 +15,7 @@ namespace Command {
|
|||
// Generally, signals are sent in batches per trip. To avoid writing the same loop
|
||||
// again and again, this template takes a vector of trip / dive pairs, sorts it
|
||||
// by trip and then calls a function-object with trip and a QVector of dives in that trip.
|
||||
// The dives are sorted by the dive_less_than() function defined in the core.
|
||||
// Input parameters:
|
||||
// - dives: a vector of trip,dive pairs, which will be sorted and processed in batches by trip.
|
||||
// - action: a function object, taking a trip-pointer and a QVector of dives, which will be called for each batch.
|
||||
|
@ -24,7 +25,7 @@ void processByTrip(std::vector<std::pair<dive_trip *, dive *>> &dives, Function
|
|||
// Use std::tie for lexicographical sorting of trip, then start-time
|
||||
std::sort(dives.begin(), dives.end(),
|
||||
[](const std::pair<dive_trip *, dive *> &e1, const std::pair<dive_trip *, dive *> &e2)
|
||||
{ return std::tie(e1.first, e1.second->when) < std::tie(e2.first, e2.second->when); });
|
||||
{ return e1.first == e2.first ? dive_less_than(e1.second, e2.second) : e1.first < e2.first; });
|
||||
|
||||
// Then, process the dives in batches by trip
|
||||
size_t i, j; // Begin and end of batch
|
||||
|
|
Loading…
Reference in a new issue