File indexing completed on 2024-05-12 03:51:44

0001 /*
0002     SPDX-FileCopyrightText: 2009 Thibaut GRIDEL <tgridel@free.fr>
0003     SPDX-License-Identifier: LGPL-2.1-or-later
0004 */
0005 
0006 #include "GPXnameTagHandler.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(name)
0020 
0021 GeoNode* GPXnameTagHandler::parse(GeoParser& parser) const
0022 {
0023     Q_ASSERT(parser.isStartElement() && parser.isValidElement(QLatin1String(gpxTag_name)));
0024 
0025     GeoStackItem parentItem = parser.parentElement();
0026     if (parentItem.represents(gpxTag_wpt)
0027         || parentItem.represents(gpxTag_trk)
0028         || parentItem.represents(gpxTag_rtept))
0029     {
0030         GeoDataPlacemark* placemark = parentItem.nodeAs<GeoDataPlacemark>();
0031 
0032         placemark->setName(parser.readElementText().trimmed());
0033     }
0034     else if (parentItem.represents(gpxTag_rte))
0035     {
0036         GeoDataFeature* route = parentItem.nodeAs<GeoDataFeature>();
0037         route->setName(parser.readElementText().trimmed());
0038     }
0039     return nullptr;
0040 }
0041 
0042 } // namespace gpx
0043 
0044 } // namespace Marble