From 27944a52b1c2a1c68ccfe88c4a84d3f74fb8b512 Mon Sep 17 00:00:00 2001 From: Berthold Stoeger Date: Sun, 23 Jun 2019 09:22:26 +0200 Subject: 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 --- core/subsurface-qt/DiveListNotifier.h | 32 +++++++++++--------------------- 1 file changed, 11 insertions(+), 21 deletions(-) (limited to 'core') diff --git a/core/subsurface-qt/DiveListNotifier.h b/core/subsurface-qt/DiveListNotifier.h index b7334287e..1d16652bd 100644 --- a/core/subsurface-qt/DiveListNotifier.h +++ b/core/subsurface-qt/DiveListNotifier.h @@ -37,39 +37,29 @@ enum class TripField { class DiveListNotifier : public QObject { Q_OBJECT signals: - - // Note that there are no signals for trips being added / created / time-shifted, - // because these events never happen without a dive being added / created / time-shifted. - - // We send one divesAdded, divesDeleted, divesChanged and divesTimeChanged, divesSelected - // signal per trip (non-associated dives being considered part of the null trip). This is - // ideal for the tree-view, but might be not-so-perfect for the list view, if trips intermingle - // 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 according to the dives_less_than() function of the core. - // - The "trip" arguments are null for top-level-dives. + // Note that there are no signals for trips being added and created + // because these events never happen without a dive being added, removed or moved. + // The dives are always sorted according to the dives_less_than() function of the core. void divesAdded(dive_trip *trip, bool addTrip, const QVector &dives); void divesDeleted(dive_trip *trip, bool deleteTrip, const QVector &dives); - void divesChanged(dive_trip *trip, const QVector &dives, DiveField field); void divesMovedBetweenTrips(dive_trip *from, dive_trip *to, bool deleteFrom, bool createTo, const QVector &dives); - void divesTimeChanged(dive_trip *trip, timestamp_t delta, const QVector &dives); + void divesChanged(const QVector &dives, DiveField field); + void divesTimeChanged(timestamp_t delta, const QVector &dives); - void cylindersReset(dive_trip *trip, const QVector &dives); - void weightsystemsReset(dive_trip *trip, const QVector &dives); + void cylindersReset(const QVector &dives); + void weightsystemsReset(const QVector &dives); // Trip edited signal void tripChanged(dive_trip *trip, TripField field); // Selection-signals come in two kinds: - // - divesSelected, divesDeselected and currentDiveChanged are finer grained and are - // called batch-wise per trip (except currentDiveChanged, of course). These signals - // are used by the dive-list model and view to correctly highlight the correct dives. + // - divesSelected, divesDeselected and currentDiveChanged are are used by the dive-list + // model and view to correctly highlight the correct dives. // - selectionChanged() is called once at the end of commands if either the selection // or the current dive changed. It is used by the main-window / profile to update // their data. - void divesSelected(dive_trip *trip, const QVector &dives); - void divesDeselected(dive_trip *trip, const QVector &dives); + void divesSelected(const QVector &dives); + void divesDeselected(const QVector &dives); void currentDiveChanged(); void selectionChanged(); -- cgit v1.2.3-70-g09d2