51 if (originalMime == newMime)
57 if (originalMime == uriList() && newMime == mozUrl()) {
58 if (data.size() > 1) {
59 const quint8 byte0 = data.at(0);
60 const quint8 byte1 = data.at(1);
62 if ((byte0 == 0xff && byte1 == 0xfe) || (byte0 == 0xfe && byte1 == 0xff)
63 || (byte0 != 0 && byte1 == 0) || (byte0 == 0 && byte1 != 0)) {
65 const QString str = QString::fromUtf16(
66 reinterpret_cast<
const char16_t *>(data.constData()), data.size() / 2);
68 const auto urls = QStringView{str}.split(u'\n');
70 for (
int i = 0; i < urls.size(); i += 2) {
71 const QUrl url(urls.at(i).trimmed().toString());
73 converted += url.toEncoded();
81 QByteArray converted = data;
82 if (converted.endsWith(
'\0'))
202 auto it = m_data.constFind(mimeType);
203 if (it != m_data.constEnd())
206 QString mime = mimeType;
208 if (!m_types.contains(mimeType)) {
209 if (mimeType == plainText() && m_types.contains(utf8Text()))
211 else if (mimeType == uriList() && m_types.contains(mozUrl()))
217#if QT_CONFIG(xdg_desktop_portal_file_transfer)
218 const bool retrieveFilesFromPortal = mimeType == uriList() && m_types.contains(QXdgDesktopPortalFileTransfer::fileTransferMimeType());
219 if (retrieveFilesFromPortal) {
220 mime = QXdgDesktopPortalFileTransfer::fileTransferMimeType();
224 QByteArray content = readData(mime).value_or(QByteArray());
226 content = convertData(mimeType, mime, content);
228#if QT_CONFIG(xdg_desktop_portal_file_transfer)
229 if (retrieveFilesFromPortal && !content.isEmpty()) {
230 const auto paths = QXdgDesktopPortalFileTransfer::retrieveFiles(QString::fromUtf8(content));
231 if (!paths.empty()) {
233 for (
const auto &path : paths) {
234 content += QUrl::fromLocalFile(path).toEncoded();
238 qCInfo(lcQpaWayland) <<
"Failed retrieving files, falling back to uris";
239 content = readData(mime).value_or(QByteArray());
244 if (mimeType != portalFileTransfer())
245 m_data.insert(mimeType, content);