1 | /* |
2 | SPDX-FileCopyrightText: 2015 Aleix Pol Gonzalez <aleixpol@kde.org> |
3 | |
4 | SPDX-License-Identifier: MIT |
5 | */ |
6 | |
7 | #ifndef MIMEDATAWRAPPER_H |
8 | #define MIMEDATAWRAPPER_H |
9 | |
10 | #include <QJsonArray> |
11 | #include <QObject> |
12 | #include <QString> |
13 | #include <qqmlregistration.h> |
14 | |
15 | class QMimeData; |
16 | class QObject; |
17 | /*! |
18 | * \qmltype MimeDataWrapper |
19 | * \inqmlmodule org.kde.draganddrop |
20 | * \brief Exposes a const QMimeData instance. |
21 | * |
22 | * In contrast to MimeData, doesn't create a copy of the QMimeData instance. |
23 | */ |
24 | class MimeDataWrapper : public QObject |
25 | { |
26 | Q_OBJECT |
27 | QML_ELEMENT |
28 | QML_UNCREATABLE("MimeDataWrapper cannot be created from QML." ) |
29 | |
30 | /*! |
31 | * \qmlproperty string MimeDataWrapper::text |
32 | * A plain text (MIME type text/plain) representation of the data. |
33 | */ |
34 | Q_PROPERTY(QString text READ text CONSTANT) |
35 | |
36 | /*! |
37 | * \qmlproperty string MimeDataWrapper::html |
38 | * A string if the data stored in the object is HTML (MIME type text/html); otherwise returns an empty string. |
39 | */ |
40 | Q_PROPERTY(QString html READ html CONSTANT) |
41 | |
42 | /*! |
43 | * \qmlproperty url MimeDataWrapper::url |
44 | * Url contained in the mimedata |
45 | */ |
46 | Q_PROPERTY(QUrl url READ url CONSTANT) |
47 | |
48 | /*! |
49 | * \qmlproperty QJsonArray MimeDataWrapper::urls |
50 | * A list of URLs contained within the MIME data object. |
51 | * URLs correspond to the MIME type text/uri-list. |
52 | */ |
53 | Q_PROPERTY(QJsonArray urls READ urls CONSTANT) |
54 | |
55 | /*! |
56 | * \qmlproperty var MimeDataWrapper::color |
57 | * A color if the data stored in the object represents a color (MIME type application/x-color); otherwise QVariant(). |
58 | */ |
59 | Q_PROPERTY(QVariant color READ color CONSTANT) |
60 | |
61 | /*! |
62 | * \qmlproperty var MimeDataWrapper::source |
63 | * The graphical item on the scene that started the drag event. It may be null. |
64 | */ |
65 | Q_PROPERTY(QVariant source READ source CONSTANT) |
66 | |
67 | /*! |
68 | * \qmlproperty list<string> MimeDataWrapper::formats |
69 | * Mimetypes provided by the mime data instance |
70 | * |
71 | * \sa QMimeData::formats |
72 | */ |
73 | Q_PROPERTY(QStringList formats READ formats CONSTANT) |
74 | |
75 | /*! |
76 | * \qmlproperty bool MimeDataWrapper::hasUrls |
77 | * \sa QMimeData::hasUrls |
78 | */ |
79 | Q_PROPERTY(bool hasUrls READ hasUrls CONSTANT) |
80 | |
81 | /*! |
82 | * \qmlproperty QMimeData* MimeDataWrapper::mimeData |
83 | * Returns the wrapped object |
84 | */ |
85 | Q_PROPERTY(QMimeData *mimeData READ mimeData CONSTANT) |
86 | |
87 | public: |
88 | MimeDataWrapper(const QMimeData *data, QObject *parent); |
89 | |
90 | QString text() const; |
91 | QString html() const; |
92 | QUrl url() const; |
93 | QJsonArray urls() const; |
94 | bool hasUrls() const; |
95 | QVariant color() const; |
96 | QStringList formats() const; |
97 | QVariant source() const; |
98 | QMimeData *mimeData() const; |
99 | |
100 | /*! \qmlmethod QByteArray MimeDataWrapper::getDataAsByteArray(string format) */ |
101 | Q_INVOKABLE QByteArray getDataAsByteArray(const QString &format); |
102 | |
103 | private: |
104 | const QMimeData *m_data; |
105 | }; |
106 | |
107 | #endif |
108 | |