summaryrefslogtreecommitdiffstats
path: root/app/markermodel.h
diff options
context:
space:
mode:
Diffstat (limited to 'app/markermodel.h')
-rw-r--r--app/markermodel.h50
1 files changed, 50 insertions, 0 deletions
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 <QAbstractListModel>
+#include <QGeoCoordinate>
+
+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<int, QByteArray> roleNames() const{
+ QHash<int, QByteArray> roles;
+ roles[positionRole] = "position";
+ return roles;
+ }
+
+private:
+ QList<QGeoCoordinate> m_coordinates;
+};
+
+#endif // MARKERMODEL_H