diff options
Diffstat (limited to 'qt-models/maplocationmodel.h')
-rw-r--r-- | qt-models/maplocationmodel.h | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/qt-models/maplocationmodel.h b/qt-models/maplocationmodel.h new file mode 100644 index 000000000..e398a8091 --- /dev/null +++ b/qt-models/maplocationmodel.h @@ -0,0 +1,60 @@ +// SPDX-License-Identifier: GPL-2.0 +#ifndef MAPLOCATIONMODEL_H +#define MAPLOCATIONMODEL_H + +#include <QObject> +#include <QList> +#include <QHash> +#include <QByteArray> +#include <QAbstractListModel> + +class MapLocation : public QObject +{ + Q_OBJECT + Q_PROPERTY(qreal latitude MEMBER m_latitude) + Q_PROPERTY(qreal longitude MEMBER m_longitude) + +public: + explicit MapLocation(); + explicit MapLocation(qreal lat, qreal lng); + + QVariant getRole(int role) const; + + enum Roles { + RoleLatitude = Qt::UserRole + 1, + RoleLongitude + }; + +private: + qreal m_latitude; + qreal m_longitude; +}; + +class MapLocationModel : public QAbstractListModel +{ + Q_OBJECT + Q_PROPERTY(int count READ count NOTIFY countChanged) + +public: + MapLocationModel(QObject *parent = NULL); + ~MapLocationModel(); + + Q_INVOKABLE MapLocation *get(int row); + + QVariant data(const QModelIndex &index, int role) const override; + int rowCount(const QModelIndex &parent) const override; + int count(); + +protected: + QHash<int, QByteArray> roleNames() const; + +private: + QList<MapLocation *> m_mapLocations; + QHash<int, QByteArray> m_roles; + +signals: + void countChanged(int c); + +}; + +#endif |