Changeset View
Changeset View
Standalone View
Standalone View
src/lib/io/kurlmimedata.cpp
Show First 20 Lines • Show All 55 Lines • ▼ Show 20 Line(s) | 48 | { | |||
---|---|---|---|---|---|
56 | mimeData->setData(QStringLiteral("application/x-kio-metadata"), metaDataData); | 56 | mimeData->setData(QStringLiteral("application/x-kio-metadata"), metaDataData); | ||
57 | } | 57 | } | ||
58 | 58 | | |||
59 | QStringList KUrlMimeData::mimeDataTypes() | 59 | QStringList KUrlMimeData::mimeDataTypes() | ||
60 | { | 60 | { | ||
61 | return QStringList() << QString::fromLatin1(s_kdeUriListMime) << QStringLiteral("text/uri-list"); | 61 | return QStringList() << QString::fromLatin1(s_kdeUriListMime) << QStringLiteral("text/uri-list"); | ||
62 | } | 62 | } | ||
63 | 63 | | |||
64 | static QList<QUrl> extractKdeUriList(const QMimeData *mimeData) | ||||
65 | { | ||||
66 | QList<QUrl> uris; | ||||
67 | const QByteArray ba = mimeData->data(QString::fromLatin1(s_kdeUriListMime)); | ||||
mwolff: future cleanup: remove all the `QString::fromLatin1(s_...)` in this file with a call to… | |||||
dfaure: OK, done in https://commits.kde.org/kcoreaddons/49dc2cff8105304cd726a5c927956e0b4d1250e2 | |||||
68 | // Code from qmimedata.cpp | ||||
69 | QList<QByteArray> urls = ba.split('\n'); | ||||
70 | for (int i = 0; i < urls.size(); ++i) { | ||||
71 | QByteArray data = urls.at(i).trimmed(); | ||||
72 | if (!data.isEmpty()) { | ||||
73 | uris.append(QUrl::fromEncoded(data)); | ||||
74 | } | ||||
75 | } | ||||
76 | return uris; | ||||
77 | } | ||||
78 | | ||||
79 | | ||||
64 | QList<QUrl> KUrlMimeData::urlsFromMimeData(const QMimeData *mimeData, | 80 | QList<QUrl> KUrlMimeData::urlsFromMimeData(const QMimeData *mimeData, | ||
65 | DecodeOptions decodeOptions, | 81 | DecodeOptions decodeOptions, | ||
66 | MetaDataMap *metaData) | 82 | MetaDataMap *metaData) | ||
67 | { | 83 | { | ||
68 | QList<QUrl> uris; | 84 | QList<QUrl> uris; | ||
69 | const char *firstMimeType = s_kdeUriListMime; | | |||
70 | const char *secondMimeType = "text/uri-list"; | | |||
71 | if (decodeOptions == PreferLocalUrls) { | 85 | if (decodeOptions == PreferLocalUrls) { | ||
72 | qSwap(firstMimeType, secondMimeType); | | |||
73 | } | | |||
74 | QByteArray ba = mimeData->data(QString::fromLatin1(firstMimeType)); | | |||
75 | if (ba.isEmpty()) { | | |||
76 | // Extracting uris from text/uri-list, use the much faster QMimeData method urls() | 86 | // Extracting uris from text/uri-list, use the much faster QMimeData method urls() | ||
77 | if (mimeData->hasUrls()) { | | |||
78 | uris = mimeData->urls(); | 87 | uris = mimeData->urls(); | ||
88 | if (uris.isEmpty()) { | ||||
89 | uris = extractKdeUriList(mimeData); | ||||
79 | } | 90 | } | ||
80 | } else { | 91 | } else { | ||
81 | // Code from qmimedata.cpp | 92 | uris = extractKdeUriList(mimeData); | ||
82 | QList<QByteArray> urls = ba.split('\n'); | 93 | if (uris.isEmpty()) { | ||
83 | for (int i = 0; i < urls.size(); ++i) { | 94 | uris = mimeData->urls(); | ||
84 | QByteArray data = urls.at(i).trimmed(); | | |||
85 | if (!data.isEmpty()) { | | |||
86 | uris.append(QUrl::fromEncoded(data)); | | |||
87 | } | | |||
88 | } | 95 | } | ||
89 | } | 96 | } | ||
90 | 97 | | |||
91 | if (metaData) { | 98 | if (metaData) { | ||
92 | const QByteArray metaDataPayload = mimeData->data(QStringLiteral("application/x-kio-metadata")); | 99 | const QByteArray metaDataPayload = mimeData->data(QStringLiteral("application/x-kio-metadata")); | ||
93 | if (!metaDataPayload.isEmpty()) { | 100 | if (!metaDataPayload.isEmpty()) { | ||
94 | QString str = QString::fromUtf8(metaDataPayload.constData()); | 101 | QString str = QString::fromUtf8(metaDataPayload.constData()); | ||
95 | Q_ASSERT(str.endsWith(QLatin1String("$@@$"))); | 102 | Q_ASSERT(str.endsWith(QLatin1String("$@@$"))); | ||
Show All 18 Lines |
future cleanup: remove all the QString::fromLatin1(s_...) in this file with a call to QString kdeUriListMime() { return QStringLiteral("..."); }