summaryrefslogtreecommitdiffstats
path: root/qt-models/divetripmodel.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'qt-models/divetripmodel.cpp')
-rw-r--r--qt-models/divetripmodel.cpp14
1 files changed, 14 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();