maplocationmodel: implement the clear() and add() methods

- add() will be used to add a MapLocation to the model with
beginInsertRows()...endInsertRows()
- clear() will be used to clear the model with beginRemoveRows()...
endRemoveRows()

NOTE: emiting dataChanged() does not seem to update the QML view for
this model so calling being<..>Rows() seems to be the "correct Qt
approach" to do this.

Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
This commit is contained in:
Lubomir I. Ivanov 2017-07-17 22:12:04 +03:00 committed by Dirk Hohndel
parent 52316229cd
commit f4e6df475e
2 changed files with 20 additions and 1 deletions

View file

@ -30,7 +30,7 @@ MapLocationModel::MapLocationModel(QObject *parent) : QAbstractListModel(parent)
MapLocationModel::~MapLocationModel()
{
qDeleteAll(m_mapLocations);
clear();
}
QVariant MapLocationModel::data( const QModelIndex & index, int role ) const
@ -63,3 +63,20 @@ MapLocation *MapLocationModel::get(int row)
return NULL;
return m_mapLocations.at(row);
}
void MapLocationModel::add(MapLocation *location)
{
beginInsertRows(QModelIndex(), m_mapLocations.size(), m_mapLocations.size());
m_mapLocations.append(location);
endInsertRows();
}
void MapLocationModel::clear()
{
if (!m_mapLocations.size())
return;
beginRemoveRows(QModelIndex(), 0, m_mapLocations.size() - 1);
qDeleteAll(m_mapLocations);
m_mapLocations.clear();
endRemoveRows();
}

View file

@ -44,6 +44,8 @@ public:
QVariant data(const QModelIndex &index, int role) const override;
int rowCount(const QModelIndex &parent) const override;
int count();
void add(MapLocation *);
void clear();
protected:
QHash<int, QByteArray> roleNames() const;