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