diff options
Diffstat (limited to 'qt-models')
-rw-r--r-- | qt-models/divetripmodel.cpp | 14 | ||||
-rw-r--r-- | qt-models/divetripmodel.h | 3 |
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(); |