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

« back to all changes in this revision

Viewing changes to src/abstractroster_p.h

  • 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
 
 
26
#ifndef ABSTRACTROSTER_P_H
 
27
#define ABSTRACTROSTER_P_H
 
28
 
 
29
#include "abstractroster.h"
 
30
 
 
31
namespace Jreen
 
32
{
 
33
class RosterItemPrivate
 
34
{
 
35
public:
 
36
        inline RosterItemPrivate() : subscription(RosterItem::Remove) {}
 
37
        AbstractRoster *roster;
 
38
        QString jid;
 
39
        QString name;
 
40
        QStringList groups;
 
41
        RosterItem::SubscriptionType subscription;
 
42
        QString ask;
 
43
 
 
44
        static RosterItemPrivate *get(RosterItem *item) { return item->d_func(); }
 
45
};
 
46
 
 
47
class AbstractRosterPrivate
 
48
{
 
49
public:
 
50
        Client *client;
 
51
        QString version;
 
52
        QSharedPointer<RosterItem> self;
 
53
        QHash<QString, QSharedPointer<RosterItem> > items;
 
54
        QSet<QSharedPointer<RosterItem> > changed_items;
 
55
};
 
56
 
 
57
class AbstractRosterQuery : public Payload
 
58
{
 
59
        J_PAYLOAD(Jreen::AbstractRosterQuery);
 
60
public:
 
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; }
 
66
protected:
 
67
        QList<QSharedPointer<RosterItem> > m_items;
 
68
        QString m_ver;
 
69
};
 
70
 
 
71
class JREEN_AUTOTEST_EXPORT AbstractRosterQueryFactory : public PayloadFactory<AbstractRosterQuery>
 
72
{
 
73
public:
 
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();
 
82
private:
 
83
        enum State { AtStart, AtQuery, AtItem, AtGroup };
 
84
        int m_depth;
 
85
        State m_state;
 
86
        AbstractRoster *m_roster;
 
87
        QStringList m_groups;
 
88
        QString m_name;
 
89
        QString m_jid;
 
90
        QString m_ask;
 
91
        RosterItem::SubscriptionType m_subscription;
 
92
        QString m_ver;
 
93
        QList<RosterItem::Ptr> m_items;
 
94
};
 
95
}
 
96
 
 
97
#endif // ABSTRACTROSTER_P_H