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

0001 // SPDX-License-Identifier: LGPL-2.1-or-later
0002 //
0003 // SPDX-FileCopyrightText: 2011 Niko Sams <niko.sams@gmail.com>
0004 //
0005 
0006 #include "GPXhrTagHandler.h"
0007 
0008 #include "MarbleDebug.h"
0009 
0010 #include "GPXElementDictionary.h"
0011 #include "GeoParser.h"
0012 #include "GeoDataExtendedData.h"
0013 #include "GeoDataTrack.h"
0014 #include "GeoDataSimpleArrayData.h"
0015 
0016 namespace Marble
0017 {
0018 namespace gpx
0019 {
0020 GPX_DEFINE_TAG_HANDLER_GARMIN_TRACKPOINTEXT1(hr)
0021 
0022 GeoNode* GPXhrTagHandler::parse(GeoParser& parser) const
0023 {
0024     Q_ASSERT(parser.isStartElement() && parser.isValidElement(QLatin1String(gpxTag_hr)));
0025 
0026     GeoStackItem parentItem = parser.parentElement();
0027 
0028     if ( parentItem.is<GeoDataTrack>() )
0029     {
0030         GeoDataSimpleArrayData* arrayData = parentItem.nodeAs<GeoDataTrack>()
0031                         ->extendedData().simpleArrayData(QStringLiteral("heartrate"));
0032         if (!arrayData) {
0033             arrayData = new GeoDataSimpleArrayData();
0034             QString name = parser.attribute( "name" ).trimmed();
0035             parentItem.nodeAs<GeoDataTrack>()->extendedData().setSimpleArrayData(QStringLiteral("heartrate"), arrayData);
0036         }
0037         QVariant value( parser.readElementText().toInt() );
0038         arrayData->append( value );
0039         return nullptr;
0040     }
0041 
0042     return nullptr;
0043 }
0044 
0045 } // namespace gpx
0046 
0047 } // namespace Marble