summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVolker Hilsheimer <volker.hilsheimer@qt.io>2023-02-03 13:19:34 +0100
committerVolker Hilsheimer <volker.hilsheimer@qt.io>2023-02-08 14:53:43 +0100
commit1dc5e20c16353476ee4b449343a8fbe78a9ac7d8 (patch)
tree3437435574a477ca5ce44d9b9815083724a098e2
parent84f0596c0ca7cb5a31077cea29592781899c13f4 (diff)
Clean up QUtiMimeConverter API
Based on header review comments, make the internal constructor private and declare classes that need it as friends. QFlag-ify the HandlerScope enum, as it is a list of flags, and adjust code accordingly. Pick-to: 6.5 Change-Id: I1d8843265e49e696d463e9eea8306f4dbae75c78 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
-rw-r--r--src/gui/platform/darwin/qmacmimeregistry.mm17
-rw-r--r--src/gui/platform/darwin/qutimimeconverter.h11
-rw-r--r--src/gui/platform/darwin/qutimimeconverter.mm6
-rw-r--r--src/plugins/platforms/cocoa/qcocoaclipboard.mm4
-rw-r--r--src/plugins/platforms/cocoa/qcocoadrag.mm8
-rw-r--r--src/plugins/platforms/cocoa/qmacclipboard.h4
-rw-r--r--src/plugins/platforms/cocoa/qmacclipboard.mm4
-rw-r--r--src/plugins/platforms/ios/qiosclipboard.mm6
8 files changed, 33 insertions, 27 deletions
diff --git a/src/gui/platform/darwin/qmacmimeregistry.mm b/src/gui/platform/darwin/qmacmimeregistry.mm
index abf013248f..acbe671e1a 100644
--- a/src/gui/platform/darwin/qmacmimeregistry.mm
+++ b/src/gui/platform/darwin/qmacmimeregistry.mm
@@ -82,15 +82,15 @@ void destroyMimeTypes()
*/
QString flavorToMime(QUtiMimeConverter::HandlerScope scope, const QString &uti)
{
- MimeList *mimes = globalMimeList();
- for (MimeList::const_iterator it = mimes->constBegin(); it != mimes->constEnd(); ++it) {
- const bool relevantScope = uchar((*it)->scope()) & uchar(scope);
+ const MimeList &mimes = *globalMimeList();
+ for (const auto &mime : mimes) {
+ const bool relevantScope = mime->scope() & scope;
#ifdef DEBUG_MIME_MAPS
qDebug("QMacMimeRegistry::flavorToMime: attempting (%d) for uti %s [%s]",
relevantScope, qPrintable(uti), qPrintable((*it)->mimeForUti(uti)));
#endif
if (relevantScope) {
- QString mimeType = (*it)->mimeForUti(uti);
+ const QString mimeType = mime->mimeForUti(uti);
if (!mimeType.isNull())
return mimeType;
}
@@ -119,11 +119,10 @@ void unregisterMimeConverter(QUtiMimeConverter *macMime)
QList<QUtiMimeConverter *> all(QUtiMimeConverter::HandlerScope scope)
{
MimeList ret;
- MimeList *mimes = globalMimeList();
- for (MimeList::const_iterator it = mimes->constBegin(); it != mimes->constEnd(); ++it) {
- const bool relevantScope = uchar((*it)->scope()) & uchar(scope);
- if (relevantScope)
- ret.append((*it));
+ const MimeList &mimes = *globalMimeList();
+ for (const auto &mime : mimes) {
+ if (mime->scope() & scope)
+ ret.append(mime);
}
return ret;
}
diff --git a/src/gui/platform/darwin/qutimimeconverter.h b/src/gui/platform/darwin/qutimimeconverter.h
index f798f706d2..e9297b5fa0 100644
--- a/src/gui/platform/darwin/qutimimeconverter.h
+++ b/src/gui/platform/darwin/qutimimeconverter.h
@@ -19,7 +19,7 @@ class Q_GUI_EXPORT QUtiMimeConverter
{
Q_DISABLE_COPY(QUtiMimeConverter)
public:
- enum class HandlerScope : uchar
+ enum class HandlerScopeFlag : uint8_t
{
DnD = 0x01,
Clipboard = 0x02,
@@ -28,9 +28,9 @@ public:
All = DnD|Clipboard,
AllCompatible = All|Qt_compatible
};
+ Q_DECLARE_FLAGS(HandlerScope, HandlerScopeFlag)
QUtiMimeConverter();
- explicit QUtiMimeConverter(HandlerScope scope); // internal
virtual ~QUtiMimeConverter();
HandlerScope scope() const { return m_scope; }
@@ -46,8 +46,15 @@ public:
virtual int count(const QMimeData *mimeData) const;
private:
+ friend class QMacMimeTypeName;
+ friend class QMacMimeAny;
+
+ explicit QUtiMimeConverter(HandlerScope scope);
+
const HandlerScope m_scope;
};
+Q_DECLARE_OPERATORS_FOR_FLAGS(QUtiMimeConverter::HandlerScope)
+
QT_END_NAMESPACE
diff --git a/src/gui/platform/darwin/qutimimeconverter.mm b/src/gui/platform/darwin/qutimimeconverter.mm
index 7be3fc7e00..975f00cf88 100644
--- a/src/gui/platform/darwin/qutimimeconverter.mm
+++ b/src/gui/platform/darwin/qutimimeconverter.mm
@@ -96,7 +96,7 @@ QUtiMimeConverter::QUtiMimeConverter(HandlerScope scope)
globally accessed list of available converters.
*/
QUtiMimeConverter::QUtiMimeConverter()
- : QUtiMimeConverter(HandlerScope::All)
+ : QUtiMimeConverter(HandlerScopeFlag::All)
{
}
@@ -170,7 +170,7 @@ int QUtiMimeConverter::count(const QMimeData *mimeData) const
class QMacMimeAny : public QUtiMimeConverter {
public:
- QMacMimeAny() : QUtiMimeConverter(HandlerScope::AllCompatible) {}
+ QMacMimeAny() : QUtiMimeConverter(HandlerScopeFlag::AllCompatible) {}
QString utiForMime(const QString &mime) const override;
QString mimeForUti(const QString &uti) const override;
@@ -225,7 +225,7 @@ class QMacMimeTypeName : public QUtiMimeConverter {
private:
public:
- QMacMimeTypeName(): QUtiMimeConverter(HandlerScope::AllCompatible) {}
+ QMacMimeTypeName(): QUtiMimeConverter(HandlerScopeFlag::AllCompatible) {}
QString utiForMime(const QString &mime) const override;
QString mimeForUti(const QString &uti) const override;
diff --git a/src/plugins/platforms/cocoa/qcocoaclipboard.mm b/src/plugins/platforms/cocoa/qcocoaclipboard.mm
index 0c8da26137..241faadbec 100644
--- a/src/plugins/platforms/cocoa/qcocoaclipboard.mm
+++ b/src/plugins/platforms/cocoa/qcocoaclipboard.mm
@@ -10,8 +10,8 @@
QT_BEGIN_NAMESPACE
QCocoaClipboard::QCocoaClipboard()
- :m_clipboard(new QMacPasteboard(kPasteboardClipboard, QUtiMimeConverter::HandlerScope::Clipboard))
- ,m_find(new QMacPasteboard(kPasteboardFind, QUtiMimeConverter::HandlerScope::Clipboard))
+ :m_clipboard(new QMacPasteboard(kPasteboardClipboard, QUtiMimeConverter::HandlerScopeFlag::Clipboard))
+ ,m_find(new QMacPasteboard(kPasteboardFind, QUtiMimeConverter::HandlerScopeFlag::Clipboard))
{
connect(qGuiApp, &QGuiApplication::applicationStateChanged, this, &QCocoaClipboard::handleApplicationStateChanged);
}
diff --git a/src/plugins/platforms/cocoa/qcocoadrag.mm b/src/plugins/platforms/cocoa/qcocoadrag.mm
index ec46dda38a..101a13e3c2 100644
--- a/src/plugins/platforms/cocoa/qcocoadrag.mm
+++ b/src/plugins/platforms/cocoa/qcocoadrag.mm
@@ -98,7 +98,7 @@ Qt::DropAction QCocoaDrag::drag(QDrag *o)
m_drag = o;
m_executed_drop_action = Qt::IgnoreAction;
- QMacPasteboard dragBoard(CFStringRef(NSPasteboardNameDrag), QUtiMimeConverter::HandlerScope::DnD);
+ QMacPasteboard dragBoard(CFStringRef(NSPasteboardNameDrag), QUtiMimeConverter::HandlerScopeFlag::DnD);
m_drag->mimeData()->setData("application/x-qt-mime-type-name"_L1, QByteArray("dummy"));
dragBoard.setMimeData(m_drag->mimeData(), QMacPasteboard::LazyRequest);
@@ -305,7 +305,7 @@ QStringList QCocoaDropData::formats_sys() const
qDebug("DnD: Cannot get PasteBoard!");
return formats;
}
- formats = QMacPasteboard(board, QUtiMimeConverter::HandlerScope::DnD).formats();
+ formats = QMacPasteboard(board, QUtiMimeConverter::HandlerScopeFlag::DnD).formats();
return formats;
}
@@ -317,7 +317,7 @@ QVariant QCocoaDropData::retrieveData_sys(const QString &mimeType, QMetaType) co
qDebug("DnD: Cannot get PasteBoard!");
return data;
}
- data = QMacPasteboard(board, QUtiMimeConverter::HandlerScope::DnD).retrieveData(mimeType);
+ data = QMacPasteboard(board, QUtiMimeConverter::HandlerScopeFlag::DnD).retrieveData(mimeType);
CFRelease(board);
return data;
}
@@ -330,7 +330,7 @@ bool QCocoaDropData::hasFormat_sys(const QString &mimeType) const
qDebug("DnD: Cannot get PasteBoard!");
return has;
}
- has = QMacPasteboard(board, QUtiMimeConverter::HandlerScope::DnD).hasFormat(mimeType);
+ has = QMacPasteboard(board, QUtiMimeConverter::HandlerScopeFlag::DnD).hasFormat(mimeType);
CFRelease(board);
return has;
}
diff --git a/src/plugins/platforms/cocoa/qmacclipboard.h b/src/plugins/platforms/cocoa/qmacclipboard.h
index 030732446f..75c112a10b 100644
--- a/src/plugins/platforms/cocoa/qmacclipboard.h
+++ b/src/plugins/platforms/cocoa/qmacclipboard.h
@@ -48,9 +48,9 @@ private:
static OSStatus promiseKeeper(PasteboardRef, PasteboardItemID, CFStringRef, void *);
void clear_helper();
public:
- QMacPasteboard(PasteboardRef p, QUtiMimeConverter::HandlerScope scope = QUtiMimeConverter::HandlerScope::All);
+ QMacPasteboard(PasteboardRef p, QUtiMimeConverter::HandlerScope scope = QUtiMimeConverter::HandlerScopeFlag::All);
QMacPasteboard(QUtiMimeConverter::HandlerScope scope);
- QMacPasteboard(CFStringRef name=nullptr, QUtiMimeConverter::HandlerScope scope = QUtiMimeConverter::HandlerScope::All);
+ QMacPasteboard(CFStringRef name=nullptr, QUtiMimeConverter::HandlerScope scope = QUtiMimeConverter::HandlerScopeFlag::All);
~QMacPasteboard();
bool hasUti(const QString &uti) const;
diff --git a/src/plugins/platforms/cocoa/qmacclipboard.mm b/src/plugins/platforms/cocoa/qmacclipboard.mm
index 3a39fdfb0f..edafa3b6a1 100644
--- a/src/plugins/platforms/cocoa/qmacclipboard.mm
+++ b/src/plugins/platforms/cocoa/qmacclipboard.mm
@@ -111,7 +111,7 @@ QMacPasteboard::~QMacPasteboard()
Commit all promises for paste when shutting down,
unless we are the stack-allocated clipboard used by QCocoaDrag.
*/
- if (scope == QUtiMimeConverter::HandlerScope::DnD)
+ if (scope == QUtiMimeConverter::HandlerScopeFlag::DnD)
resolvingBeforeDestruction = true;
PasteboardResolvePromises(paste);
if (paste)
@@ -130,7 +130,7 @@ OSStatus QMacPasteboard::promiseKeeper(PasteboardRef paste, PasteboardItemID id,
const long promise_id = (long)id;
// Find the kept promise
- const QList<QUtiMimeConverter*> availableConverters = QMacMimeRegistry::all(QUtiMimeConverter::HandlerScope::All);
+ const QList<QUtiMimeConverter*> availableConverters = QMacMimeRegistry::all(QUtiMimeConverter::HandlerScopeFlag::All);
const QString utiAsQString = QString::fromCFString(uti);
QMacPasteboard::Promise promise;
for (int i = 0; i < qpaste->promises.size(); i++){
diff --git a/src/plugins/platforms/ios/qiosclipboard.mm b/src/plugins/platforms/ios/qiosclipboard.mm
index 7e1e4aa0d4..f07391a369 100644
--- a/src/plugins/platforms/ios/qiosclipboard.mm
+++ b/src/plugins/platforms/ios/qiosclipboard.mm
@@ -117,7 +117,7 @@ QStringList QIOSMimeData::formats() const
for (NSUInteger i = 0; i < [pasteboardTypes count]; ++i) {
const QString uti = QString::fromNSString([pasteboardTypes objectAtIndex:i]);
- const QString mimeType = QMacMimeRegistry::flavorToMime(QUtiMimeConverter::HandlerScope::All, uti);
+ const QString mimeType = QMacMimeRegistry::flavorToMime(QUtiMimeConverter::HandlerScopeFlag::All, uti);
if (!mimeType.isEmpty() && !foundMimeTypes.contains(mimeType))
foundMimeTypes << mimeType;
}
@@ -130,7 +130,7 @@ QVariant QIOSMimeData::retrieveData(const QString &mimeType, QMetaType) const
UIPasteboard *pb = [UIPasteboard pasteboardWithQClipboardMode:m_mode];
NSArray<NSString *> *pasteboardTypes = [pb pasteboardTypes];
- const auto converters = QMacMimeRegistry::all(QUtiMimeConverter::HandlerScope::All);
+ const auto converters = QMacMimeRegistry::all(QUtiMimeConverter::HandlerScopeFlag::All);
for (QUtiMimeConverter *converter : converters) {
for (NSUInteger i = 0; i < [pasteboardTypes count]; ++i) {
NSString *availableUtiNSString = [pasteboardTypes objectAtIndex:i];
@@ -183,7 +183,7 @@ void QIOSClipboard::setMimeData(QMimeData *mimeData, QClipboard::Mode mode)
const auto formats = mimeData->formats();
for (const QString &mimeType : formats) {
- const auto converters = QMacMimeRegistry::all(QUtiMimeConverter::HandlerScope::All);
+ const auto converters = QMacMimeRegistry::all(QUtiMimeConverter::HandlerScopeFlag::All);
for (const QUtiMimeConverter *converter : converters) {
const QString uti = converter->utiForMime(mimeType);
if (uti.isEmpty())