summaryrefslogtreecommitdiffstats
path: root/qt-models
diff options
context:
space:
mode:
Diffstat (limited to 'qt-models')
-rw-r--r--qt-models/divetripmodel.cpp20
-rw-r--r--qt-models/divetripmodel.h6
2 files changed, 25 insertions, 1 deletions
diff --git a/qt-models/divetripmodel.cpp b/qt-models/divetripmodel.cpp
index b76683175..eea4fcdba 100644
--- a/qt-models/divetripmodel.cpp
+++ b/qt-models/divetripmodel.cpp
@@ -379,6 +379,15 @@ void DiveTripModelBase::clear()
endResetModel();
}
+void DiveTripModelBase::reset()
+{
+ beginResetModel();
+ clearData();
+ populate();
+ endResetModel();
+ initSelection();
+}
+
DiveTripModelBase::DiveTripModelBase(QObject *parent) : QAbstractItemModel(parent)
{
}
@@ -561,7 +570,11 @@ DiveTripModelTree::DiveTripModelTree(QObject *parent) : DiveTripModelBase(parent
connect(&diveListNotifier, &DiveListNotifier::tripChanged, this, &DiveTripModelTree::tripChanged);
connect(&diveListNotifier, &DiveListNotifier::filterReset, this, &DiveTripModelTree::filterReset);
- // Fill model
+ populate();
+}
+
+void DiveTripModelTree::populate()
+{
for (int i = 0; i < dive_table.nr ; ++i) {
dive *d = get_dive(i);
update_cylinder_related_info(d);
@@ -1286,6 +1299,11 @@ DiveTripModelList::DiveTripModelList(QObject *parent) : DiveTripModelBase(parent
connect(&diveListNotifier, &DiveListNotifier::divesSelected, this, &DiveTripModelList::divesSelected);
connect(&diveListNotifier, &DiveListNotifier::filterReset, this, &DiveTripModelList::filterReset);
+ populate();
+}
+
+void DiveTripModelList::populate()
+{
// Fill model
items.reserve(dive_table.nr);
for (int i = 0; i < dive_table.nr ; ++i)
diff --git a/qt-models/divetripmodel.h b/qt-models/divetripmodel.h
index eed6913cf..ff15893eb 100644
--- a/qt-models/divetripmodel.h
+++ b/qt-models/divetripmodel.h
@@ -63,6 +63,9 @@ public:
// Clear all dives
void clear();
+ // Reload data
+ void reset();
+
Qt::ItemFlags flags(const QModelIndex &index) const;
QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const override;
bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole) override;
@@ -91,6 +94,7 @@ protected:
virtual dive *diveOrNull(const QModelIndex &index) const = 0; // Returns a dive if this index represents a dive, null otherwise
virtual void clearData() = 0;
+ virtual void populate() = 0;
};
class DiveTripModelTree : public DiveTripModelBase
@@ -112,6 +116,7 @@ public:
private:
int rowCount(const QModelIndex &parent) const override;
void clearData() override;
+ void populate() override;
QModelIndex index(int row, int column, const QModelIndex &parent) const override;
QModelIndex parent(const QModelIndex &index) const override;
QVariant data(const QModelIndex &index, int role) const override;
@@ -179,6 +184,7 @@ public:
private:
int rowCount(const QModelIndex &parent) const override;
void clearData() override;
+ void populate() override;
QModelIndex index(int row, int column, const QModelIndex &parent) const override;
QModelIndex parent(const QModelIndex &index) const override;
QVariant data(const QModelIndex &index, int role) const override;