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
****************************************************************************/
26
#ifndef ABSTRACTROSTER_P_H
27
#define ABSTRACTROSTER_P_H
29
#include "abstractroster.h"
33
class RosterItemPrivate
36
inline RosterItemPrivate() : subscription(RosterItem::Remove) {}
37
AbstractRoster *roster;
41
RosterItem::SubscriptionType subscription;
44
static RosterItemPrivate *get(RosterItem *item) { return item->d_func(); }
47
class AbstractRosterPrivate
52
QSharedPointer<RosterItem> self;
53
QHash<QString, QSharedPointer<RosterItem> > items;
54
QSet<QSharedPointer<RosterItem> > changed_items;
57
class AbstractRosterQuery : public Payload
59
J_PAYLOAD(Jreen::AbstractRosterQuery);
61
AbstractRosterQuery(const QString &ver = QString()) : m_ver(ver) {}
62
AbstractRosterQuery(const QList<RosterItem::Ptr> &items, const QString &ver) : m_items(items), m_ver(ver) {}
63
AbstractRosterQuery(const QSharedPointer<RosterItem> &item) { m_items << item; }
64
QList<QSharedPointer<RosterItem> > items() const { return m_items; }
65
QString ver() const { return m_ver; }
67
QList<QSharedPointer<RosterItem> > m_items;
71
class JREEN_AUTOTEST_EXPORT AbstractRosterQueryFactory : public PayloadFactory<AbstractRosterQuery>
74
AbstractRosterQueryFactory(AbstractRoster *roster);
75
QStringList features() const;
76
bool canParse(const QStringRef &name, const QStringRef &uri, const QXmlStreamAttributes &attributes);
77
void handleStartElement(const QStringRef &name, const QStringRef &uri, const QXmlStreamAttributes &attributes);
78
void handleEndElement(const QStringRef &name, const QStringRef &uri);
79
void handleCharacterData(const QStringRef &text);
80
void serialize(Payload *extension, QXmlStreamWriter *writer);
81
Payload::Ptr createPayload();
83
enum State { AtStart, AtQuery, AtItem, AtGroup };
86
AbstractRoster *m_roster;
91
RosterItem::SubscriptionType m_subscription;
93
QList<RosterItem::Ptr> m_items;
97
#endif // ABSTRACTROSTER_P_H