diff --git a/src/apps/marble-maps/MarbleMaps.qrc b/src/apps/marble-maps/MarbleMaps.qrc --- a/src/apps/marble-maps/MarbleMaps.qrc +++ b/src/apps/marble-maps/MarbleMaps.qrc @@ -57,6 +57,7 @@ material-icons/ic_directions_walk_48px.svg material-icons/ic_navigation_48px.svg material-icons/ic_access_time_48px.svg + material-icons/ic_accessible_black_48px.svg material-icons/ic_place_black_48px.svg material-icons/ic_star_24px.svg material-icons/ic_star_border_24px.svg 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 @@ -109,6 +109,13 @@ IconText { width: parent.width visible: text.length > 0 + text: placemark === null ? "" : placemark.wheelchairInfo + icon: "qrc:/material/wheelchair.svg" + } + + IconText { + width: parent.width + visible: text.length > 0 text: placemark === null ? "" : "" + placemark.coordinates + "" icon: "qrc:/material/place.svg" linkColor: palette.text 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 @@ -33,6 +33,7 @@ Q_PROPERTY(QString wikipedia READ wikipedia NOTIFY wikipediaChanged) Q_PROPERTY(QString openingHours READ openingHours NOTIFY openingHoursChanged) Q_PROPERTY(QString coordinates READ coordinates NOTIFY coordinatesChanged) + Q_PROPERTY(QString wheelchairInfo READ wheelchairInfo NOTIFY wheelchairInfoChanged) Q_PROPERTY(double longitude READ longitude NOTIFY coordinatesChanged) Q_PROPERTY(double latitude READ latitude NOTIFY coordinatesChanged) Q_PROPERTY(QStringList tags READ tags NOTIFY tagsChanged) @@ -53,6 +54,7 @@ QString wikipedia() const; QString openingHours() const; QString coordinates() const; + QString wheelchairInfo() const; double longitude() const; double latitude() const; const QStringList & tags() const; @@ -68,6 +70,7 @@ void websiteChanged(); void wikipediaChanged(); void openingHoursChanged(); + void wheelchairInfoChanged(); void tagsChanged(); private: @@ -85,6 +88,7 @@ mutable QString m_website; mutable QString m_wikipedia; mutable QString m_openingHours; + mutable QString m_wheelchairInfo; QStringList m_tags; }; 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 @@ -323,10 +323,6 @@ addTagDescription(m_description, QStringLiteral("fee"), QStringLiteral("no"), tr("no fee")); addTagValue(m_description, QStringLiteral("description")); addTagValue(m_description, QStringLiteral("old_name"), tr("formerly %1")); - - addTagDescription(m_description, QStringLiteral("wheelchair"), QStringLiteral("yes"), tr("Wheelchair accessible")); - addTagDescription(m_description, QStringLiteral("wheelchair"), QStringLiteral("no"), tr("Not wheelchair accessible")); - addTagDescription(m_description, QStringLiteral("wheelchair"), QStringLiteral("limited"), tr("Limited wheelchair accessibility")); } return m_description; @@ -410,6 +406,36 @@ return m_placemark.coordinate().toString(GeoDataCoordinates::Decimal).trimmed(); } +QString Placemark::wheelchairInfo() const +{ + if (!m_wheelchairInfo.isEmpty()) + return m_wheelchairInfo; + + addTagDescription(m_wheelchairInfo, QStringLiteral("wheelchair"), QStringLiteral("yes"), tr("Wheelchair accessible")); + addTagDescription(m_wheelchairInfo, QStringLiteral("wheelchair"), QStringLiteral("no"), tr("Wheelchair inaccessible")); + addTagDescription(m_wheelchairInfo, QStringLiteral("wheelchair"), QStringLiteral("limited"), tr("Limited wheelchair accessibility")); + addTagDescription(m_wheelchairInfo, QStringLiteral("wheelchair"), QStringLiteral("designated"), tr("Wheelchair access only")); + + // Check if there is localized description + auto const & osmData = m_placemark.osmData(); + QStringList const uiLanguages = QLocale::system().uiLanguages(); + foreach (const QString &uiLanguage, uiLanguages) { + for (auto tagIter = osmData.tagsBegin(), end = osmData.tagsEnd(); tagIter != end; ++tagIter) { + if (tagIter.key().startsWith(QLatin1String("wheelchair:description:"))) { + QStringRef const tagLanguage = tagIter.key().midRef(23); + if (tagLanguage == uiLanguage) { + append(m_wheelchairInfo, tagIter.value()); + return m_wheelchairInfo; + } + } + } + } + + addTagValue(m_wheelchairInfo, "wheelchair:description"); + + return m_wheelchairInfo; +} + void Placemark::setName(const QString & name) { if (m_placemark.displayName() == name) {