File indexing completed on 2024-04-21 14:52:19

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 "personparser.h"
0010 
0011 using namespace Attica;
0012 
0013 Person Person::Parser::parseXml(QXmlStreamReader &xml)
0014 {
0015     Person person;
0016     bool hasAvatarPic = false;
0017 
0018     while (!xml.atEnd()) {
0019         xml.readNext();
0020 
0021         if (xml.isStartElement()) {
0022             if (xml.name() == QLatin1String("personid")) {
0023                 person.setId(xml.readElementText());
0024             } else if (xml.name() == QLatin1String("firstname")) {
0025                 person.setFirstName(xml.readElementText());
0026             } else if (xml.name() == QLatin1String("lastname")) {
0027                 person.setLastName(xml.readElementText());
0028             } else if (xml.name() == QLatin1String("homepage")) {
0029                 person.setHomepage(xml.readElementText());
0030             } else if (xml.name() == QLatin1String("avatarpic")) {
0031                 person.setAvatarUrl(QUrl(xml.readElementText()));
0032             } else if (xml.name() == QLatin1String("avatarpicfound")) {
0033                 QString value = xml.readElementText();
0034                 if (value.toInt()) {
0035                     hasAvatarPic = true;
0036                 }
0037             } else if (xml.name() == QLatin1String("birthday")) {
0038                 person.setBirthday(QDate::fromString(xml.readElementText(), Qt::ISODate));
0039             } else if (xml.name() == QLatin1String("city")) {
0040                 person.setCity(xml.readElementText());
0041             } else if (xml.name() == QLatin1String("country")) {
0042                 person.setCountry(xml.readElementText());
0043             } else if (xml.name() == QLatin1String("latitude")) {
0044                 person.setLatitude(xml.readElementText().toFloat());
0045             } else if (xml.name() == QLatin1String("longitude")) {
0046                 person.setLongitude(xml.readElementText().toFloat());
0047             } else {
0048                 person.addExtendedAttribute(xml.name().toString(), xml.readElementText());
0049             }
0050         } else if (xml.isEndElement() && (xml.name() == QLatin1String("person") || xml.name() == QLatin1String("user"))) {
0051             break;
0052         }
0053     }
0054 
0055     if (!hasAvatarPic) {
0056         person.setAvatarUrl(QUrl());
0057     }
0058 
0059     return person;
0060 }
0061 
0062 QStringList Person::Parser::xmlElement() const
0063 {
0064     return QStringList(QStringLiteral("person")) << QStringLiteral("user");
0065 }