1
/****************************************************************************
5
** Copyright © 2011 Ruslan Nigmatullin <euroelessar@yandex.ru>
7
*****************************************************************************
9
** $JREEN_BEGIN_LICENSE$
10
** This program is free software: you can redistribute it and/or modify
11
** it under the terms of the GNU General Public License as published by
12
** the Free Software Foundation, either version 2 of the License, or
13
** (at your option) any later version.
15
** This program is distributed in the hope that it will be useful,
16
** but WITHOUT ANY WARRANTY; without even the implied warranty of
17
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
18
** See the GNU General Public License for more details.
20
** You should have received a copy of the GNU General Public License
21
** along with this program. If not, see http://www.gnu.org/licenses/.
22
** $JREEN_END_LICENSE$
24
****************************************************************************/
25
#include "delayeddeliveryfactory_p.h"
26
#include <QStringList>
27
#include <QXmlStreamReader>
31
#define NS_DELAY QLatin1String("urn:xmpp:delay")
32
#define NS_DELAY_DEPRECATED QLatin1String("jabber:x:delay")
36
class JREEN_AUTOTEST_EXPORT DelayedDeliveryFactoryPrivate
44
DelayedDeliveryFactory::DelayedDeliveryFactory() : d_ptr(new DelayedDeliveryFactoryPrivate)
48
DelayedDeliveryFactory::~DelayedDeliveryFactory()
53
QStringList DelayedDeliveryFactory::features() const
55
return QStringList(NS_DELAY);
58
bool DelayedDeliveryFactory::canParse(const QStringRef &name, const QStringRef &uri, const QXmlStreamAttributes &attributes)
60
return (name == QLatin1String("delay") && uri == NS_DELAY)
61
|| (name == QLatin1String("x") && uri == NS_DELAY_DEPRECATED);
65
void DelayedDeliveryFactory::handleStartElement(const QStringRef &name, const QStringRef &uri, const QXmlStreamAttributes &attributes)
67
Q_D(DelayedDeliveryFactory);
70
d->from = attributes.value(QLatin1String("from")).toString();
71
d->dateTime = Util::fromStamp(attributes.value("stamp").toString());
74
void DelayedDeliveryFactory::handleEndElement(const QStringRef &name, const QStringRef &uri)
80
void DelayedDeliveryFactory::handleCharacterData(const QStringRef &text)
85
void DelayedDeliveryFactory::serialize(Payload *extension, QXmlStreamWriter *writer)
87
DelayedDelivery *delivery = se_cast<DelayedDelivery*>(extension);
88
if (!delivery->dateTime().isValid())
90
writer->writeStartElement(QLatin1String("delay"));
91
writer->writeAttribute(QLatin1String("stamp"), Util::toStamp(delivery->dateTime()));
92
writer->writeDefaultNamespace(NS_DELAY);
93
if (delivery->from().isValid())
94
writer->writeAttribute(QLatin1String("from"), delivery->from());
95
writer->writeCharacters(delivery->reason());
96
writer->writeEndElement();
99
Payload::Ptr DelayedDeliveryFactory::createPayload()
101
Q_D(DelayedDeliveryFactory);
102
return Payload::Ptr(new DelayedDelivery(d->from,d->dateTime,d->reason));