QXmpp  Version: 1.6.0
QXmppDataForm.h
1 // SPDX-FileCopyrightText: 2010 Jeremy LainĂ© <jeremy.laine@m4x.org>
2 // SPDX-FileCopyrightText: 2019 Linus Jahn <lnj@kaidan.im>
3 //
4 // SPDX-License-Identifier: LGPL-2.1-or-later
5 
6 #ifndef QXMPPDATAFORM_H
7 #define QXMPPDATAFORM_H
8 
9 #include "QXmppStanza.h"
10 
11 #if QXMPP_DEPRECATED_SINCE(1, 1)
12 #include <QPair>
13 #endif
14 #include <QVariant>
15 #include <QVector>
16 
17 class QMimeType;
18 class QUrl;
19 
20 class QXmppDataFormBase;
21 class QXmppDataFormPrivate;
22 class QXmppDataFormFieldPrivate;
23 class QXmppDataFormMediaPrivate;
24 class QXmppDataFormMediaSourcePrivate;
25 
26 class QXMPP_EXPORT QXmppDataForm
27 {
28 public:
29  class QXMPP_EXPORT MediaSource
30  {
31  public:
32  MediaSource();
33  MediaSource(const QUrl &uri, const QMimeType &contentType);
36  ~MediaSource();
37 
38  MediaSource &operator=(const MediaSource &);
39  MediaSource &operator=(MediaSource &&);
40 
41  QUrl uri() const;
42  void setUri(const QUrl &uri);
43 
44  QMimeType contentType() const;
45  void setContentType(const QMimeType &contentType);
46 
47  bool operator==(const MediaSource &other) const;
48 
49  private:
50  QSharedDataPointer<QXmppDataFormMediaSourcePrivate> d;
51  };
52 
53 #if QXMPP_DEPRECATED_SINCE(1, 1)
54  class QXMPP_EXPORT Media
55  {
56  public:
57  QT_DEPRECATED_X("Use QXmppDataForm::Field() instead")
58  Media();
59  QT_DEPRECATED_X("Use QXmppDataForm::Field() instead")
60  Media(const QXmppDataForm::Media &other);
61  ~Media();
62 
63  QXmppDataForm::Media &operator=(const QXmppDataForm::Media &other);
64 
65  QT_DEPRECATED_X("Use QXmppDataForm::Field::mediaSize().height() instead")
66  int height() const;
67  QT_DEPRECATED_X("Use QXmppDataForm::Field::mediaSize().setHeight() instead")
68  void setHeight(int height);
69 
70  QT_DEPRECATED_X("Use QXmppDataForm::Field::mediaSize().width() instead")
71  int width() const;
72  QT_DEPRECATED_X("Use QXmppDataForm::Field::mediaSize().setWidth() instead")
73  void setWidth(int width);
74 
75  QT_DEPRECATED_X("Use QXmppDataForm::Field::mediaSources() instead")
76  QList<QPair<QString, QString>> uris() const;
77  QT_DEPRECATED_X("Use QXmppDataForm::Field::setMediaSources() instead")
78  void setUris(const QList<QPair<QString, QString>> &uris);
79 
80  QT_DEPRECATED_X("Use QXmppDataForm::Field::mediaSources().isEmpty() instead")
81  bool isNull() const;
82 
83  private:
84  QSharedDataPointer<QXmppDataFormMediaPrivate> d;
85  };
86 #endif
87 
88  class QXMPP_EXPORT Field
89  {
90  public:
92  enum Type {
93  BooleanField,
94  FixedField,
95  HiddenField,
96  JidMultiField,
97  JidSingleField,
98  ListMultiField,
99  ListSingleField,
100  TextMultiField,
101  TextPrivateField,
102  TextSingleField
103  };
104 
105  Field(Type type = TextSingleField,
106  const QString &key = {},
107  const QVariant &value = {},
108  bool isRequired = false,
109  const QString &label = {},
110  const QString &description = {},
111  const QList<QPair<QString, QString>> &options = {});
112  Field(const QXmppDataForm::Field &other);
113  Field(QXmppDataForm::Field &&);
114  ~Field();
115 
116  QXmppDataForm::Field &operator=(const QXmppDataForm::Field &other);
118 
119  QString description() const;
120  void setDescription(const QString &description);
121 
122  QString key() const;
123  void setKey(const QString &key);
124 
125  QString label() const;
126  void setLabel(const QString &label);
127 
128 #if QXMPP_DEPRECATED_SINCE(1, 1)
129  QT_DEPRECATED_X("Use QXmppDataForm::Field::mediaSources() or QXmppDataForm::Field::mediaSize() instead")
130  Media media() const;
131 
132  QT_DEPRECATED_X("Use QXmppDataForm::Field::setMediaSources() or QXmppDataForm::Field::setMediaSize() instead")
133  void setMedia(const Media &media);
134 #endif
135 
136  QList<QPair<QString, QString>> options() const;
137  void setOptions(const QList<QPair<QString, QString>> &options);
138 
139  bool isRequired() const;
140  void setRequired(bool required);
141 
142  QXmppDataForm::Field::Type type() const;
143  void setType(QXmppDataForm::Field::Type type);
144 
145  QVariant value() const;
146  void setValue(const QVariant &value);
147 
148  QVector<QXmppDataForm::MediaSource> &mediaSources();
149  QVector<QXmppDataForm::MediaSource> mediaSources() const;
150  void setMediaSources(const QVector<QXmppDataForm::MediaSource> &mediaSources);
151 
152  QSize mediaSize() const;
153  QSize &mediaSize();
154  void setMediaSize(const QSize &size);
155 
156  bool operator==(const Field &other) const;
157 
158  private:
159  QSharedDataPointer<QXmppDataFormFieldPrivate> d;
160  };
161 
163  enum Type {
165  Form,
166  Submit,
168  Cancel,
170  Result
172  };
175 
176  QXmppDataForm(Type type = None,
177  const QList<Field> &fields = {},
178  const QString &title = {},
179  const QString &instructions = {});
180  QXmppDataForm(const QXmppDataFormBase &based);
181  QXmppDataForm(const QXmppDataForm &other);
183  ~QXmppDataForm();
184 
185  QXmppDataForm &operator=(const QXmppDataForm &other);
186  QXmppDataForm &operator=(QXmppDataForm &&);
187 
188  QString instructions() const;
189  void setInstructions(const QString &instructions);
190 
191  QList<Field> fields() const;
192  QList<Field> &fields();
193  void setFields(const QList<QXmppDataForm::Field> &fields);
194 
195  QString title() const;
196  void setTitle(const QString &title);
197 
198  QXmppDataForm::Type type() const;
199  void setType(QXmppDataForm::Type type);
200 
201  QString formType() const;
202 
203  bool isNull() const;
204 
206  void parse(const QDomElement &element);
207  void toXml(QXmlStreamWriter *writer) const;
209 
210 private:
211  QSharedDataPointer<QXmppDataFormPrivate> d;
212 };
213 
214 Q_DECLARE_METATYPE(QXmppDataForm)
215 
216 #endif
Type
This enum is used to describe a form&#39;s type.
Definition: QXmppDataForm.h:163
Unknown form type.
Definition: QXmppDataForm.h:164
Type
This enum is used to describe a field&#39;s type.
Definition: QXmppDataForm.h:92
Definition: QXmppDataForm.h:29
Definition: QXmppDataForm.h:26
Definition: QXmppDataForm.h:88
Definition: QXmppDataForm.h:54
Definition: QXmppDataFormBase.h:14