File indexing completed on 2024-05-12 03:51:44
0001 // SPDX-License-Identifier: LGPL-2.1-or-later 0002 // 0003 // SPDX-FileCopyrightText: 2009 Anders Lund <anders@alweb.dk> 0004 // 0005 0006 #include "GPXurlnameTagHandler.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(urlname) 0021 0022 // completes gpx 1.0 url element 0023 GeoNode* GPXurlnameTagHandler::parse(GeoParser& parser) const 0024 { 0025 Q_ASSERT(parser.isStartElement() && parser.isValidElement(QLatin1String(gpxTag_urlname))); 0026 0027 GeoStackItem parentItem = parser.parentElement(); 0028 if (parentItem.represents(gpxTag_wpt)) 0029 { 0030 GeoDataPlacemark* placemark = parentItem.nodeAs<GeoDataPlacemark>(); 0031 QString text = parser.readElementText().trimmed(); 0032 // no reason to save for now! 0033 // GeoDataExtendedData extendedData = placemark->extendedData(); 0034 // extendedData.addValue(GeoDataData("urlname", text)); 0035 // placemark->setExtendedData(extendedData); 0036 0037 const QString link = QStringLiteral("<br/>Link: <a href=\"%1\">%2</a>") 0038 .arg(placemark->extendedData().value(QStringLiteral("url")).value().toString()) 0039 .arg(text); 0040 placemark->setDescription(placemark->description().append(link)); 0041 placemark->setDescriptionCDATA(true); 0042 } 0043 return nullptr; 0044 } 0045 0046 } // namespace gpx 0047 0048 } // namespace Marble