aboutsummaryrefslogtreecommitdiff
path: root/src/base/QXmppDataForm.h
diff options
context:
space:
mode:
authorLinus Jahn <lnj@kaidan.im>2019-10-20 16:43:50 +0200
committerLNJ <lnj@kaidan.im>2019-10-23 13:19:32 +0200
commit979918a40759064c01f31bc099217086b81936d9 (patch)
tree29b5803c7d816af2d3cf42a4fd7651a8d9c1cd5c /src/base/QXmppDataForm.h
parent86ca79a0d5480a307e6117798e3c216ad23fca51 (diff)
downloadqxmpp-979918a40759064c01f31bc099217086b81936d9.tar.gz
Refactor data form media element
* Add QXmppDataForm::MediaSource instead of using a QPair<QString, QString> to save the URIs and content types. * Deprecate QXmppDataForm::Media: The extra class was useless: Each Field has exactly one media element and the media element has only two attributes (size and media sources) * Add mediaSources and mediaSize attributes to the QXmppDataForm::Field * Deprecate getters/setters for the Media element of QXmppDataForm::Field (they are still working and tested)
Diffstat (limited to 'src/base/QXmppDataForm.h')
-rw-r--r--src/base/QXmppDataForm.h71
1 files changed, 66 insertions, 5 deletions
diff --git a/src/base/QXmppDataForm.h b/src/base/QXmppDataForm.h
index c89710bf..6c8390f4 100644
--- a/src/base/QXmppDataForm.h
+++ b/src/base/QXmppDataForm.h
@@ -3,6 +3,7 @@
*
* Author:
* Jeremy Lainé
+ * Linus Jahn
*
* Source:
* https://github.com/qxmpp-project/qxmpp
@@ -24,53 +25,98 @@
#ifndef QXMPPDATAFORM_H
#define QXMPPDATAFORM_H
+#include "QXmppStanza.h"
+
+#if QXMPP_DEPRECATED_SINCE(1, 1)
#include <QPair>
+#endif
#include <QVariant>
+#include <QVector>
-#include "QXmppStanza.h"
+class QMimeType;
+class QUrl;
class QXmppDataFormPrivate;
class QXmppDataFormFieldPrivate;
class QXmppDataFormMediaPrivate;
+class QXmppDataFormMediaSourcePrivate;
/// \brief The QXmppDataForm class represents a data form as defined by
/// XEP-0004: Data Forms.
-///
class QXMPP_EXPORT QXmppDataForm
{
public:
- /// \brief The QXmppDataForm::Media class represents a media field
- /// as defined by XEP-0221: Data Forms Media Element.
+ /// \brief The \c QXmppDataForm::MediaSource class represents a link to one
+ /// of possibly multiple sources for a media element from XEP-0221: Data
+ /// Forms Media Element consisting of a MIME type and a QUrl.
///
+ /// \since QXmpp 1.1
+
+ class QXMPP_EXPORT MediaSource
+ {
+ public:
+ MediaSource();
+ MediaSource(const QUrl &uri, const QMimeType &contentType);
+ MediaSource(const QXmppDataForm::MediaSource &);
+ ~MediaSource();
+
+ MediaSource &operator=(const MediaSource &);
+
+ QUrl uri() const;
+ void setUri(const QUrl &uri);
+
+ QMimeType contentType() const;
+ void setContentType(const QMimeType &contentType);
+
+ bool operator==(const MediaSource &other) const;
+
+ private:
+ QSharedDataPointer<QXmppDataFormMediaSourcePrivate> d;
+ };
+
+#if QXMPP_DEPRECATED_SINCE(1, 1)
+ /// \brief The QXmppDataForm::Media class represents a media field as
+ /// defined by XEP-0221: Data Forms Media Element.
+ ///
+ /// \deprecated This class is deprecated since QXmpp 1.1.
class QXMPP_EXPORT Media
{
public:
+ QT_DEPRECATED_X("Use QXmppDataForm::Field() instead")
Media();
+ QT_DEPRECATED_X("Use QXmppDataForm::Field() instead")
Media(const QXmppDataForm::Media &other);
~Media();
QXmppDataForm::Media& operator=(const QXmppDataForm::Media &other);
+ QT_DEPRECATED_X("Use QXmppDataForm::Field::mediaSize().height() instead")
int height() const;
+ QT_DEPRECATED_X("Use QXmppDataForm::Field::mediaSize().setHeight() instead")
void setHeight(int height);
+ QT_DEPRECATED_X("Use QXmppDataForm::Field::mediaSize().width() instead")
int width() const;
+ QT_DEPRECATED_X("Use QXmppDataForm::Field::mediaSize().setWidth() instead")
void setWidth(int width);
+ QT_DEPRECATED_X("Use QXmppDataForm::Field::mediaSources() instead")
QList<QPair<QString, QString> > uris() const;
+ QT_DEPRECATED_X("Use QXmppDataForm::Field::setMediaSources() instead")
void setUris(const QList<QPair<QString, QString> > &uris);
+ QT_DEPRECATED_X("Use QXmppDataForm::Field::mediaSources().isEmpty() instead")
bool isNull() const;
private:
QSharedDataPointer<QXmppDataFormMediaPrivate> d;
};
+#endif
/// \brief The QXmppDataForm::Field class represents a data form field
/// as defined by XEP-0004: Data Forms.
- ///
class QXMPP_EXPORT Field
{
@@ -105,8 +151,13 @@ public:
QString label() const;
void setLabel(const QString &label);
+#if QXMPP_DEPRECATED_SINCE(1, 1)
+ QT_DEPRECATED_X("Use QXmppDataForm::Field::mediaSources() or QXmppDataForm::Field::mediaSize() instead")
Media media() const;
+
+ QT_DEPRECATED_X("Use QXmppDataForm::Field::setMediaSources() or QXmppDataForm::Field::setMediaSize() instead")
void setMedia(const Media &media);
+#endif
QList<QPair<QString, QString> > options() const;
void setOptions(const QList<QPair<QString, QString> > &options);
@@ -120,6 +171,16 @@ public:
QVariant value() const;
void setValue(const QVariant &value);
+ QVector<QXmppDataForm::MediaSource> &mediaSources();
+ QVector<QXmppDataForm::MediaSource> mediaSources() const;
+ void setMediaSources(const QVector<QXmppDataForm::MediaSource> &mediaSources);
+
+ QSize mediaSize() const;
+ QSize &mediaSize();
+ void setMediaSize(const QSize &size);
+
+ bool operator==(const Field &other) const;
+
private:
QSharedDataPointer<QXmppDataFormFieldPrivate> d;
};