File indexing completed on 2024-05-05 03:49:19

0001 // SPDX-License-Identifier: LGPL-2.1-or-later
0002 //
0003 // SPDX-FileCopyrightText: 2017 Sergey Popov <sergobot@protonmail.com>
0004 //
0005 
0006 #ifndef MARBLE_DECLARATIVE_ROUTERELATIONMODEL_H
0007 #define MARBLE_DECLARATIVE_ROUTERELATIONMODEL_H
0008 
0009 #include <QAbstractListModel>
0010 #include <QSet>
0011 
0012 #include "GeoDataRelation.h"
0013 
0014 namespace Marble {
0015 
0016 class RouteRelationModel : public QAbstractListModel
0017 {
0018     Q_OBJECT
0019 
0020 public:
0021     enum RouteRelationRoles {
0022         IconSource = Qt::UserRole + 1,
0023         Description,
0024         Network,
0025         RouteColor,
0026         TextColor,
0027         RouteFrom,
0028         RouteTo,
0029         RouteRef,
0030         RouteVia,
0031         OsmId,
0032         RouteVisible
0033     };
0034 
0035     explicit RouteRelationModel(QObject* parent = nullptr);
0036     
0037     void setRelations(const QSet<const GeoDataRelation *> &relations);
0038     
0039     int rowCount(const QModelIndex & parent = QModelIndex()) const override;
0040     
0041     QVariant data(const QModelIndex & index, int role = Qt::DisplayRole) const override;
0042 
0043 protected:
0044     QHash<int, QByteArray> roleNames() const override;
0045 
0046 private:
0047     static QString svgFile(const QString &path);
0048 
0049     QVector<const Marble::GeoDataRelation*> m_relations;
0050     QMap<QString, QString> m_networks;
0051 };
0052 
0053 }
0054 
0055 #endif // ROUTERELATIONMODEL