summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms/cocoa/qcocoamimetypes.mm
diff options
context:
space:
mode:
authorRichard Moe Gustavsen <richard.gustavsen@digia.com>2014-04-28 14:41:04 +0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2014-05-16 14:10:32 +0200
commit6388163df8f660ae38cb60e58afe9c9833b2512e (patch)
tree9d4ffa5694f5b4b4210c61eb2c86548278a39b64 /src/plugins/platforms/cocoa/qcocoamimetypes.mm
parent514697893f5be4bbef18b1ae5c7b61531c689dbe (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/platforms/cocoa/qcocoamimetypes.mm')
-rw-r--r--src/plugins/platforms/cocoa/qcocoamimetypes.mm62
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;
}