From 9d57e5b16843759ca97d3cdc6f0310cf4527810a Mon Sep 17 00:00:00 2001 From: zheng_wenlong Date: Fri, 30 Nov 2018 13:23:46 +0900 Subject: add aw navigation --- app/markermodel.h | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 app/markermodel.h (limited to 'app/markermodel.h') diff --git a/app/markermodel.h b/app/markermodel.h new file mode 100644 index 0000000..742dd39 --- /dev/null +++ b/app/markermodel.h @@ -0,0 +1,50 @@ +#ifndef MARKERMODEL_H +#define MARKERMODEL_H + +#include +#include + +class MarkerModel : public QAbstractListModel +{ + Q_OBJECT + +public: + using QAbstractListModel::QAbstractListModel; + enum MarkerRoles{positionRole = Qt::UserRole + 1}; + + Q_INVOKABLE void addMarker(const QGeoCoordinate &coordinate){ + beginInsertRows(QModelIndex(), rowCount(), rowCount()); + m_coordinates.append(coordinate); + endInsertRows(); + } + + Q_INVOKABLE void removeMarker(){ + beginResetModel(); + m_coordinates.clear(); + endResetModel(); + } + + int rowCount(const QModelIndex &parent = QModelIndex()) const override{ + Q_UNUSED(parent) + return m_coordinates.count(); + } + + QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override{ + if (index.row() < 0 || index.row() >= m_coordinates.count()) + return QVariant(); + if(role== MarkerModel::positionRole) + return QVariant::fromValue(m_coordinates[index.row()]); + return QVariant(); + } + + QHash roleNames() const{ + QHash roles; + roles[positionRole] = "position"; + return roles; + } + +private: + QList m_coordinates; +}; + +#endif // MARKERMODEL_H -- cgit 1.2.3-korg