Rename QWindowsMimeConverter to QWindowsMimeRegistry, rename files

The class registers converters and provides access to the converter
able to handle specific formats. But it is not a converter itself.

The converter would then be the implementation of the virtual
interface, e.g. QWindowsMime subclasses.

Task-number: QTBUG-93632
Change-Id: I150ef28e9bcead4291d72e0b0aa660be3fcd4a8a
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
bb10
Volker Hilsheimer 2022-10-31 13:55:07 +01:00
parent 971bd702ef
commit c5d4de1557
11 changed files with 51 additions and 52 deletions

View File

@ -24,7 +24,7 @@ qt_internal_add_plugin(QWindowsDirect2DIntegrationPlugin
../windows/qwindowsinternalmimedata.cpp ../windows/qwindowsinternalmimedata.h
../windows/qwindowskeymapper.cpp ../windows/qwindowskeymapper.h
../windows/qwindowsmenu.cpp ../windows/qwindowsmenu.h
../windows/qwindowsmime.cpp ../windows/qwindowsmime.h
../windows/qwindowsmimeregistry.cpp ../windows/qwindowsmimeregistry.h
../windows/qwindowsmousehandler.cpp ../windows/qwindowsmousehandler.h
../windows/qwindowsnativeinterface.cpp ../windows/qwindowsnativeinterface.h
../windows/qwindowsole.cpp ../windows/qwindowsole.h

View File

@ -29,7 +29,7 @@ qt_internal_add_plugin(QWindowsIntegrationPlugin
qwindowsinternalmimedata.cpp qwindowsinternalmimedata.h
qwindowskeymapper.cpp qwindowskeymapper.h
qwindowsmenu.cpp qwindowsmenu.h
qwindowsmime.cpp qwindowsmime.h
qwindowsmimeregistry.cpp qwindowsmimeregistry.h
qwindowsmousehandler.cpp qwindowsmousehandler.h
qwindowsnativeinterface.cpp qwindowsnativeinterface.h
qwindowsole.cpp qwindowsole.h

View File

@ -4,7 +4,7 @@
#include "qwindowsapplication.h"
#include "qwindowsclipboard.h"
#include "qwindowscontext.h"
#include "qwindowsmime.h"
#include "qwindowsmimeregistry.h"
#include "qwin10helpers.h"
#include "qwindowsopengltester.h"
#include "qwindowswindow.h"
@ -96,7 +96,7 @@ void QWindowsApplication::unregisterMime(QNativeInterface::Private::QWindowsMime
int QWindowsApplication::registerMimeType(const QString &mime)
{
return QWindowsMimeConverter::registerMimeType(mime);
return QWindowsMimeRegistry::registerMimeType(mime);
}
HWND QWindowsApplication::createMessageWindow(const QString &classNameTemplate,

View File

@ -4,7 +4,6 @@
#include "qwindowsclipboard.h"
#include "qwindowscontext.h"
#include "qwindowsole.h"
#include "qwindowsmime.h"
#include <QtGui/qguiapplication.h>
#include <QtGui/qclipboard.h>

View File

@ -11,7 +11,7 @@
#include "qwindowspointerhandler.h"
#include "qtwindowsglobal.h"
#include "qwindowsmenu.h"
#include "qwindowsmime.h"
#include "qwindowsmimeregistry.h"
#include "qwindowsinputcontext.h"
#if QT_CONFIG(tabletevent)
# include "qwindowstabletsupport.h"
@ -160,7 +160,7 @@ struct QWindowsContextPrivate {
QWindowsKeyMapper m_keyMapper;
QWindowsMouseHandler m_mouseHandler;
QWindowsPointerHandler m_pointerHandler;
QWindowsMimeConverter m_mimeConverter;
QWindowsMimeRegistry m_mimeConverter;
QWindowsScreenManager m_screenManager;
QSharedPointer<QWindowCreationContext> m_creationContext;
#if QT_CONFIG(tabletevent)
@ -801,7 +801,7 @@ bool QWindowsContext::isSessionLocked()
return result;
}
QWindowsMimeConverter &QWindowsContext::mimeConverter() const
QWindowsMimeRegistry &QWindowsContext::mimeConverter() const
{
return d->m_mimeConverter;
}

View File

@ -37,7 +37,7 @@ class QWindowsMenuBar;
class QWindowsScreenManager;
class QWindowsTabletSupport;
class QWindowsWindow;
class QWindowsMimeConverter;
class QWindowsMimeRegistry;
struct QWindowCreationContext;
struct QWindowsContextPrivate;
class QPoint;
@ -135,7 +135,7 @@ public:
static bool isSessionLocked();
QWindowsMimeConverter &mimeConverter() const;
QWindowsMimeRegistry &mimeConverter() const;
QWindowsScreenManager &screenManager();
QWindowsTabletSupport *tabletSupport() const;

View File

@ -5,7 +5,7 @@
#include <QtCore/qurl.h>
#include <QtCore/qmimedata.h>
#include "qwindowsmime.h"
#include "qwindowsmimeregistry.h"
QT_BEGIN_NAMESPACE
@ -53,7 +53,7 @@ bool QWindowsDropDataObject::shouldIgnore(LPFORMATETC pformatetc) const
QMimeData *dropData = mimeData();
if (dropData && dropData->formats().size() == 1 && dropData->hasUrls()) {
QString formatName = QWindowsMimeConverter::clipboardFormatName(pformatetc->cfFormat);
QString formatName = QWindowsMimeRegistry::clipboardFormatName(pformatetc->cfFormat);
if (pformatetc->cfFormat == CF_UNICODETEXT
|| pformatetc->cfFormat == CF_TEXT
|| formatName == QStringLiteral("UniformResourceLocator")

View File

@ -3,7 +3,7 @@
#include "qwindowsinternalmimedata.h"
#include "qwindowscontext.h"
#include "qwindowsmime.h"
#include "qwindowsmimeregistry.h"
#include <QtCore/qdebug.h>
#include <QtCore/qvariant.h>
@ -24,7 +24,7 @@
the instances IDataObject from the clipboard or Drag and Drop and
does conversion using QWindowsMime classes.
\sa QInternalMimeData, QWindowsMime, QWindowsMimeConverter
\sa QInternalMimeData, QWindowsMime, QWindowsMimeRegistry
\internal
*/
@ -34,7 +34,7 @@ bool QWindowsInternalMimeData::hasFormat_sys(const QString &mime) const
if (!pDataObj)
return false;
const QWindowsMimeConverter &mc = QWindowsContext::instance()->mimeConverter();
const QWindowsMimeRegistry &mc = QWindowsContext::instance()->mimeConverter();
const bool has = mc.converterToMime(mime, pDataObj) != nullptr;
releaseDataObject(pDataObj);
qCDebug(lcQpaMime) << __FUNCTION__ << mime << has;
@ -47,7 +47,7 @@ QStringList QWindowsInternalMimeData::formats_sys() const
if (!pDataObj)
return QStringList();
const QWindowsMimeConverter &mc = QWindowsContext::instance()->mimeConverter();
const QWindowsMimeRegistry &mc = QWindowsContext::instance()->mimeConverter();
const QStringList fmts = mc.allMimesForFormats(pDataObj);
releaseDataObject(pDataObj);
qCDebug(lcQpaMime) << __FUNCTION__ << fmts;
@ -61,7 +61,7 @@ QVariant QWindowsInternalMimeData::retrieveData_sys(const QString &mimeType, QMe
return QVariant();
QVariant result;
const QWindowsMimeConverter &mc = QWindowsContext::instance()->mimeConverter();
const QWindowsMimeRegistry &mc = QWindowsContext::instance()->mimeConverter();
if (auto converter = mc.converterToMime(mimeType, pDataObj))
result = converter->convertToMime(mimeType, pDataObj, type);
releaseDataObject(pDataObj);

View File

@ -1,7 +1,7 @@
// Copyright (C) 2020 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
#include "qwindowsmime.h"
#include "qwindowsmimeregistry.h"
#include "qwindowscontext.h"
#include <QtGui/private/qinternalmimedata_p.h>
@ -300,7 +300,7 @@ QDebug operator<<(QDebug d, const FORMATETC &tc)
d << "CF_ENHMETAFILE";
break;
default:
d << QWindowsMimeConverter::clipboardFormatName(tc.cfFormat);
d << QWindowsMimeRegistry::clipboardFormatName(tc.cfFormat);
break;
}
d << ", dwAspect=" << tc.dwAspect << ", lindex=" << tc.lindex
@ -370,7 +370,7 @@ QDebug operator<<(QDebug d, IDataObject *dataObj)
You can check if a MIME type is convertible using canConvertFromMime() and
can perform conversions with convertToMime() and convertFromMime().
\sa QWindowsMimeConverter
\sa QWindowsMimeRegistry
*/
@ -605,8 +605,8 @@ private:
QWindowsMimeURI::QWindowsMimeURI()
{
CF_INETURL_W = QWindowsMimeConverter::registerMimeType(QStringLiteral("UniformResourceLocatorW"));
CF_INETURL = QWindowsMimeConverter::registerMimeType(QStringLiteral("UniformResourceLocator"));
CF_INETURL_W = QWindowsMimeRegistry::registerMimeType(QStringLiteral("UniformResourceLocatorW"));
CF_INETURL = QWindowsMimeRegistry::registerMimeType(QStringLiteral("UniformResourceLocator"));
}
bool QWindowsMimeURI::canConvertFromMime(const FORMATETC &formatetc, const QMimeData *mimeData) const
@ -775,7 +775,7 @@ private:
QWindowsMimeHtml::QWindowsMimeHtml()
{
CF_HTML = QWindowsMimeConverter::registerMimeType(QStringLiteral("HTML Format"));
CF_HTML = QWindowsMimeRegistry::registerMimeType(QStringLiteral("HTML Format"));
}
QList<FORMATETC> QWindowsMimeHtml::formatsForMime(const QString &mimeType, const QMimeData *mimeData) const
@ -1075,8 +1075,8 @@ private:
QBuiltInMimes::QBuiltInMimes()
: QWindowsMime()
{
outFormats.insert(QWindowsMimeConverter::registerMimeType(QStringLiteral("application/x-color")), QStringLiteral("application/x-color"));
inFormats.insert(QWindowsMimeConverter::registerMimeType(QStringLiteral("application/x-color")), QStringLiteral("application/x-color"));
outFormats.insert(QWindowsMimeRegistry::registerMimeType(QStringLiteral("application/x-color")), QStringLiteral("application/x-color"));
inFormats.insert(QWindowsMimeRegistry::registerMimeType(QStringLiteral("application/x-color")), QStringLiteral("application/x-color"));
}
bool QBuiltInMimes::canConvertFromMime(const FORMATETC &formatetc, const QMimeData *mimeData) const
@ -1257,7 +1257,7 @@ QList<FORMATETC> QLastResortMimes::formatsForMime(const QString &mimeType, const
auto mit = std::find(formats.begin(), formats.end(), mimeType);
// register any other available formats
if (mit == formats.end() && !excludeList.contains(mimeType, Qt::CaseInsensitive))
mit = formats.insert(QWindowsMimeConverter::registerMimeType(mimeType), mimeType);
mit = formats.insert(QWindowsMimeRegistry::registerMimeType(mimeType), mimeType);
if (mit != formats.end())
formatetcs += setCf(mit.key());
@ -1301,7 +1301,7 @@ bool QLastResortMimes::canConvertToMime(const QString &mimeType, IDataObject *pD
}
// if it is not in there then register it and see if we can get it
const auto mit = std::find(formats.cbegin(), formats.cend(), mimeType);
const int cf = mit != formats.cend() ? mit.key() : QWindowsMimeConverter::registerMimeType(mimeType);
const int cf = mit != formats.cend() ? mit.key() : QWindowsMimeRegistry::registerMimeType(mimeType);
return canGetData(cf, pDataObj);
}
@ -1318,7 +1318,7 @@ QVariant QLastResortMimes::convertToMime(const QString &mimeType, IDataObject *p
data = getData(int(cf), pDataObj, lindex);
} else {
const auto mit = std::find(formats.cbegin(), formats.cend(), mimeType);
const int cf = mit != formats.cend() ? mit.key() : QWindowsMimeConverter::registerMimeType(mimeType);
const int cf = mit != formats.cend() ? mit.key() : QWindowsMimeRegistry::registerMimeType(mimeType);
data = getData(cf, pDataObj);
}
if (!data.isEmpty())
@ -1333,7 +1333,7 @@ QString QLastResortMimes::mimeForFormat(const FORMATETC &formatetc) const
if (!format.isEmpty())
return format;
const QString clipFormat = QWindowsMimeConverter::clipboardFormatName(getCf(formatetc));
const QString clipFormat = QWindowsMimeRegistry::clipboardFormatName(getCf(formatetc));
if (!clipFormat.isEmpty()) {
#if QT_CONFIG(draganddrop)
if (QInternalMimeData::canReadData(clipFormat))
@ -1363,20 +1363,20 @@ QString QLastResortMimes::mimeForFormat(const FORMATETC &formatetc) const
}
/*!
\class QWindowsMimeConverter
\class QWindowsMimeRegistry
\brief Manages the list of QWindowsMime instances.
\internal
\sa QWindowsMime
*/
QWindowsMimeConverter::QWindowsMimeConverter() = default;
QWindowsMimeRegistry::QWindowsMimeRegistry() = default;
QWindowsMimeConverter::~QWindowsMimeConverter()
QWindowsMimeRegistry::~QWindowsMimeRegistry()
{
qDeleteAll(m_mimes.begin(), m_mimes.begin() + m_internalMimeCount);
}
QWindowsMimeConverter::QWindowsMime *QWindowsMimeConverter::converterToMime(const QString &mimeType, IDataObject *pDataObj) const
QWindowsMimeRegistry::QWindowsMime *QWindowsMimeRegistry::converterToMime(const QString &mimeType, IDataObject *pDataObj) const
{
ensureInitialized();
for (int i = m_mimes.size()-1; i >= 0; --i) {
@ -1386,7 +1386,7 @@ QWindowsMimeConverter::QWindowsMime *QWindowsMimeConverter::converterToMime(cons
return nullptr;
}
QStringList QWindowsMimeConverter::allMimesForFormats(IDataObject *pDataObj) const
QStringList QWindowsMimeRegistry::allMimesForFormats(IDataObject *pDataObj) const
{
qCDebug(lcQpaMime) << "QWindowsMime::allMimesForFormats()";
ensureInitialized();
@ -1415,7 +1415,7 @@ QStringList QWindowsMimeConverter::allMimesForFormats(IDataObject *pDataObj) con
return formats;
}
QWindowsMimeConverter::QWindowsMime *QWindowsMimeConverter::converterFromMime(const FORMATETC &formatetc, const QMimeData *mimeData) const
QWindowsMimeRegistry::QWindowsMime *QWindowsMimeRegistry::converterFromMime(const FORMATETC &formatetc, const QMimeData *mimeData) const
{
ensureInitialized();
qCDebug(lcQpaMime) << __FUNCTION__ << formatetc;
@ -1426,7 +1426,7 @@ QWindowsMimeConverter::QWindowsMime *QWindowsMimeConverter::converterFromMime(co
return nullptr;
}
QList<FORMATETC> QWindowsMimeConverter::allFormatsForMime(const QMimeData *mimeData) const
QList<FORMATETC> QWindowsMimeRegistry::allFormatsForMime(const QMimeData *mimeData) const
{
ensureInitialized();
QList<FORMATETC> formatics;
@ -1443,7 +1443,7 @@ QList<FORMATETC> QWindowsMimeConverter::allFormatsForMime(const QMimeData *mimeD
return formatics;
}
void QWindowsMimeConverter::ensureInitialized() const
void QWindowsMimeRegistry::ensureInitialized() const
{
if (m_mimes.isEmpty()) {
m_mimes
@ -1457,14 +1457,14 @@ void QWindowsMimeConverter::ensureInitialized() const
}
}
QString QWindowsMimeConverter::clipboardFormatName(int cf)
QString QWindowsMimeRegistry::clipboardFormatName(int cf)
{
wchar_t buf[256] = {0};
return GetClipboardFormatName(UINT(cf), buf, 255)
? QString::fromWCharArray(buf) : QString();
}
QVariant QWindowsMimeConverter::convertToMime(const QStringList &mimeTypes,
QVariant QWindowsMimeRegistry::convertToMime(const QStringList &mimeTypes,
IDataObject *pDataObj,
QMetaType preferredType,
QString *formatIn /* = 0 */) const
@ -1487,7 +1487,7 @@ QVariant QWindowsMimeConverter::convertToMime(const QStringList &mimeTypes,
return QVariant();
}
void QWindowsMimeConverter::registerMime(QWindowsMime *mime)
void QWindowsMimeRegistry::registerMime(QWindowsMime *mime)
{
ensureInitialized();
m_mimes.append(mime);
@ -1497,7 +1497,7 @@ void QWindowsMimeConverter::registerMime(QWindowsMime *mime)
Registers the MIME type \a mime, and returns an ID number
identifying the format on Windows.
*/
int QWindowsMimeConverter::registerMimeType(const QString &mime)
int QWindowsMimeRegistry::registerMimeType(const QString &mime)
{
const UINT f = RegisterClipboardFormat(reinterpret_cast<const wchar_t *> (mime.utf16()));
if (!f)

View File

@ -1,8 +1,8 @@
// Copyright (C) 2016 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
#ifndef QWINDOWSMIME_H
#define QWINDOWSMIME_H
#ifndef QWINDOWSMIMEREGISTRY_H
#define QWINDOWSMIMEREGISTRY_H
#include <QtGui/private/qwindowsmime_p.h>
@ -16,14 +16,14 @@ QT_BEGIN_NAMESPACE
class QDebug;
class QMimeData;
class QWindowsMimeConverter
class QWindowsMimeRegistry
{
Q_DISABLE_COPY_MOVE(QWindowsMimeConverter)
Q_DISABLE_COPY_MOVE(QWindowsMimeRegistry)
public:
using QWindowsMime = QNativeInterface::Private::QWindowsMime;
QWindowsMimeConverter();
~QWindowsMimeConverter();
QWindowsMimeRegistry();
~QWindowsMimeRegistry();
QWindowsMime *converterToMime(const QString &mimeType, IDataObject *pDataObj) const;
QStringList allMimesForFormats(IDataObject *pDataObj) const;
@ -55,4 +55,4 @@ QDebug operator<<(QDebug d, IDataObject *);
QT_END_NAMESPACE
#endif // QWINDOWSMIME_H
#endif // QWINDOWSMIMEREGISTRY_H

View File

@ -2,7 +2,7 @@
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
#include "qwindowsole.h"
#include "qwindowsmime.h"
#include "qwindowsmimeregistry.h"
#include "qwindowscontext.h"
\
#include <QtGui/qevent.h>
@ -66,7 +66,7 @@ QWindowsOleDataObject::GetData(LPFORMATETC pformatetc, LPSTGMEDIUM pmedium)
HRESULT hr = ResultFromScode(DATA_E_FORMATETC);
if (data) {
const QWindowsMimeConverter &mc = QWindowsContext::instance()->mimeConverter();
const QWindowsMimeRegistry &mc = QWindowsContext::instance()->mimeConverter();
if (auto converter = mc.converterFromMime(*pformatetc, data))
if (converter->convertFromMime(*pformatetc, data, pmedium))
hr = ResultFromScode(S_OK);
@ -93,7 +93,7 @@ QWindowsOleDataObject::QueryGetData(LPFORMATETC pformatetc)
qCDebug(lcQpaMime) << __FUNCTION__;
if (data) {
const QWindowsMimeConverter &mc = QWindowsContext::instance()->mimeConverter();
const QWindowsMimeRegistry &mc = QWindowsContext::instance()->mimeConverter();
hr = mc.converterFromMime(*pformatetc, data) ?
ResultFromScode(S_OK) : ResultFromScode(S_FALSE);
}
@ -144,7 +144,7 @@ QWindowsOleDataObject::EnumFormatEtc(DWORD dwDirection, LPENUMFORMATETC FAR* ppe
QList<FORMATETC> fmtetcs;
if (dwDirection == DATADIR_GET) {
QWindowsMimeConverter &mc = QWindowsContext::instance()->mimeConverter();
QWindowsMimeRegistry &mc = QWindowsContext::instance()->mimeConverter();
fmtetcs = mc.allFormatsForMime(data);
} else {
FORMATETC formatetc;