summaryrefslogtreecommitdiffstats
path: root/src/gui/platform/darwin
diff options
context:
space:
mode:
Diffstat (limited to 'src/gui/platform/darwin')
-rw-r--r--src/gui/platform/darwin/qmacmime.mm107
-rw-r--r--src/gui/platform/darwin/qmacmime_p.h2
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;