File indexing completed on 2025-02-02 05:02:41
0001 /* 0002 SPDX-FileCopyrightText: 2021 Volker Krause <vkrause@kde.org> 0003 0004 SPDX-License-Identifier: LGPL-2.0-or-later 0005 */ 0006 0007 #include "gpxwriter.h" 0008 0009 #include <QDateTime> 0010 0011 Gpx::Writer::Writer(QIODevice* device) 0012 : m_writer(device) 0013 { 0014 m_writer.setAutoFormatting(true); 0015 m_writer.writeStartDocument(QStringLiteral("1.0")); 0016 m_writer.writeStartElement(QStringLiteral("gpx")); 0017 m_writer.writeAttribute(QStringLiteral("xmlns"), QStringLiteral("http://www.topografix.com/GPX/1/1")); 0018 m_writer.writeNamespace(QStringLiteral("http://www.w3.org/2001/XMLSchema-instance"), QStringLiteral("xsi")); 0019 m_writer.writeAttribute(QStringLiteral("xsi:schemaLocation"), QStringLiteral("http://www.topografix.com/GPX/1/1")); 0020 } 0021 0022 Gpx::Writer::~Writer() 0023 { 0024 m_writer.writeEndElement(); 0025 m_writer.writeEndDocument(); 0026 } 0027 0028 void Gpx::Writer::writeStartMetadata() 0029 { 0030 m_writer.writeStartElement(QStringLiteral("metadata")); 0031 } 0032 0033 void Gpx::Writer::writeEndMetadata() 0034 { 0035 m_writer.writeEndElement(); 0036 } 0037 0038 void Gpx::Writer::writeStartRoute() 0039 { 0040 m_writer.writeStartElement(QStringLiteral("rte")); 0041 } 0042 0043 void Gpx::Writer::writeEndRoute() 0044 { 0045 m_writer.writeEndElement(); 0046 } 0047 0048 void Gpx::Writer::writeStartWaypoint(float latitude, float longitude) 0049 { 0050 m_writer.writeStartElement(QStringLiteral("wpt")); 0051 m_writer.writeAttribute(QStringLiteral("lat"), QString::number(latitude)); 0052 m_writer.writeAttribute(QStringLiteral("lon"), QString::number(longitude)); 0053 } 0054 0055 void Gpx::Writer::writeEndWaypoint() 0056 { 0057 m_writer.writeEndElement(); 0058 } 0059 0060 void Gpx::Writer::writeStartRoutePoint(float latitude, float longitude) 0061 { 0062 m_writer.writeStartElement(QStringLiteral("rtept")); 0063 m_writer.writeAttribute(QStringLiteral("lat"), QString::number(latitude)); 0064 m_writer.writeAttribute(QStringLiteral("lon"), QString::number(longitude)); 0065 } 0066 0067 void Gpx::Writer::writeEndRoutePoint() 0068 { 0069 m_writer.writeEndElement(); 0070 } 0071 0072 void Gpx::Writer::writeName(const QString& name) 0073 { 0074 m_writer.writeTextElement(QStringLiteral("name"), name); 0075 } 0076 0077 void Gpx::Writer::writeLink(const QString &href, const QString &text) 0078 { 0079 m_writer.writeStartElement(QStringLiteral("link")); 0080 m_writer.writeAttribute(QStringLiteral("href"), href); 0081 if (!text.isEmpty()) { 0082 m_writer.writeTextElement(QStringLiteral("text"), text); 0083 } 0084 m_writer.writeEndElement(); 0085 } 0086 0087 void Gpx::Writer::writeTime(const QDateTime &time) 0088 { 0089 if (time.isValid()) { 0090 m_writer.writeTextElement(QStringLiteral("time"), time.toString(Qt::ISODate)); 0091 } 0092 }