QML UI: correctly notify of model change

This may seem weird, but it seems to work to make sure that the model
actually is correctly updated when updating a dive.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
Dirk Hohndel 2016-01-27 11:27:41 -08:00
parent 9342dedb26
commit 6f953d51de
2 changed files with 19 additions and 2 deletions

View file

@ -16,12 +16,27 @@ void DiveListModel::addDive(dive *d)
endInsertRows();
}
void DiveListModel::insertDive(int i, DiveObjectHelper *newDive)
{
beginInsertRows(QModelIndex(), i, i);
m_dives.insert(i, newDive);
endInsertRows();
}
void DiveListModel::removeDive(int i)
{
beginRemoveRows(QModelIndex(), i, i);
m_dives.removeAt(i);
endRemoveRows();
}
void DiveListModel::updateDive(dive *d)
{
for (int i = 0; i < m_dives.count(); i++) {
if (m_dives.at(i)->id() == d->id) {
DiveObjectHelper *newDive = new DiveObjectHelper(d);
m_dives.replace(i, newDive);
removeDive(i);
insertDive(i, newDive);
break;
}
}
@ -88,4 +103,4 @@ DiveListModel *DiveListModel::instance()
DiveObjectHelper* DiveListModel::at(int i){
return m_dives.at(i);
}
}

View file

@ -20,6 +20,8 @@ public:
static DiveListModel *instance();
DiveListModel(QObject *parent = 0);
void addDive(dive *d);
void insertDive(int i, DiveObjectHelper *newDive);
void removeDive(int i);
void updateDive(dive *d);
void clear();
int rowCount(const QModelIndex &parent = QModelIndex()) const;