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 "GPXcmtTagHandler.h"
0007 
0008 #include "MarbleDebug.h"
0009 
0010 #include "GPXElementDictionary.h"
0011 #include "GeoParser.h"
0012 #include "GeoDataPlacemark.h"
0013 
0014 // type is used in wpt, rte and trk to provide some sort of keyword, like "Geocache/traditional cache",
0015 // and in link to provide a mimetype
0016 
0017 namespace Marble
0018 {
0019 namespace gpx
0020 {
0021 GPX_DEFINE_TAG_HANDLER(cmt)
0022 
0023 
0024 GeoNode* GPXcmtTagHandler::parse(GeoParser& parser) const
0025 {
0026     Q_ASSERT(parser.isStartElement() && parser.isValidElement(QLatin1String(gpxTag_cmt)));
0027 
0028     GeoStackItem parentItem = parser.parentElement();
0029     if (parentItem.represents(gpxTag_wpt))
0030     {
0031         GeoDataPlacemark* placemark = parentItem.nodeAs<GeoDataPlacemark>();
0032 
0033         QString cmt = parser.readElementText().trimmed();
0034         if (!cmt.isEmpty())
0035         {
0036             QString desc = placemark->description();
0037             if (!desc.isEmpty())
0038             {
0039                 desc += QLatin1String("<br/>");
0040             }
0041             placemark->setDescription(desc.append(cmt.replace(QLatin1Char('\n'),QLatin1String("\n<br/>"))));
0042             placemark->setDescriptionCDATA(true);
0043         }
0044     }
0045     return nullptr;
0046 }
0047 
0048 } // namespace gpx
0049 
0050 } // namespace Marble