Dive list: clear internal data when clearing model

The DiveListModelBase::clear() implementation was flawed: It cleared
the data in the core, but left the data in the model untouched.
The code was relying on the fact that the caller would reset the
model manually. Not a good idea.

Therefore, clear the internal data to keep the model consistent at
all times.

Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
This commit is contained in:
Berthold Stoeger 2019-11-18 18:44:17 +01:00 committed by Dirk Hohndel
parent 9f573df971
commit 635d67ee7f
2 changed files with 14 additions and 0 deletions

View file

@ -100,6 +100,7 @@ protected:
static QVariant tripData(const dive_trip *trip, int column, int role);
virtual dive *diveOrNull(const QModelIndex &index) const = 0; // Returns a dive if this index represents a dive, null otherwise
virtual void clearData() = 0;
};
class DiveTripModelTree : public DiveTripModelBase
@ -119,6 +120,7 @@ public:
DiveTripModelTree(QObject *parent = nullptr);
private:
int rowCount(const QModelIndex &parent) const override;
void clearData() 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;
@ -184,6 +186,7 @@ public:
DiveTripModelList(QObject *parent = nullptr);
private:
int rowCount(const QModelIndex &parent) const override;
void clearData() 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;