24
#include <qdatetime.h>
31
#include "xmpp_message.h"
32
#include "xmpp_chatstate.h"
33
#include "xmpp_status.h"
34
#include "xmpp_htmlelement.h"
35
#include "xmpp_features.h"
36
#include "xmpp_httpauthrequest.h"
38
#include "xmpp_task.h"
39
#include "xmpp_resource.h"
40
#include "xmpp_resourcelist.h"
41
#include "xmpp_roster.h"
42
#include "xmpp_rosteritem.h"
43
#include "xmpp_liverosteritem.h"
44
#include "xmpp_liveroster.h"
45
#include "xmpp_rosterx.h"
46
#include "xmpp_xdata.h"
47
#include "xmpp_discoitem.h"
48
#include "xmpp_agentitem.h"
49
#include "xmpp_client.h"
50
#include "xmpp_address.h"
51
#include "xmpp_pubsubitem.h"
52
#include "xmpp_pubsubretraction.h"
32
Url(const QString &url="", const QString &desc="");
34
Url & operator=(const Url &);
40
void setUrl(const QString &);
41
void setDesc(const QString &);
48
typedef QValueList<Url> UrlList;
49
56
typedef QMap<QString, QString> StringMap;
50
typedef enum { OfflineEvent, DeliveredEvent, DisplayedEvent,
51
ComposingEvent, CancelEvent } MsgEvent;
56
Message(const Jid &to="");
57
Message(const Message &from);
58
Message & operator=(const Message &from);
66
QString subject(const QString &lang="") const;
67
QString body(const QString &lang="") const;
68
QString thread() const;
69
Stanza::Error error() const;
71
void setTo(const Jid &j);
72
void setFrom(const Jid &j);
73
void setId(const QString &s);
74
void setType(const QString &s);
75
void setLang(const QString &s);
76
void setSubject(const QString &s, const QString &lang="");
77
void setBody(const QString &s, const QString &lang="");
78
void setThread(const QString &s);
79
void setError(const Stanza::Error &err);
82
QDateTime timeStamp() const;
83
void setTimeStamp(const QDateTime &ts);
86
UrlList urlList() const;
87
void urlAdd(const Url &u);
89
void setUrlList(const UrlList &list);
92
QString eventId() const;
93
void setEventId(const QString& id);
94
bool containsEvents() const;
95
bool containsEvent(MsgEvent e) const;
96
void addEvent(MsgEvent e);
99
QString xencrypted() const;
100
void setXEncrypted(const QString &s);
102
// Obsolete invitation
103
QString invite() const;
104
void setInvite(const QString &s);
106
// for compatibility. delete me later
107
bool spooled() const;
108
void setSpooled(bool);
109
bool wasEncrypted() const;
110
void setWasEncrypted(bool);
112
Stanza toStanza(Stream *stream) const;
113
bool fromStanza(const Stanza &s, int tzoffset);
123
enum SubType { None, To, From, Both, Remove };
125
Subscription(SubType type=None);
129
QString toString() const;
130
bool fromString(const QString &);
139
Status(const QString &show="", const QString &status="", int priority=0, bool available=true);
142
int priority() const;
143
const QString & show() const;
144
const QString & status() const;
145
QDateTime timeStamp() const;
146
const QString & keyID() const;
147
bool isAvailable() const;
149
bool isInvisible() const;
150
bool hasError() const;
151
int errorCode() const;
152
const QString & errorString() const;
154
const QString & xsigned() const;
155
const QString & songTitle() const;
157
void setPriority(int);
158
void setShow(const QString &);
159
void setStatus(const QString &);
160
void setTimeStamp(const QDateTime &);
161
void setKeyID(const QString &);
162
void setIsAvailable(bool);
163
void setIsInvisible(bool);
164
void setError(int, const QString &);
166
void setXSigned(const QString &);
167
void setSongTitle(const QString &);
171
QString v_show, v_status, v_key;
172
QDateTime v_timeStamp;
177
// gabber song extension
190
Resource(const QString &name="", const Status &s=Status());
193
const QString & name() const;
194
int priority() const;
195
const Status & status() const;
197
void setName(const QString &);
198
void setStatus(const Status &);
204
class ResourcePrivate *d;
207
class ResourceList : public QValueList<Resource>
213
ResourceList::Iterator find(const QString &);
214
ResourceList::Iterator priority();
216
ResourceList::ConstIterator find(const QString &) const;
217
ResourceList::ConstIterator priority() const;
220
class ResourceListPrivate *d;
226
RosterItem(const Jid &jid="");
227
virtual ~RosterItem();
229
const Jid & jid() const;
230
const QString & name() const;
231
const QStringList & groups() const;
232
const Subscription & subscription() const;
233
const QString & ask() const;
235
bool inGroup(const QString &) const;
237
virtual void setJid(const Jid &);
238
void setName(const QString &);
239
void setGroups(const QStringList &);
240
void setSubscription(const Subscription &);
241
void setAsk(const QString &);
242
void setIsPush(bool);
243
bool addGroup(const QString &);
244
bool removeGroup(const QString &);
246
QDomElement toXml(QDomDocument *) const;
247
bool fromXml(const QDomElement &);
252
QStringList v_groups;
253
Subscription v_subscription;
257
class RosterItemPrivate *d;
260
class Roster : public QValueList<RosterItem>
266
Roster::Iterator find(const Jid &);
267
Roster::ConstIterator find(const Jid &) const;
270
class RosterPrivate *d;
277
Features(const QStringList &);
278
Features(const QString &);
281
QStringList list() const; // actual featurelist
282
void setList(const QStringList &);
285
bool canRegister() const;
286
bool canSearch() const;
287
bool canGroupchat() const;
288
bool canDisco() const;
289
bool isGateway() const;
290
bool haveVCard() const;
302
// private Psi actions
307
bool test(const QStringList &) const;
309
QString name() const;
310
static QString name(long id);
311
static QString name(const QString &feature);
314
static long id(const QString &feature);
315
static QString feature(long id);
327
const Jid & jid() const { return v_jid; }
328
const QString & name() const { return v_name; }
329
const QString & category() const { return v_category; }
330
const QString & type() const { return v_type; }
331
const Features & features() const { return v_features; }
333
void setJid(const Jid &j) { v_jid = j; }
334
void setName(const QString &n) { v_name = n; }
335
void setCategory(const QString &c) { v_category = c; }
336
void setType(const QString &t) { v_type = t; }
337
void setFeatures(const Features &f) { v_features = f; }
341
QString v_name, v_category, v_type;
345
typedef QValueList<AgentItem> AgentList;
353
const Jid &jid() const;
354
const QString &node() const;
355
const QString &name() const;
357
void setJid(const Jid &);
358
void setName(const QString &);
359
void setNode(const QString &);
367
Action action() const;
368
void setAction(Action);
370
const Features &features() const;
371
void setFeatures(const Features &);
380
typedef QValueList<Identity> Identities;
382
const Identities &identities() const;
383
void setIdentities(const Identities &);
385
// some useful helper functions
386
static Action string2action(QString s);
387
static QString action2string(Action a);
389
DiscoItem & operator= (const DiscoItem &);
390
DiscoItem(const DiscoItem &);
392
operator AgentItem() const { return toAgentItem(); }
393
AgentItem toAgentItem() const;
394
void fromAgentItem(const AgentItem &);
401
typedef QValueList<DiscoItem> DiscoList;
58
typedef QList<AgentItem> AgentList;
59
typedef QList<DiscoItem> DiscoList;
471
129
QString v_nick, v_first, v_last, v_email;
475
class LiveRosterItem;
479
class JidLinkManager;
480
class FileTransferManager;
482
class Task : public QObject
488
Task(Client *, bool isRoot);
491
Task *parent() const;
492
Client *client() const;
493
QDomDocument *doc() const;
496
bool success() const;
497
int statusCode() const;
498
const QString & statusString() const;
500
void go(bool autoDelete=false);
501
virtual bool take(const QDomElement &);
509
virtual void onDisconnect();
510
void send(const QDomElement &);
511
void setSuccess(int code=0, const QString &str="");
512
void setError(const QDomElement &);
513
void setError(int code=0, const QString &str="");
514
void debug(const char *, ...);
515
void debug(const QString &);
516
bool iqVerify(const QDomElement &x, const Jid &to, const QString &id, const QString &xmlns="");
519
void clientDisconnected();
529
class Client : public QObject
534
Client(QObject *parent=0);
537
bool isActive() const;
538
void connectToServer(ClientStream *s, const Jid &j, bool auth=true);
539
void start(const QString &host, const QString &user, const QString &pass, const QString &resource);
540
void close(bool fast=false);
543
const LiveRoster & roster() const;
544
const ResourceList & resourceList() const;
546
void send(const QDomElement &);
547
void send(const QString &);
549
QString host() const;
550
QString user() const;
551
QString pass() const;
552
QString resource() const;
555
void rosterRequest();
556
void sendMessage(const Message &);
557
void sendSubscription(const Jid &, const QString &);
558
void setPresence(const Status &);
560
void debug(const QString &);
561
QString genUniqueId();
563
QDomDocument *doc() const;
565
QString OSName() const;
566
QString timeZone() const;
567
int timeZoneOffset() const;
568
QString clientName() const;
569
QString clientVersion() const;
571
void setOSName(const QString &);
572
void setTimeZone(const QString &, int);
573
void setClientName(const QString &);
574
void setClientVersion(const QString &);
576
S5BManager *s5bManager() const;
577
IBBManager *ibbManager() const;
578
JidLinkManager *jidLinkManager() const;
580
void setFileTransferEnabled(bool b);
581
FileTransferManager *fileTransferManager() const;
583
bool groupChatJoin(const QString &host, const QString &room, const QString &nick);
584
void groupChatSetStatus(const QString &host, const QString &room, const Status &);
585
void groupChatChangeNick(const QString &host, const QString &room, const QString &nick, const Status &);
586
void groupChatLeave(const QString &host, const QString &room);
591
//void authFinished(bool, int, const QString &);
592
void rosterRequestFinished(bool, int, const QString &);
593
void rosterItemAdded(const RosterItem &);
594
void rosterItemUpdated(const RosterItem &);
595
void rosterItemRemoved(const RosterItem &);
596
void resourceAvailable(const Jid &, const Resource &);
597
void resourceUnavailable(const Jid &, const Resource &);
598
void presenceError(const Jid &, int, const QString &);
599
void subscription(const Jid &, const QString &);
600
void messageReceived(const Message &);
601
void debugText(const QString &);
602
void xmlIncoming(const QString &);
603
void xmlOutgoing(const QString &);
604
void groupChatJoined(const Jid &);
605
void groupChatLeft(const Jid &);
606
void groupChatPresence(const Jid &, const Status &);
607
void groupChatError(const Jid &, int, const QString &);
609
void incomingJidLink();
612
//void streamConnected();
613
//void streamHandshaken();
614
//void streamError(const StreamError &);
615
//void streamSSLCertificateReady(const QSSLCert &);
616
//void streamCloseFinished();
617
void streamError(int);
618
void streamReadyRead();
619
void streamIncomingXml(const QString &);
620
void streamOutgoingXml(const QString &);
622
void slotRosterRequestFinished();
625
void ppSubscription(const Jid &, const QString &);
626
void ppPresence(const Jid &, const Status &);
627
void pmMessage(const Message &);
628
void prRoster(const Roster &);
630
void s5b_incomingReady();
631
void ibb_incomingReady();
637
void distribute(const QDomElement &);
638
void importRoster(const Roster &);
639
void importRosterItem(const RosterItem &);
640
void updateSelfPresence(const Jid &, const Status &);
641
void updatePresence(LiveRosterItem *, const Jid &, const Status &);
647
class LiveRosterItem : public RosterItem
650
LiveRosterItem(const Jid &j="");
651
LiveRosterItem(const RosterItem &);
654
void setRosterItem(const RosterItem &);
656
ResourceList & resourceList();
657
ResourceList::Iterator priority();
659
const ResourceList & resourceList() const;
660
ResourceList::ConstIterator priority() const;
662
bool isAvailable() const;
663
const Status & lastUnavailableStatus() const;
664
bool flagForDelete() const;
666
void setLastUnavailableStatus(const Status &);
667
void setFlagForDelete(bool);
670
ResourceList v_resourceList;
671
Status v_lastUnavailableStatus;
672
bool v_flagForDelete;
674
class LiveRosterItemPrivate;
675
LiveRosterItemPrivate *d;
678
class LiveRoster : public QValueList<LiveRosterItem>
684
void flagAllForDelete();
685
LiveRoster::Iterator find(const Jid &, bool compareRes=true);
686
LiveRoster::ConstIterator find(const Jid &, bool compareRes=true) const;
689
class LiveRosterPrivate;
690
LiveRosterPrivate *d;