Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
qwaylandmimehelper.cpp
Go to the documentation of this file.
1// Copyright (C) 2016 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3// Qt-Security score:significant reason:default
4
6#include <QImage>
7#include <QColor>
8#include <QUrl>
9#include <QBuffer>
10#include <QImageWriter>
11
13
14QByteArray QWaylandMimeHelper::getByteArray(QMimeData *mimeData, const QString &mimeType)
15{
16 QByteArray content;
17 if (mimeType == QLatin1String("text/plain")) {
18 content = mimeData->text().toUtf8();
19 } else if (mimeData->hasImage()
20 && (mimeType == QLatin1String("application/x-qt-image")
21 || mimeType.startsWith(QLatin1String("image/")))) {
22 QImage image = qvariant_cast<QImage>(mimeData->imageData());
23 if (!image.isNull()) {
24 QBuffer buf;
25 buf.open(QIODevice::ReadWrite);
26 QByteArray fmt = "BMP";
27 if (mimeType.startsWith(QLatin1String("image/"))) {
28 QByteArray imgFmt = mimeType.mid(6).toLower().toLatin1();
29 if (QImageWriter::supportedImageFormats().contains(imgFmt))
30 fmt = imgFmt;
31 }
32 QImageWriter wr(&buf, fmt);
33 wr.write(image);
34 content = buf.buffer();
35 }
36 } else if (mimeType == QLatin1String("application/x-color")) {
37 content = qvariant_cast<QColor>(mimeData->colorData()).name().toLatin1();
38 } else if (mimeType == QLatin1String("text/uri-list")) {
39 QList<QUrl> urls = mimeData->urls();
40 for (int i = 0; i < urls.size(); ++i) {
41 content.append(urls.at(i).toEncoded());
42 content.append("\r\n");
43 }
44 } else {
45 content = mimeData->data(mimeType);
46 }
47 return content;
48}
49
50QT_END_NAMESPACE
Combined button and popup list for selecting options.