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 /core | |
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 'core')
-rw-r--r-- | core/subsurface-qt/DiveListNotifier.h | 32 |
1 files changed, 11 insertions, 21 deletions
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<dive *> &dives); void divesDeleted(dive_trip *trip, bool deleteTrip, const QVector<dive *> &dives); - void divesChanged(dive_trip *trip, const QVector<dive *> &dives, DiveField field); void divesMovedBetweenTrips(dive_trip *from, dive_trip *to, bool deleteFrom, bool createTo, const QVector<dive *> &dives); - void divesTimeChanged(dive_trip *trip, timestamp_t delta, const QVector<dive *> &dives); + void divesChanged(const QVector<dive *> &dives, DiveField field); + void divesTimeChanged(timestamp_t delta, const QVector<dive *> &dives); - void cylindersReset(dive_trip *trip, const QVector<dive *> &dives); - void weightsystemsReset(dive_trip *trip, const QVector<dive *> &dives); + void cylindersReset(const QVector<dive *> &dives); + void weightsystemsReset(const QVector<dive *> &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<dive *> &dives); - void divesDeselected(dive_trip *trip, const QVector<dive *> &dives); + void divesSelected(const QVector<dive *> &dives); + void divesDeselected(const QVector<dive *> &dives); void currentDiveChanged(); void selectionChanged(); |