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