Changeset View
Changeset View
Standalone View
Standalone View
src/lib/marble/declarative/Placemark.h
1 | // | 1 | // | ||
---|---|---|---|---|---|
2 | // This file is part of the Marble Virtual Globe. | 2 | // This file is part of the Marble Virtual Globe. | ||
3 | // | 3 | // | ||
4 | // This program is free software licensed under the GNU LGPL. You can | 4 | // This program is free software licensed under the GNU LGPL. You can | ||
5 | // find a copy of this license in LICENSE.txt in the top directory of | 5 | // find a copy of this license in LICENSE.txt in the top directory of | ||
6 | // the source code. | 6 | // the source code. | ||
7 | // | 7 | // | ||
8 | // Copyright 2012 Dennis Nienhüser <nienhueser@kde.org> | 8 | // Copyright 2012 Dennis Nienhüser <nienhueser@kde.org> | ||
9 | // | 9 | // | ||
10 | 10 | | |||
11 | #ifndef MARBLE_DECLARATIVE_PLACEMARK_H | 11 | #ifndef MARBLE_DECLARATIVE_PLACEMARK_H | ||
12 | #define MARBLE_DECLARATIVE_PLACEMARK_H | 12 | #define MARBLE_DECLARATIVE_PLACEMARK_H | ||
13 | 13 | | |||
14 | #include "GeoDataPlacemark.h" | 14 | #include "GeoDataPlacemark.h" | ||
15 | #include "RouteRelationModel.h" | ||||
15 | 16 | | |||
16 | #include <QObject> | 17 | #include <QObject> | ||
17 | #include <QtQml> | 18 | #include <QtQml> | ||
18 | #include <QStringListModel> | 19 | #include <QStringListModel> | ||
19 | 20 | | |||
20 | namespace Marble { | 21 | namespace Marble { | ||
21 | 22 | | |||
22 | /** | 23 | /** | ||
Show All 11 Lines | 27 | { | |||
34 | Q_PROPERTY(QString openingHours READ openingHours NOTIFY openingHoursChanged) | 35 | Q_PROPERTY(QString openingHours READ openingHours NOTIFY openingHoursChanged) | ||
35 | Q_PROPERTY(QString coordinates READ coordinates NOTIFY coordinatesChanged) | 36 | Q_PROPERTY(QString coordinates READ coordinates NOTIFY coordinatesChanged) | ||
36 | Q_PROPERTY(QString wheelchairInfo READ wheelchairInfo NOTIFY wheelchairInfoChanged) | 37 | Q_PROPERTY(QString wheelchairInfo READ wheelchairInfo NOTIFY wheelchairInfoChanged) | ||
37 | Q_PROPERTY(QString wifiAvailable READ wifiAvailable NOTIFY wifiAvailabilityChanged) | 38 | Q_PROPERTY(QString wifiAvailable READ wifiAvailable NOTIFY wifiAvailabilityChanged) | ||
38 | Q_PROPERTY(double longitude READ longitude NOTIFY coordinatesChanged) | 39 | Q_PROPERTY(double longitude READ longitude NOTIFY coordinatesChanged) | ||
39 | Q_PROPERTY(double latitude READ latitude NOTIFY coordinatesChanged) | 40 | Q_PROPERTY(double latitude READ latitude NOTIFY coordinatesChanged) | ||
40 | Q_PROPERTY(QStringList tags READ tags NOTIFY tagsChanged) | 41 | Q_PROPERTY(QStringList tags READ tags NOTIFY tagsChanged) | ||
41 | 42 | | |||
43 | Q_PROPERTY(RouteRelationModel* relationModel READ relationModel NOTIFY relationModelChanged) | ||||
44 | | ||||
42 | public: | 45 | public: | ||
43 | /** Constructor */ | 46 | /** Constructor */ | ||
44 | explicit Placemark( QObject *parent = 0 ); | 47 | explicit Placemark( QObject *parent = 0 ); | ||
45 | 48 | | |||
46 | void setGeoDataPlacemark( const Marble::GeoDataPlacemark &placemark ); | 49 | void setGeoDataPlacemark( const Marble::GeoDataPlacemark &placemark ); | ||
47 | 50 | | |||
48 | Marble::GeoDataPlacemark & placemark(); | 51 | Marble::GeoDataPlacemark & placemark(); | ||
49 | const Marble::GeoDataPlacemark & placemark() const; | 52 | const Marble::GeoDataPlacemark & placemark() const; | ||
50 | 53 | | |||
51 | QString name() const; | 54 | QString name() const; | ||
52 | QString description() const; | 55 | QString description() const; | ||
53 | QString address() const; | 56 | QString address() const; | ||
54 | QString website() const; | 57 | QString website() const; | ||
55 | QString wikipedia() const; | 58 | QString wikipedia() const; | ||
56 | QString openingHours() const; | 59 | QString openingHours() const; | ||
57 | QString coordinates() const; | 60 | QString coordinates() const; | ||
58 | QString wheelchairInfo() const; | 61 | QString wheelchairInfo() const; | ||
59 | QString wifiAvailable() const; | 62 | QString wifiAvailable() const; | ||
60 | double longitude() const; | 63 | double longitude() const; | ||
61 | double latitude() const; | 64 | double latitude() const; | ||
62 | const QStringList & tags() const; | 65 | const QStringList & tags() const; | ||
63 | 66 | | |||
67 | void setRelations(const QVector<const Marble::GeoDataRelation*> &relations); | ||||
68 | RouteRelationModel* relationModel(); | ||||
69 | | ||||
64 | public Q_SLOTS: | 70 | public Q_SLOTS: | ||
65 | void setName(const QString &name); | 71 | void setName(const QString &name); | ||
66 | 72 | | |||
67 | Q_SIGNALS: | 73 | Q_SIGNALS: | ||
68 | void nameChanged(); | 74 | void nameChanged(); | ||
69 | void coordinatesChanged(); | 75 | void coordinatesChanged(); | ||
70 | void descriptionChanged(); | 76 | void descriptionChanged(); | ||
71 | void addressChanged(); | 77 | void addressChanged(); | ||
72 | void websiteChanged(); | 78 | void websiteChanged(); | ||
73 | void wikipediaChanged(); | 79 | void wikipediaChanged(); | ||
74 | void openingHoursChanged(); | 80 | void openingHoursChanged(); | ||
75 | void wheelchairInfoChanged(); | 81 | void wheelchairInfoChanged(); | ||
76 | void wifiAvailabilityChanged(); | 82 | void wifiAvailabilityChanged(); | ||
77 | void tagsChanged(); | 83 | void tagsChanged(); | ||
78 | 84 | | |||
85 | void relationModelChanged(); | ||||
86 | | ||||
79 | private: | 87 | private: | ||
80 | bool addTagValue(QString &target, const QString &key, const QString &format=QString(), const QString separator = QStringLiteral(" · ")) const; | 88 | bool addTagValue(QString &target, const QString &key, const QString &format=QString(), const QString separator = QStringLiteral(" · ")) const; | ||
81 | void addFirstTagValueOf(QString &target, const QStringList &keys) const; | 89 | void addFirstTagValueOf(QString &target, const QStringList &keys) const; | ||
82 | void addTagDescription(QString &target, const QString &key, const QString &value, const QString &description) const; | 90 | void addTagDescription(QString &target, const QString &key, const QString &value, const QString &description) const; | ||
83 | void append(QString &target, const QString &value) const; | 91 | void append(QString &target, const QString &value) const; | ||
84 | QString addressFromOsmData() const; | 92 | QString addressFromOsmData() const; | ||
85 | QString formatStreet(const QString &street, const QString &houseNumber) const; | 93 | QString formatStreet(const QString &street, const QString &houseNumber) const; | ||
86 | void updateTags(); | 94 | void updateTags(); | ||
87 | 95 | | |||
88 | Marble::GeoDataPlacemark m_placemark; | 96 | Marble::GeoDataPlacemark m_placemark; | ||
89 | mutable QString m_address; // mutable to allow lazy calculation in the getter | 97 | mutable QString m_address; // mutable to allow lazy calculation in the getter | ||
90 | mutable QString m_description; | 98 | mutable QString m_description; | ||
91 | mutable QString m_website; | 99 | mutable QString m_website; | ||
92 | mutable QString m_wikipedia; | 100 | mutable QString m_wikipedia; | ||
93 | mutable QString m_openingHours; | 101 | mutable QString m_openingHours; | ||
94 | mutable QString m_wheelchairInfo; | 102 | mutable QString m_wheelchairInfo; | ||
95 | mutable QString m_wifiAvailable; | 103 | mutable QString m_wifiAvailable; | ||
96 | QStringList m_tags; | 104 | QStringList m_tags; | ||
105 | | ||||
106 | RouteRelationModel m_relationModel; | ||||
97 | }; | 107 | }; | ||
98 | 108 | | |||
99 | } | 109 | } | ||
100 | 110 | | |||
101 | QML_DECLARE_TYPE(Marble::Placemark) | 111 | QML_DECLARE_TYPE(Marble::Placemark) | ||
102 | 112 | | |||
103 | #endif // MARBLE_DECLARATIVE_PLACEMARK_H | 113 | #endif // MARBLE_DECLARATIVE_PLACEMARK_H |