diff options
author | Richard Moe Gustavsen <richard.gustavsen@digia.com> | 2014-04-28 14:41:04 +0200 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2014-05-16 14:10:32 +0200 |
commit | 6388163df8f660ae38cb60e58afe9c9833b2512e (patch) | |
tree | 9d4ffa5694f5b4b4210c61eb2c86548278a39b64 /src/plugins | |
parent | 514697893f5be4bbef18b1ae5c7b61531c689dbe (diff) |
qmacmime: rename and move QMacPasteboardMimePlainText to the cocoa plugin
com.apple.traditional-mac-plain-text is not in use on iOS
according to Apples UTType reference. So we enable it only
for OS X by moving it into the cocoa port.
The order in which we instanciate convertors matters when
the application is reading data from the pasteboard.
But since QMacPasteboardMimePlainText should come before the
other "text/plain" convertors on OS X, moving it to the cocoa
port is safe as those convertors are instanciated after
those in qmacmime.
Change-Id: I76b9b14e5ce78f34e0f1ecbfee71e48a27a4687b
Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
Diffstat (limited to 'src/plugins')
-rw-r--r-- | src/plugins/platforms/cocoa/qcocoamimetypes.mm | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/src/plugins/platforms/cocoa/qcocoamimetypes.mm b/src/plugins/platforms/cocoa/qcocoamimetypes.mm index 8151d31449..f6487095e7 100644 --- a/src/plugins/platforms/cocoa/qcocoamimetypes.mm +++ b/src/plugins/platforms/cocoa/qcocoamimetypes.mm @@ -45,6 +45,67 @@ QT_BEGIN_NAMESPACE +class QMacPasteboardMimeTraditionalMacPlainText : public QMacInternalPasteboardMime { +public: + QMacPasteboardMimeTraditionalMacPlainText() : QMacInternalPasteboardMime(MIME_ALL) { } + QString convertorName(); + + QString flavorFor(const QString &mime); + QString mimeFor(QString flav); + bool canConvert(const QString &mime, QString flav); + QVariant convertToMime(const QString &mime, QList<QByteArray> data, QString flav); + QList<QByteArray> convertFromMime(const QString &mime, QVariant data, QString flav); +}; + +QString QMacPasteboardMimeTraditionalMacPlainText::convertorName() +{ + return QLatin1String("PlainText (traditional-mac-plain-text)"); +} + +QString QMacPasteboardMimeTraditionalMacPlainText::flavorFor(const QString &mime) +{ + if (mime == QLatin1String("text/plain")) + return QLatin1String("com.apple.traditional-mac-plain-text"); + return QString(); +} + +QString QMacPasteboardMimeTraditionalMacPlainText::mimeFor(QString flav) +{ + if (flav == QLatin1String("com.apple.traditional-mac-plain-text")) + return QLatin1String("text/plain"); + return QString(); +} + +bool QMacPasteboardMimeTraditionalMacPlainText::canConvert(const QString &mime, QString flav) +{ + return flavorFor(mime) == flav; +} + +QVariant QMacPasteboardMimeTraditionalMacPlainText::convertToMime(const QString &mimetype, QList<QByteArray> data, QString flavor) +{ + if (data.count() > 1) + qWarning("QMacPasteboardMimeTraditionalMacPlainText: Cannot handle multiple member data"); + const QByteArray &firstData = data.first(); + QVariant ret; + if (flavor == QLatin1String("com.apple.traditional-mac-plain-text")) { + return QString::fromCFString(CFStringCreateWithBytes(kCFAllocatorDefault, + reinterpret_cast<const UInt8 *>(firstData.constData()), + firstData.size(), CFStringGetSystemEncoding(), false)); + } else { + qWarning("QMime::convertToMime: unhandled mimetype: %s", qPrintable(mimetype)); + } + return ret; +} + +QList<QByteArray> QMacPasteboardMimeTraditionalMacPlainText::convertFromMime(const QString &, QVariant data, QString flavor) +{ + QList<QByteArray> ret; + QString string = data.toString(); + if (flavor == QLatin1String("com.apple.traditional-mac-plain-text")) + ret.append(string.toLatin1()); + return ret; +} + class QMacPasteboardMimeTiff : public QMacInternalPasteboardMime { public: QMacPasteboardMimeTiff() : QMacInternalPasteboardMime(MIME_ALL) { } @@ -204,6 +265,7 @@ QList<QByteArray> QMacPasteboardMimeRtfText::convertFromMime(const QString &mime void QCocoaMimeTypes::initializeMimeTypes() { + new QMacPasteboardMimeTraditionalMacPlainText; new QMacPasteboardMimeTiff; new QMacPasteboardMimeRtfText; } |