QXmpp Version:0.3.91
|
00001 /* 00002 * Copyright (C) 2008-2011 The QXmpp developers 00003 * 00004 * Author: 00005 * Manjeet Dahiya 00006 * 00007 * Source: 00008 * http://code.google.com/p/qxmpp 00009 * 00010 * This file is a part of QXmpp library. 00011 * 00012 * This library is free software; you can redistribute it and/or 00013 * modify it under the terms of the GNU Lesser General Public 00014 * License as published by the Free Software Foundation; either 00015 * version 2.1 of the License, or (at your option) any later version. 00016 * 00017 * This library is distributed in the hope that it will be useful, 00018 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00019 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00020 * Lesser General Public License for more details. 00021 * 00022 */ 00023 00024 00025 #ifndef QXMPPSTANZA_H 00026 #define QXMPPSTANZA_H 00027 00028 #include "QXmppElement.h" 00029 #include "QXmppPacket.h" 00030 #include <QString> 00031 00032 // forward declarations of QXmlStream* classes will not work on Mac, we need to 00033 // include the whole header. 00034 // See http://lists.trolltech.com/qt-interest/2008-07/thread00798-0.html 00035 // for an explanation. 00036 #include <QXmlStreamWriter> 00037 00039 00043 00044 class QXmppStanza : public QXmppPacket 00045 { 00046 public: 00047 class Error 00048 { 00049 public: 00050 enum Type 00051 { 00052 Cancel, 00053 Continue, 00054 Modify, 00055 Auth, 00056 Wait 00057 }; 00058 00059 enum Condition 00060 { 00061 BadRequest, 00062 Conflict, 00063 FeatureNotImplemented, 00064 Forbidden, 00065 Gone, 00066 InternalServerError, 00067 ItemNotFound, 00068 JidMalformed, 00069 NotAcceptable, 00070 NotAllowed, 00071 NotAuthorized, 00072 PaymentRequired, 00073 RecipientUnavailable, 00074 Redirect, 00075 RegistrationRequired, 00076 RemoteServerNotFound, 00077 RemoteServerTimeout, 00078 ResourceConstraint, 00079 ServiceUnavailable, 00080 SubscriptionRequired, 00081 UndefinedCondition, 00082 UnexpectedRequest 00083 }; 00084 00085 Error(); 00086 Error(Type type, Condition cond, const QString& text=""); 00087 Error(const QString& type, const QString& cond, const QString& text=""); 00088 00089 int code() const; 00090 void setCode(int code); 00091 00092 QString text() const; 00093 void setText(const QString& text); 00094 00095 Condition condition() const; 00096 void setCondition(Condition cond); 00097 00098 void setType(Type type); 00099 Type type() const; 00100 00101 // FIXME : remove this once is gone 00102 bool isValid(); 00103 00105 void parse(const QDomElement &element); 00106 void toXml(QXmlStreamWriter *writer) const; 00108 00109 private: 00110 QString getConditionStr() const; 00111 void setConditionFromStr(const QString& cond); 00112 00113 QString getTypeStr() const; 00114 void setTypeFromStr(const QString& type); 00115 00116 int m_code; 00117 Type m_type; 00118 Condition m_condition; 00119 QString m_text; 00120 }; 00121 00122 QXmppStanza(const QString& from = QString(), const QString& to = QString()); 00123 ~QXmppStanza(); 00124 00125 QString to() const; 00126 void setTo(const QString&); 00127 00128 QString from() const; 00129 void setFrom(const QString&); 00130 00131 QString id() const; 00132 void setId(const QString&); 00133 00134 QString lang() const; 00135 void setLang(const QString&); 00136 00137 QXmppStanza::Error error() const; 00138 void setError(const QXmppStanza::Error& error); 00139 00140 QXmppElementList extensions() const; 00141 void setExtensions(const QXmppElementList &elements); 00142 00144 // FIXME : why is this needed? 00145 bool isErrorStanza(); 00146 00147 protected: 00148 void generateAndSetNextId(); 00149 void parse(const QDomElement &element); 00151 00152 private: 00153 static uint s_uniqeIdNo; 00154 QString m_to; 00155 QString m_from; 00156 QString m_id; 00157 QString m_lang; 00158 QXmppStanza::Error m_error; 00159 QXmppElementList m_extensions; 00160 }; 00161 00162 #endif // QXMPPSTANZA_H