~ubuntu-branches/ubuntu/trusty/jreen/trusty

« back to all changes in this revision

Viewing changes to src/delayeddeliveryfactory.cpp

  • Committer: Package Import Robot
  • Author(s): Prasad Murthy
  • Date: 2013-03-08 00:00:33 UTC
  • Revision ID: package-import@ubuntu.com-20130308000033-x8thp6syo1kkh63s
Tags: upstream-1.1.1
Import upstream version 1.1.1

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/****************************************************************************
 
2
**
 
3
** Jreen
 
4
**
 
5
** Copyright © 2011 Ruslan Nigmatullin <euroelessar@yandex.ru>
 
6
**
 
7
*****************************************************************************
 
8
**
 
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.
 
14
**
 
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.
 
19
**
 
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$
 
23
**
 
24
****************************************************************************/
 
25
#include "delayeddeliveryfactory_p.h"
 
26
#include <QStringList>
 
27
#include <QXmlStreamReader>
 
28
#include "util.h"
 
29
 
 
30
 
 
31
#define NS_DELAY QLatin1String("urn:xmpp:delay")
 
32
#define NS_DELAY_DEPRECATED QLatin1String("jabber:x:delay")
 
33
 
 
34
namespace Jreen {
 
35
 
 
36
class JREEN_AUTOTEST_EXPORT DelayedDeliveryFactoryPrivate
 
37
{
 
38
public:
 
39
        JID from;
 
40
        QDateTime dateTime;
 
41
        QString reason;
 
42
};
 
43
 
 
44
DelayedDeliveryFactory::DelayedDeliveryFactory() : d_ptr(new DelayedDeliveryFactoryPrivate)
 
45
{
 
46
}
 
47
 
 
48
DelayedDeliveryFactory::~DelayedDeliveryFactory()
 
49
{
 
50
 
 
51
}
 
52
 
 
53
QStringList DelayedDeliveryFactory::features() const
 
54
{
 
55
        return QStringList(NS_DELAY);
 
56
}
 
57
 
 
58
bool DelayedDeliveryFactory::canParse(const QStringRef &name, const QStringRef &uri, const QXmlStreamAttributes &attributes)
 
59
{
 
60
        return (name == QLatin1String("delay") && uri == NS_DELAY)
 
61
                        || (name == QLatin1String("x") && uri == NS_DELAY_DEPRECATED);
 
62
        Q_UNUSED(attributes);
 
63
}
 
64
 
 
65
void DelayedDeliveryFactory::handleStartElement(const QStringRef &name, const QStringRef &uri, const QXmlStreamAttributes &attributes)
 
66
{
 
67
        Q_D(DelayedDeliveryFactory);
 
68
        Q_UNUSED(name);
 
69
        Q_UNUSED(uri);
 
70
        d->from = attributes.value(QLatin1String("from")).toString();
 
71
        d->dateTime = Util::fromStamp(attributes.value("stamp").toString());
 
72
}
 
73
 
 
74
void DelayedDeliveryFactory::handleEndElement(const QStringRef &name, const QStringRef &uri)
 
75
{
 
76
        Q_UNUSED(name);
 
77
        Q_UNUSED(uri);
 
78
}
 
79
 
 
80
void DelayedDeliveryFactory::handleCharacterData(const QStringRef &text)
 
81
{
 
82
        Q_UNUSED(text);
 
83
}
 
84
 
 
85
void DelayedDeliveryFactory::serialize(Payload *extension, QXmlStreamWriter *writer)
 
86
{
 
87
        DelayedDelivery *delivery = se_cast<DelayedDelivery*>(extension);
 
88
        if (!delivery->dateTime().isValid())
 
89
                return;
 
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();
 
97
}
 
98
 
 
99
Payload::Ptr DelayedDeliveryFactory::createPayload()
 
100
{
 
101
        Q_D(DelayedDeliveryFactory);
 
102
        return Payload::Ptr(new DelayedDelivery(d->from,d->dateTime,d->reason));
 
103
}
 
104
 
 
105
} // namespace Jreen