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:
00041 class Field
00042 {
00043 public:
00044 enum Type
00045 {
00046 BooleanField,
00047 FixedField,
00048 HiddenField,
00049 JidMultiField,
00050 JidSingleField,
00051 ListMultiField,
00052 ListSingleField,
00053 TextMultiField,
00054 TextPrivateField,
00055 TextSingleField,
00056 };
00057
00058 Field(QXmppDataForm::Field::Type type = QXmppDataForm::Field::TextSingleField);
00059
00060 QString description() const;
00061 void setDescription(const QString &description);
00062
00063 QString key() const;
00064 void setKey(const QString &key);
00065
00066 QString label() const;
00067 void setLabel(const QString &label);
00068
00069 QList<QPair<QString, QString> > options() const;
00070 void setOptions(const QList<QPair<QString, QString> > &options);
00071
00072 bool isRequired() const;
00073 void setRequired(bool required);
00074
00075 QXmppDataForm::Field::Type type() const;
00076 void setType(QXmppDataForm::Field::Type type);
00077
00078 QVariant value() const;
00079 void setValue(const QVariant &value);
00080
00081 private:
00082 QString m_description;
00083 QString m_key;
00084 QString m_label;
00085 QList<QPair<QString, QString> > m_options;
00086 bool m_required;
00087 QXmppDataForm::Field::Type m_type;
00088 QVariant m_value;
00089 };
00090
00091 enum Type
00092 {
00093 None,
00094 Form,
00095 Submit,
00096 Cancel,
00097 Result,
00098 };
00099
00100 QXmppDataForm(QXmppDataForm::Type type = QXmppDataForm::None);
00101
00102 QString instructions() const;
00103 void setInstructions(const QString &instructions);
00104
00105 QList<Field> fields() const;
00106 QList<Field> &fields();
00107 void setFields(const QList<QXmppDataForm::Field> &fields);
00108
00109 QString title() const;
00110 void setTitle(const QString &title);
00111
00112 QXmppDataForm::Type type() const;
00113 void setType(QXmppDataForm::Type type);
00114
00115 bool isNull() const;
00116
00117 void parse(const QDomElement &element);
00118 void toXml(QXmlStreamWriter *writer) const;
00119
00120 private:
00121 QString m_instructions;
00122 QList<Field> m_fields;
00123 QString m_title;
00124 QXmppDataForm::Type m_type;
00125 };
00126
00127 #endif