File indexing completed on 2024-04-14 03:49:32

0001 /*
0002     This file is part of KDE.
0003 
0004     SPDX-FileCopyrightText: 2009 Eckhart Wörner <ewoerner@kde.org>
0005 
0006     SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
0007 */
0008 
0009 #include "eventparser.h"
0010 
0011 #include <QRegularExpression>
0012 
0013 using namespace Attica;
0014 
0015 Event Event::Parser::parseXml(QXmlStreamReader &xml)
0016 {
0017     Event event;
0018 
0019     while (!xml.atEnd()) {
0020         xml.readNext();
0021 
0022         if (xml.isStartElement()) {
0023             if (xml.name() == QLatin1String("id")) {
0024                 event.setId(xml.readElementText());
0025             } else if (xml.name() == QLatin1String("name")) {
0026                 event.setName(xml.readElementText());
0027             } else if (xml.name() == QLatin1String("description")) {
0028                 event.setDescription(xml.readElementText());
0029             } else if (xml.name() == QLatin1String("user")) {
0030                 event.setUser(xml.readElementText());
0031             } else if (xml.name() == QLatin1String("startdate")) {
0032                 QString date = xml.readElementText().remove(QRegularExpression(QStringLiteral("\\+.*$")));
0033                 event.setStartDate(QDate::fromString(date, Qt::ISODate));
0034             } else if (xml.name() == QLatin1String("enddate")) {
0035                 QString date = xml.readElementText().remove(QRegularExpression(QStringLiteral("\\+.*$")));
0036                 event.setEndDate(QDate::fromString(date, Qt::ISODate));
0037             } else if (xml.name() == QLatin1String("latitude")) {
0038                 event.setLatitude(xml.readElementText().toFloat());
0039             } else if (xml.name() == QLatin1String("longitude")) {
0040                 event.setLongitude(xml.readElementText().toFloat());
0041             } else if (xml.name() == QLatin1String("homepage")) {
0042                 event.setHomepage(QUrl(xml.readElementText()));
0043             } else if (xml.name() == QLatin1String("country")) {
0044                 event.setCountry(xml.readElementText());
0045             } else if (xml.name() == QLatin1String("city")) {
0046                 event.setCity(xml.readElementText());
0047             } else {
0048                 event.addExtendedAttribute(xml.name().toString(), xml.readElementText());
0049             }
0050         } else if (xml.isEndElement() && xml.name() == QLatin1String("event")) {
0051             break;
0052         }
0053     }
0054 
0055     return event;
0056 }
0057 
0058 QStringList Event::Parser::xmlElement() const
0059 {
0060     return QStringList(QStringLiteral("event"));
0061 }