aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Berthold Stoeger <bstoeger@mail.tuwien.ac.at>2019-02-24 23:02:22 +0100
committerGravatar Dirk Hohndel <dirk@hohndel.org>2019-04-12 18:19:07 +0300
commite7063b6b08dff5c35436a5fb16fcf3f81717ca52 (patch)
tree1fcbbd570dc83e88e395712e21457aec7e303dc0
parent7924c7dafb3950116bb553eff35d7801cd5e1c54 (diff)
downloadsubsurface-e7063b6b08dff5c35436a5fb16fcf3f81717ca52.tar.gz
Undo: update dive list if trip changed
In tree-mode, the trip locations are displayed. Update the corresponding entries if the trip changed, by hooking into the tripChanged() signal. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
-rw-r--r--qt-models/divetripmodel.cpp15
-rw-r--r--qt-models/divetripmodel.h2
2 files changed, 16 insertions, 1 deletions
diff --git a/qt-models/divetripmodel.cpp b/qt-models/divetripmodel.cpp
index 46f0b712e..297dffc5d 100644
--- a/qt-models/divetripmodel.cpp
+++ b/qt-models/divetripmodel.cpp
@@ -6,7 +6,6 @@
#include "core/divelist.h"
#include "core/qthelper.h"
#include "core/subsurface-string.h"
-#include "core/subsurface-qt/DiveListNotifier.h"
#include <QIcon>
#include <QDebug>
#include <memory>
@@ -560,6 +559,7 @@ DiveTripModelTree::DiveTripModelTree(QObject *parent) : DiveTripModelBase(parent
connect(&diveListNotifier, &DiveListNotifier::divesSelected, this, &DiveTripModelTree::divesSelected);
connect(&diveListNotifier, &DiveListNotifier::divesDeselected, this, &DiveTripModelTree::divesDeselected);
connect(&diveListNotifier, &DiveListNotifier::currentDiveChanged, this, &DiveTripModelTree::currentDiveChanged);
+ connect(&diveListNotifier, &DiveListNotifier::tripChanged, this, &DiveTripModelTree::tripChanged);
// Fill model
for (int i = 0; i < dive_table.nr ; ++i) {
@@ -913,6 +913,19 @@ void DiveTripModelTree::divesChanged(dive_trip *trip, const QVector<dive *> &div
}
}
+void DiveTripModelTree::tripChanged(dive_trip *trip, TripField)
+{
+ int idx = findTripIdx(trip);
+ if (idx < 0) {
+ // We don't know the trip - this shouldn't happen. We seem to have
+ // missed some signals!
+ qWarning() << "DiveTripModelTree::divesChanged(): unknown trip";
+ return;
+ }
+
+ dataChanged(createIndex(idx, 0, noParent), createIndex(idx, COLUMNS - 1, noParent));
+}
+
static QVector<dive *> filterSelectedDives(const QVector<dive *> &dives)
{
QVector<dive *> res;
diff --git a/qt-models/divetripmodel.h b/qt-models/divetripmodel.h
index 67a4f090d..236dbb1d2 100644
--- a/qt-models/divetripmodel.h
+++ b/qt-models/divetripmodel.h
@@ -3,6 +3,7 @@
#define DIVETRIPMODEL_H
#include "core/dive.h"
+#include "core/subsurface-qt/DiveListNotifier.h"
#include <QAbstractItemModel>
// There are two different representations of the dive list:
@@ -112,6 +113,7 @@ public slots:
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 currentDiveChanged();
+ void tripChanged(dive_trip *trip, TripField);
public:
DiveTripModelTree(QObject *parent = nullptr);