00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #ifndef QXMPPDATAFORM_H
00025 #define QXMPPDATAFORM_H
00026
00027 #include <QPair>
00028 #include <QString>
00029 #include <QVariant>
00030 #include <QXmlStreamWriter>
00031
00032 class QDomElement;
00033
00037
00038 class QXmppDataForm
00039 {
00040 public:
00044
00045 class Field
00046 {
00047 public:
00049 enum Type
00050 {
00051 BooleanField,
00052 FixedField,
00053 HiddenField,
00054 JidMultiField,
00055 JidSingleField,
00056 ListMultiField,
00057 ListSingleField,
00058 TextMultiField,
00059 TextPrivateField,
00060 TextSingleField,
00061 };
00062
00063 Field(QXmppDataForm::Field::Type type = QXmppDataForm::Field::TextSingleField);
00064
00065 QString description() const;
00066 void setDescription(const QString &description);
00067
00068 QString key() const;
00069 void setKey(const QString &key);
00070
00071 QString label() const;
00072 void setLabel(const QString &label);
00073
00074 QList<QPair<QString, QString> > options() const;
00075 void setOptions(const QList<QPair<QString, QString> > &options);
00076
00077 bool isRequired() const;
00078 void setRequired(bool required);
00079
00080 QXmppDataForm::Field::Type type() const;
00081 void setType(QXmppDataForm::Field::Type type);
00082
00083 QVariant value() const;
00084 void setValue(const QVariant &value);
00085
00086 private:
00087 QString m_description;
00088 QString m_key;
00089 QString m_label;
00090 QList<QPair<QString, QString> > m_options;
00091 bool m_required;
00092 QXmppDataForm::Field::Type m_type;
00093 QVariant m_value;
00094 };
00095
00097 enum Type
00098 {
00099 None,
00100 Form,
00101
00102 Submit,
00103
00104 Cancel,
00105
00106 Result,
00107
00108
00109 };
00110
00111 QXmppDataForm(QXmppDataForm::Type type = QXmppDataForm::None);
00112
00113 QString instructions() const;
00114 void setInstructions(const QString &instructions);
00115
00116 QList<Field> fields() const;
00117 QList<Field> &fields();
00118 void setFields(const QList<QXmppDataForm::Field> &fields);
00119
00120 QString title() const;
00121 void setTitle(const QString &title);
00122
00123 QXmppDataForm::Type type() const;
00124 void setType(QXmppDataForm::Type type);
00125
00126 bool isNull() const;
00127
00129 void parse(const QDomElement &element);
00130 void toXml(QXmlStreamWriter *writer) const;
00132
00133 private:
00134 QString m_instructions;
00135 QList<Field> m_fields;
00136 QString m_title;
00137 QXmppDataForm::Type m_type;
00138 };
00139
00140 #endif