aboutsummaryrefslogtreecommitdiffstats
path: root/core
diff options
context:
space:
mode:
authorGravatar Berthold Stoeger <bstoeger@mail.tuwien.ac.at>2019-06-23 09:22:26 +0200
committerGravatar bstoeger <32835590+bstoeger@users.noreply.github.com>2019-06-23 20:08:46 +0200
commit27944a52b1c2a1c68ccfe88c4a84d3f74fb8b512 (patch)
tree160fef9677e5cc2e907d4c32448553f74df4d2db /core
parentcbcddaa396f6668fef7750eb2721bc70ca11d0e4 (diff)
downloadsubsurface-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.h32
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();