diff options
Diffstat (limited to 'src/gui/platform/darwin')
-rw-r--r-- | src/gui/platform/darwin/qmacmime.mm | 107 | ||||
-rw-r--r-- | src/gui/platform/darwin/qmacmime_p.h | 2 |
2 files changed, 24 insertions, 85 deletions
diff --git a/src/gui/platform/darwin/qmacmime.mm b/src/gui/platform/darwin/qmacmime.mm index eb7d0f9875..4e2a65cf76 100644 --- a/src/gui/platform/darwin/qmacmime.mm +++ b/src/gui/platform/darwin/qmacmime.mm @@ -69,10 +69,10 @@ using namespace Qt::StringLiterals; \li com.apple.pict - converts to "application/x-qt-image" \endlist - When working with MIME data, Qt will iterate through all instances of QMacMime to + When working with MIME data, Qt will iterate through all instances of QMacMime to find find an instance that can convert to, or from, a specific MIME type. It will do this by calling - canConvert() on each instance, starting with (and choosing) the last created instance first. - The actual conversions will be done by using convertToMime() and convertFromMime(). + mimeForUti() or utiForMime() on each instance, starting with (and choosing) the last created + instance first. The actual conversions will be done by using convertToMime() and convertFromMime(). */ /*! @@ -117,35 +117,32 @@ int QMacMime::count(const QMimeData *mimeData) const return 1; } - -/* - \fn bool QMacMime::canConvert(const QString &mime, QString uti) +/*! + \fn bool QMacMime::canConvert(const QString &mime, const QString &uti) const Returns \c true if the converter can convert (both ways) between \a mime and \a uti; otherwise returns \c false. - - All subclasses must reimplement this pure virtual function. */ -/* +/*! \fn QString QMacMime::mimeForUti(QString uti) - Returns the MIME UTI used for Mac uti \a uti, or an empty string if - this converter does not support \a uti. + Returns the MIME type used for Mac UTI \a uti, or an empty string if + this converter does not support converting from \a uti. All subclasses must reimplement this pure virtual function. */ -/* +/*! \fn QString QMacMime::utiForMime(const QString &mime) Returns the Mac UTI used for MIME type \a mime, or an empty string if - this converter does not support \a mime. + this converter does not support converting from \a mime. All subclasses must reimplement this pure virtual function. */ -/* +/*! \fn QVariant QMacMime::convertToMime(const QString &mime, const QList<QByteArray> &data, const QString &uti) @@ -157,7 +154,7 @@ int QMacMime::count(const QMimeData *mimeData) const All subclasses must reimplement this pure virtual function. */ -/* +/*! \fn QList<QByteArray> QMacMime::convertFromMime(const QString &mime, const QVariant &data, const QString & uti) @@ -176,7 +173,6 @@ public: QString utiForMime(const QString &mime) const override; QString mimeForUti(const QString &uti) const override; - bool canConvert(const QString &mime, const QString &uti) const override; QVariant convertToMime(const QString &mime, const QList<QByteArray> &data, const QString &uti) const override; QList<QByteArray> convertFromMime(const QString &mime, const QVariant &data, @@ -200,11 +196,6 @@ QString QMacMimeAny::mimeForUti(const QString &uti) const return QString(); } -bool QMacMimeAny::canConvert(const QString &mime, const QString &uti) const -{ - return mimeForUti(uti) == mime; -} - QVariant QMacMimeAny::convertToMime(const QString &mime, const QList<QByteArray> &data, const QString &) const { @@ -237,7 +228,6 @@ public: QString utiForMime(const QString &mime) const override; QString mimeForUti(const QString &uti) const override; - bool canConvert(const QString &mime, const QString &uti) const override; QVariant convertToMime(const QString &mime, const QList<QByteArray> &data, const QString &uti) const override; QList<QByteArray> convertFromMime(const QString &mime, const QVariant &data, const QString &uti) const override; }; @@ -254,11 +244,6 @@ QString QMacMimeTypeName::mimeForUti(const QString &) const return QString(); } -bool QMacMimeTypeName::canConvert(const QString &, const QString &) const -{ - return false; -} - QVariant QMacMimeTypeName::convertToMime(const QString &, const QList<QByteArray> &, const QString &) const { QVariant ret; @@ -277,7 +262,6 @@ class QMacMimePlainTextFallback : public QMacMime public: QString utiForMime(const QString &mime) const override; QString mimeForUti(const QString &uti) const override; - bool canConvert(const QString &mime, const QString &uti) const override; QVariant convertToMime(const QString &mime, const QList<QByteArray> &data, const QString &uti) const override; QList<QByteArray> convertFromMime(const QString &mime, const QVariant &data, @@ -298,11 +282,6 @@ QString QMacMimePlainTextFallback::mimeForUti(const QString &uti) const return QString(); } -bool QMacMimePlainTextFallback::canConvert(const QString &mime, const QString &uti) const -{ - return mime == mimeForUti(uti); -} - QVariant QMacMimePlainTextFallback::convertToMime(const QString &mimetype, const QList<QByteArray> &data, const QString &uti) const @@ -339,7 +318,6 @@ class QMacMimeUnicodeText : public QMacMime public: QString utiForMime(const QString &mime) const override; QString mimeForUti(const QString &uti) const override; - bool canConvert(const QString &mime, const QString &uti) const override; QVariant convertToMime(const QString &mime, const QList<QByteArray> &data, const QString &uti) const override; QList<QByteArray> convertFromMime(const QString &mime, const QVariant &data, @@ -350,11 +328,10 @@ QString QMacMimeUnicodeText::utiForMime(const QString &mime) const { if (mime == "text/plain"_L1) return "public.utf16-plain-text"_L1; - int i = mime.indexOf("charset="_L1); - if (i >= 0) { - QString cs(mime.mid(i+8).toLower()); + if (qsizetype i = mime.indexOf("charset="_L1); i >= 0) { + QString cs(mime.mid(i + 8).toLower()); i = cs.indexOf(u';'); - if (i>=0) + if (i >= 0) cs = cs.left(i); if (cs == "system"_L1) return "public.utf8-plain-text"_L1; @@ -371,12 +348,6 @@ QString QMacMimeUnicodeText::mimeForUti(const QString &uti) const return QString(); } -bool QMacMimeUnicodeText::canConvert(const QString &mime, const QString &uti) const -{ - return (mime == "text/plain"_L1 - && (uti == "public.utf8-plain-text"_L1 || (uti == "public.utf16-plain-text"_L1))); -} - QVariant QMacMimeUnicodeText::convertToMime(const QString &mimetype, const QList<QByteArray> &data, const QString &uti) const @@ -430,7 +401,6 @@ class QMacMimeHTMLText : public QMacMime public: QString utiForMime(const QString &mime) const override; QString mimeForUti(const QString &uti) const override; - bool canConvert(const QString &mime, const QString &uti) const override; QVariant convertToMime(const QString &mime, const QList<QByteArray> &data, const QString &uti) const override; QList<QByteArray> convertFromMime(const QString &mime, const QVariant &data, @@ -451,11 +421,6 @@ QString QMacMimeHTMLText::mimeForUti(const QString &uti) const return QString(); } -bool QMacMimeHTMLText::canConvert(const QString &mime, const QString &uti) const -{ - return utiForMime(mime) == uti; -} - QVariant QMacMimeHTMLText::convertToMime(const QString &mimeType, const QList<QByteArray> &data, const QString &uti) const @@ -483,7 +448,6 @@ class QMacMimeRtfText : public QMacMime public: QString utiForMime(const QString &mime) const override; QString mimeForUti(const QString &uti) const override; - bool canConvert(const QString &mime, const QString &uti) const override; QVariant convertToMime(const QString &mime, const QList<QByteArray> &data, const QString &uti) const override; QList<QByteArray> convertFromMime(const QString &mime, const QVariant &data, @@ -504,11 +468,6 @@ QString QMacMimeRtfText::mimeForUti(const QString &uti) const return QString(); } -bool QMacMimeRtfText::canConvert(const QString &mime, const QString &uti) const -{ - return mime == mimeForUti(uti); -} - QVariant QMacMimeRtfText::convertToMime(const QString &mimeType, const QList<QByteArray> &data, const QString &uti) const @@ -557,7 +516,6 @@ class QMacMimeFileUri : public QMacMime public: QString utiForMime(const QString &mime) const override; QString mimeForUti(const QString &uti) const override; - bool canConvert(const QString &mime, const QString &uti) const override; QVariant convertToMime(const QString &mime, const QList<QByteArray> &data, const QString &uti) const override; QList<QByteArray> convertFromMime(const QString &mime, const QVariant &data, @@ -579,11 +537,6 @@ QString QMacMimeFileUri::mimeForUti(const QString &uti) const return QString(); } -bool QMacMimeFileUri::canConvert(const QString &mime, const QString &uti) const -{ - return mime == "text/uri-list"_L1 && uti == "public.file-url"_L1; -} - QVariant QMacMimeFileUri::convertToMime(const QString &mime, const QList<QByteArray> &data, const QString &uti) const @@ -646,7 +599,6 @@ class QMacMimeUrl : public QMacMime public: QString utiForMime(const QString &mime) const override; QString mimeForUti(const QString &uti) const override; - bool canConvert(const QString &mime, const QString &uti) const override; QVariant convertToMime(const QString &mime, const QList<QByteArray> &data, const QString &uti) const override; QList<QByteArray> convertFromMime(const QString &mime, const QVariant &data, @@ -667,12 +619,6 @@ QString QMacMimeUrl::mimeForUti(const QString &uti) const return QString(); } -bool QMacMimeUrl::canConvert(const QString &mime, const QString &uti) const -{ - return uti == "public.url"_L1 - && mime == "text/uri-list"_L1; -} - QVariant QMacMimeUrl::convertToMime(const QString &mime, const QList<QByteArray> &data, const QString &uti) const { @@ -717,18 +663,12 @@ class QMacMimeVCard : public QMacMime public: QString utiForMime(const QString &mime) const override; QString mimeForUti(const QString &uti) const override; - bool canConvert(const QString &mime, const QString &uti) const override; QVariant convertToMime(const QString &mime, const QList<QByteArray> &data, const QString &uti) const override; QList<QByteArray> convertFromMime(const QString &mime, const QVariant &data, const QString &uti) const override; }; -bool QMacMimeVCard::canConvert(const QString &mime, const QString &uti) const -{ - return mimeForUti(uti) == mime; -} - QString QMacMimeVCard::utiForMime(const QString &mime) const { if (mime.startsWith("text/vcard"_L1)) @@ -744,10 +684,12 @@ QString QMacMimeVCard::mimeForUti(const QString &uti) const } QVariant QMacMimeVCard::convertToMime(const QString &mime, - const QList<QByteArray> &data, const QString &) const + const QList<QByteArray> &data, const QString &uti) const { + if (!canConvert(mime, uti)) + return QVariant(); QByteArray cards; - if (mime == "text/vcard"_L1) { + if (uti == "public.vcard"_L1) { for (int i=0; i<data.size(); ++i) cards += data[i]; } @@ -755,9 +697,12 @@ QVariant QMacMimeVCard::convertToMime(const QString &mime, } QList<QByteArray> QMacMimeVCard::convertFromMime(const QString &mime, - const QVariant &data, const QString &) const + const QVariant &data, const QString &uti) const { QList<QByteArray> ret; + if (!canConvert(mime, uti)) + return ret; + if (mime == "text/vcard"_L1) ret.append(data.toString().toUtf8()); return ret; @@ -771,7 +716,6 @@ class QMacMimeTiff : public QMacMime public: QString utiForMime(const QString &mime) const override; QString mimeForUti(const QString &uti) const override; - bool canConvert(const QString &mime, const QString &uti) const override; QVariant convertToMime(const QString &mime, const QList<QByteArray> &data, const QString &uti) const override; QList<QByteArray> convertFromMime(const QString &mime, const QVariant &data, @@ -792,11 +736,6 @@ QString QMacMimeTiff::mimeForUti(const QString &uti) const return QString(); } -bool QMacMimeTiff::canConvert(const QString &mime, const QString &uti) const -{ - return uti == "public.tiff"_L1 && mime == "application/x-qt-image"_L1; -} - QVariant QMacMimeTiff::convertToMime(const QString &mime, const QList<QByteArray> &data, const QString &uti) const { diff --git a/src/gui/platform/darwin/qmacmime_p.h b/src/gui/platform/darwin/qmacmime_p.h index 660d251ad5..2b03528836 100644 --- a/src/gui/platform/darwin/qmacmime_p.h +++ b/src/gui/platform/darwin/qmacmime_p.h @@ -40,8 +40,8 @@ public: virtual ~QMacMime(); HandlerScope scope() const { return m_scope; } + bool canConvert(const QString &mime, const QString &uti) const { return mimeForUti(uti) == mime; } - virtual bool canConvert(const QString &mime, const QString &uti) const = 0; // for converting from Qt virtual QList<QByteArray> convertFromMime(const QString &mime, const QVariant &data, const QString &uti) const = 0; virtual QString utiForMime(const QString &mime) const = 0; |