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 "GPXcmtTagHandler.h" 0007 0008 #include "MarbleDebug.h" 0009 0010 #include "GPXElementDictionary.h" 0011 #include "GeoParser.h" 0012 #include "GeoDataPlacemark.h" 0013 0014 // type is used in wpt, rte and trk to provide some sort of keyword, like "Geocache/traditional cache", 0015 // and in link to provide a mimetype 0016 0017 namespace Marble 0018 { 0019 namespace gpx 0020 { 0021 GPX_DEFINE_TAG_HANDLER(cmt) 0022 0023 0024 GeoNode* GPXcmtTagHandler::parse(GeoParser& parser) const 0025 { 0026 Q_ASSERT(parser.isStartElement() && parser.isValidElement(QLatin1String(gpxTag_cmt))); 0027 0028 GeoStackItem parentItem = parser.parentElement(); 0029 if (parentItem.represents(gpxTag_wpt)) 0030 { 0031 GeoDataPlacemark* placemark = parentItem.nodeAs<GeoDataPlacemark>(); 0032 0033 QString cmt = parser.readElementText().trimmed(); 0034 if (!cmt.isEmpty()) 0035 { 0036 QString desc = placemark->description(); 0037 if (!desc.isEmpty()) 0038 { 0039 desc += QLatin1String("<br/>"); 0040 } 0041 placemark->setDescription(desc.append(cmt.replace(QLatin1Char('\n'),QLatin1String("\n<br/>")))); 0042 placemark->setDescriptionCDATA(true); 0043 } 0044 } 0045 return nullptr; 0046 } 0047 0048 } // namespace gpx 0049 0050 } // namespace Marble