File indexing completed on 2024-04-28 11:32:31

0001 /*
0002     This file is part of KDE.
0003 
0004     SPDX-FileCopyrightText: 2008 Cornelius Schumacher <schumacher@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 "activityparser.h"
0010 
0011 #include <QDateTime>
0012 #include <QRegularExpression>
0013 
0014 using namespace Attica;
0015 
0016 Activity Activity::Parser::parseXml(QXmlStreamReader &xml)
0017 {
0018     Activity activity;
0019     Person person;
0020 
0021     while (!xml.atEnd()) {
0022         xml.readNext();
0023 
0024         if (xml.isStartElement()) {
0025             if (xml.name() == QLatin1String("id")) {
0026                 activity.setId(xml.readElementText());
0027             } else if (xml.name() == QLatin1String("personid")) {
0028                 person.setId(xml.readElementText());
0029             } else if (xml.name() == QLatin1String("avatarpic")) {
0030                 person.setAvatarUrl(QUrl(xml.readElementText()));
0031             } else if (xml.name() == QLatin1String("firstname")) {
0032                 person.setFirstName(xml.readElementText());
0033             } else if (xml.name() == QLatin1String("lastname")) {
0034                 person.setLastName(xml.readElementText());
0035             } else if (xml.name() == QLatin1String("timestamp")) {
0036                 QString timestampString = xml.readElementText();
0037                 timestampString.remove(QRegularExpression(QStringLiteral("\\+.*$")));
0038                 QDateTime timestamp = QDateTime::fromString(timestampString, Qt::ISODate);
0039                 activity.setTimestamp(timestamp);
0040             } else if (xml.name() == QLatin1String("message")) {
0041                 activity.setMessage(xml.readElementText());
0042             } else if (xml.name() == QLatin1String("link")) {
0043                 activity.setLink(QUrl(xml.readElementText()));
0044             }
0045         } else if (xml.isEndElement() && xml.name() == QLatin1String("activity")) {
0046             break;
0047         }
0048     }
0049 
0050     activity.setAssociatedPerson(person);
0051     return activity;
0052 }
0053 
0054 QStringList Activity::Parser::xmlElement() const
0055 {
0056     return QStringList(QStringLiteral("activity"));
0057 }