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 "GPXtypeTagHandler.h" 0007 0008 #include "MarbleDebug.h" 0009 0010 #include "GPXElementDictionary.h" 0011 #include "GeoParser.h" 0012 #include "GeoDataPlacemark.h" 0013 #include "GeoDataPoint.h" 0014 0015 namespace Marble 0016 { 0017 namespace gpx 0018 { 0019 GPX_DEFINE_TAG_HANDLER(type) 0020 0021 // type is used in wpt, rte and trk to provide some sort of keyword, like "Geocache/traditional cache", 0022 // and in link to provide a mimetype 0023 0024 GeoNode* GPXtypeTagHandler::parse(GeoParser& parser) const 0025 { 0026 Q_ASSERT(parser.isStartElement() && parser.isValidElement(QLatin1String(gpxTag_type))); 0027 0028 GeoStackItem parentItem = parser.parentElement(); 0029 if (parentItem.represents(gpxTag_wpt) 0030 || parentItem.represents(gpxTag_trk) 0031 || parentItem.represents(gpxTag_rtept)) 0032 { 0033 GeoDataPlacemark* placemark = parentItem.nodeAs<GeoDataPlacemark>(); 0034 0035 placemark->setRole(parser.readElementText().trimmed()); 0036 } 0037 else if (parentItem.represents(gpxTag_rte)) 0038 { 0039 GeoDataFeature* route = parentItem.nodeAs<GeoDataFeature>(); 0040 route->setRole(parser.readElementText().trimmed()); 0041 } 0042 // TODO: tracks, link 0043 return nullptr; 0044 } 0045 0046 } // namespace gpx 0047 0048 } // namespace Marble