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 // SPDX-FileCopyrightText: 2009 Thibaut GRIDEL <tgridel@free.fr> 0005 // 0006 0007 #include "GPXdescTagHandler.h" 0008 0009 #include "MarbleDebug.h" 0010 0011 #include "GPXElementDictionary.h" 0012 #include "GeoParser.h" 0013 #include "GeoDataPlacemark.h" 0014 #include "GeoDataPoint.h" 0015 0016 namespace Marble 0017 { 0018 namespace gpx 0019 { 0020 GPX_DEFINE_TAG_HANDLER(desc) 0021 0022 GeoNode* GPXdescTagHandler::parse(GeoParser& parser) const 0023 { 0024 Q_ASSERT(parser.isStartElement() && parser.isValidElement(QLatin1String(gpxTag_desc))); 0025 0026 GeoStackItem parentItem = parser.parentElement(); 0027 if (parentItem.represents(gpxTag_wpt) 0028 || parentItem.represents(gpxTag_trk) 0029 || parentItem.represents(gpxTag_rtept)) 0030 { 0031 GeoDataPlacemark* placemark = parentItem.nodeAs<GeoDataPlacemark>(); 0032 0033 QString desc = placemark->description(); 0034 if (!desc.isEmpty()) 0035 { 0036 desc += QLatin1String("<br/>"); 0037 } 0038 placemark->setDescription(desc.append(parser.readElementText().trimmed().replace(QLatin1Char('\n'),QLatin1String("\n<br/>")))); 0039 placemark->setDescriptionCDATA(true); 0040 0041 } 0042 else if (parentItem.represents(gpxTag_rte)) 0043 { 0044 GeoDataFeature* route = parentItem.nodeAs<GeoDataFeature>(); 0045 QString desc = route->description(); 0046 if (!desc.isEmpty()) 0047 { 0048 desc += QLatin1String("<br/>"); 0049 } 0050 route->setDescription(desc.append(parser.readElementText().trimmed().replace(QLatin1Char('\n'),QLatin1String("\n<br/>")))); 0051 route->setDescriptionCDATA(true); 0052 } 0053 return nullptr; 0054 } 0055 0056 } // namespace gpx 0057 0058 } // namespace Marble