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