diff --git a/src/apps/marble-maps/PlacemarkDialog.qml b/src/apps/marble-maps/PlacemarkDialog.qml --- a/src/apps/marble-maps/PlacemarkDialog.qml +++ b/src/apps/marble-maps/PlacemarkDialog.qml @@ -91,12 +91,18 @@ IconText { width: parent.width - visible: placemark != null && placemark.elevation != "" + visible: placemark !== null && placemark.elevation !== "" text: placemark === null ? "" : ("Elevation : " + placemark.elevation + " m") } IconText { width: parent.width + visible: text.length > 0 + text: placemark === null ? "" : placemark.amenity + } + + IconText { + width: parent.width visible: text.length > 0 && (!condensed || name.text === "") text: placemark === null ? "" : placemark.address maximumLineCount: 4 diff --git a/src/lib/marble/declarative/Placemark.h b/src/lib/marble/declarative/Placemark.h --- a/src/lib/marble/declarative/Placemark.h +++ b/src/lib/marble/declarative/Placemark.h @@ -37,6 +37,7 @@ Q_PROPERTY(QString openingHours READ openingHours NOTIFY openingHoursChanged) Q_PROPERTY(QString coordinates READ coordinates NOTIFY coordinatesChanged) Q_PROPERTY(QString elevation READ elevation NOTIFY elevationChanged) + Q_PROPERTY(QString amenity READ amenity NOTIFY amenityChanged) Q_PROPERTY(double longitude READ longitude NOTIFY coordinatesChanged) Q_PROPERTY(double latitude READ latitude NOTIFY coordinatesChanged) @@ -58,6 +59,7 @@ QString openingHours() const; QString coordinates() const; QString elevation() const; + QString amenity() const; double longitude() const; double latitude() const; @@ -74,6 +76,7 @@ void fuelDetailsChanged(); void openingHoursChanged(); void elevationChanged(); + void amenityChanged(); private: void addTagValue(QString &target, const QString &key) const; @@ -89,6 +92,7 @@ mutable QString m_wikipedia; mutable QString m_openingHours; mutable QString m_elevation; + mutable QString m_amenity; }; } diff --git a/src/lib/marble/declarative/Placemark.cpp b/src/lib/marble/declarative/Placemark.cpp --- a/src/lib/marble/declarative/Placemark.cpp +++ b/src/lib/marble/declarative/Placemark.cpp @@ -37,6 +37,7 @@ m_fuelDetails = QString(); m_openingHours = QString(); m_elevation = QString(); + m_amenity = QString(); emit coordinatesChanged(); emit nameChanged(); emit descriptionChanged(); @@ -45,6 +46,7 @@ emit wikipediaChanged(); emit openingHoursChanged(); emit elevationChanged(); + emit amenityChanged(); if (m_placemark.visualCategory() == GeoDataFeature::TransportFuel) { emit fuelDetailsChanged(); } @@ -185,6 +187,37 @@ return m_elevation; } +QString Placemark::amenity() const +{ + if (!m_amenity.isEmpty()){ + return m_amenity; + } + + OsmPlacemarkData data = m_placemark.osmData(); + + if (data.containsTagKey("shop") && !data.tagValue("shop").isEmpty()){ + QString shop = data.tagValue("shop"); + shop[0] = shop[0].toUpper(); + if (shop == "Clothes" && data.containsTagKey("clothes") && !data.tagValue("clothes").isEmpty()){ + QString clothes = data.tagValue("clothes"); + clothes[0] = clothes[0].toUpper(); + m_amenity = "Shop : " + shop + " (" + clothes + ")"; + } else if (shop == "Clothes" && data.containsTagKey("designation") && !data.tagValue("designation").isEmpty()){ + QString designation = data.tagValue("designation"); + designation[0] = designation[0].toUpper(); + m_amenity = "Shop : " + shop + " (" + designation + ")"; + } else { + m_amenity = "Shop : " + shop; + } + } else if (data.containsTagKey("amenity") && !data.tagValue("amenity").isEmpty()){ + QString amenity = data.tagValue("amenity"); + amenity[0] = amenity[0].toUpper(); + m_amenity = amenity; + } + + return m_amenity; +} + void Placemark::setName(const QString & name) { if (m_placemark.name() == name) {