File indexing completed on 2024-05-19 03:53:08
0001 // SPDX-License-Identifier: LGPL-2.1-or-later 0002 // 0003 // SPDX-FileCopyrightText: 2009 Anders Lund <anders@alweb.dk> 0004 // 0005 0006 #include "GPXurlTagHandler.h" 0007 0008 #include "MarbleDebug.h" 0009 0010 #include "GPXElementDictionary.h" 0011 #include "GeoParser.h" 0012 #include "GeoDataPlacemark.h" 0013 #include "GeoDataData.h" 0014 #include "GeoDataExtendedData.h" 0015 0016 namespace Marble 0017 { 0018 namespace gpx 0019 { 0020 GPX_DEFINE_TAG_HANDLER_10(url) 0021 0022 // Gpx 1.0 url element provides a link related to a waypoint, and is 0023 // inserted into the waypoint description as this seems to be the 0024 // simplest means to make it available to the user. 0025 // In addition, url properties are saved to extendedData. 0026 // The insertion is done in the urlname element, which is the link text. 0027 GeoNode* GPXurlTagHandler::parse(GeoParser& parser) const 0028 { 0029 Q_ASSERT(parser.isStartElement() && parser.isValidElement(QLatin1String(gpxTag_url))); 0030 0031 GeoStackItem parentItem = parser.parentElement(); 0032 if (parentItem.represents(gpxTag_wpt)) 0033 { 0034 GeoDataPlacemark* placemark = parentItem.nodeAs<GeoDataPlacemark>(); 0035 0036 QString url = parser.readElementText().trimmed(); 0037 0038 GeoDataExtendedData extendedData = placemark->extendedData(); 0039 extendedData.addValue(GeoDataData(QStringLiteral("url"), url)); 0040 placemark->setExtendedData(extendedData); 0041 } 0042 0043 return nullptr; 0044 } 0045 0046 } // namespace gpx 0047 0048 } // namespace Marble