summaryrefslogtreecommitdiffstats
path: root/qt-models
diff options
context:
space:
mode:
Diffstat (limited to 'qt-models')
-rw-r--r--qt-models/divetripmodel.cpp14
-rw-r--r--qt-models/divetripmodel.h3
2 files changed, 17 insertions, 0 deletions
diff --git a/qt-models/divetripmodel.cpp b/qt-models/divetripmodel.cpp
index 04af9c47f..ee0620c5e 100644
--- a/qt-models/divetripmodel.cpp
+++ b/qt-models/divetripmodel.cpp
@@ -3,6 +3,7 @@
#include "core/divefilter.h"
#include "core/gettextfromc.h"
#include "core/metrics.h"
+#include "core/selection.h"
#include "core/trip.h"
#include "core/qthelper.h"
#include "core/divesite.h"
@@ -372,6 +373,19 @@ void DiveTripModelBase::resetModel(DiveTripModelBase::Layout layout)
currentModel.reset(new DiveTripModelList);
}
+// After resetting the model, the higher up model or view may call this
+// function to get informed on the current selection.
+// TODO: Currently, this reads and resets the selection. Make this more
+// efficient by maintaining a list of selected dives.
+void DiveTripModelBase::initSelection()
+{
+ std::vector<dive *> dives = getDiveSelection();
+ if (!dives.empty())
+ setSelection(dives, current_dive);
+ else
+ select_newest_visible_dive();
+}
+
void DiveTripModelBase::clear()
{
beginResetModel();
diff --git a/qt-models/divetripmodel.h b/qt-models/divetripmodel.h
index 8756ba217..4f5b55f02 100644
--- a/qt-models/divetripmodel.h
+++ b/qt-models/divetripmodel.h
@@ -72,6 +72,9 @@ public:
// by instance().
static void resetModel(Layout layout);
+ // Call after having set the model to be informed of the current selection.
+ void initSelection();
+
// Clear all dives
void clear();