diff options
author | Volker Hilsheimer <volker.hilsheimer@qt.io> | 2023-02-03 13:19:34 +0100 |
---|---|---|
committer | Volker Hilsheimer <volker.hilsheimer@qt.io> | 2023-02-08 14:53:43 +0100 |
commit | 1dc5e20c16353476ee4b449343a8fbe78a9ac7d8 (patch) | |
tree | 3437435574a477ca5ce44d9b9815083724a098e2 | |
parent | 84f0596c0ca7cb5a31077cea29592781899c13f4 (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.mm | 17 | ||||
-rw-r--r-- | src/gui/platform/darwin/qutimimeconverter.h | 11 | ||||
-rw-r--r-- | src/gui/platform/darwin/qutimimeconverter.mm | 6 | ||||
-rw-r--r-- | src/plugins/platforms/cocoa/qcocoaclipboard.mm | 4 | ||||
-rw-r--r-- | src/plugins/platforms/cocoa/qcocoadrag.mm | 8 | ||||
-rw-r--r-- | src/plugins/platforms/cocoa/qmacclipboard.h | 4 | ||||
-rw-r--r-- | src/plugins/platforms/cocoa/qmacclipboard.mm | 4 | ||||
-rw-r--r-- | src/plugins/platforms/ios/qiosclipboard.mm | 6 |
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()) |