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 /qt-models/divetripmodel.h | |
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 'qt-models/divetripmodel.h')
-rw-r--r-- | qt-models/divetripmodel.h | 21 |
1 files changed, 12 insertions, 9 deletions
diff --git a/qt-models/divetripmodel.h b/qt-models/divetripmodel.h index 592234917..8903cb0c1 100644 --- a/qt-models/divetripmodel.h +++ b/qt-models/divetripmodel.h @@ -92,15 +92,15 @@ signals: void selectionChanged(const QVector<QModelIndex> &indexes, bool select); void newCurrentDive(QModelIndex index); protected slots: - 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); protected: // Access trip and dive data static QVariant diveData(const struct dive *d, int column, int role); static QVariant tripData(const dive_trip *trip, int column, int role); // Select or deselect dives - virtual void changeDiveSelection(dive_trip *trip, const QVector<dive *> &dives, bool select) = 0; + virtual void changeDiveSelection(const QVector<dive *> &dives, bool select) = 0; virtual dive *diveOrNull(const QModelIndex &index) const = 0; // Returns a dive if this index represents a dive, null otherwise }; @@ -111,9 +111,9 @@ class DiveTripModelTree : public DiveTripModelBase public slots: 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); - void divesTimeChanged(dive_trip *trip, timestamp_t delta, const QVector<dive *> &dives); void divesMovedBetweenTrips(dive_trip *from, dive_trip *to, bool deleteFrom, bool createTo, const QVector<dive *> &dives); + void divesChanged(const QVector<dive *> &dives); + void divesTimeChanged(timestamp_t delta, const QVector<dive *> &dives); void currentDiveChanged(); void tripChanged(dive_trip *trip, TripField); @@ -126,9 +126,12 @@ private: QVariant data(const QModelIndex &index, int role) const override; void filterFinished() override; bool lessThan(const QModelIndex &i1, const QModelIndex &i2) const override; - void changeDiveSelection(dive_trip *trip, const QVector<dive *> &dives, bool select) override; + void changeDiveSelection(const QVector<dive *> &dives, bool select) override; + void changeDiveSelectionTrip(dive_trip *trip, const QVector<dive *> &dives, bool select); dive *diveOrNull(const QModelIndex &index) const override; bool setShown(const QModelIndex &idx, bool shown); + void divesChangedTrip(dive_trip *trip, const QVector<dive *> &dives); + void divesTimeChangedTrip(dive_trip *trip, timestamp_t delta, const QVector<dive *> &dives); // The tree model has two levels. At the top level, we have either trips or dives // that do not belong to trips. Such a top-level item is represented by the "Item" @@ -174,8 +177,8 @@ class DiveTripModelList : public DiveTripModelBase public slots: 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); - void divesTimeChanged(dive_trip *trip, timestamp_t delta, const QVector<dive *> &dives); + void divesChanged(const QVector<dive *> &dives); + void divesTimeChanged(timestamp_t delta, const QVector<dive *> &dives); // Does nothing in list view. //void divesMovedBetweenTrips(dive_trip *from, dive_trip *to, bool deleteFrom, bool createTo, const QVector<dive *> &dives); void currentDiveChanged(); @@ -189,7 +192,7 @@ private: QVariant data(const QModelIndex &index, int role) const override; void filterFinished() override; bool lessThan(const QModelIndex &i1, const QModelIndex &i2) const override; - void changeDiveSelection(dive_trip *trip, const QVector<dive *> &dives, bool select) override; + void changeDiveSelection(const QVector<dive *> &dives, bool select) override; dive *diveOrNull(const QModelIndex &index) const override; bool setShown(const QModelIndex &idx, bool shown); |