Windows: Expose helper functions for QWindowsMime to the native interface.
Enable QWindowsMimeConverter to use external mime handlers which it does not own. Task-number: QTBUG-39559 Change-Id: Ife6607dffd9571fa4aa12fffdc61b42662182b0a Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>bb10
parent
afc8e4cda7
commit
bc96954aef
|
|
@ -1442,13 +1442,13 @@ QString QLastResortMimes::mimeForFormat(const FORMATETC &formatetc) const
|
|||
\sa QWindowsMime
|
||||
*/
|
||||
|
||||
QWindowsMimeConverter::QWindowsMimeConverter()
|
||||
QWindowsMimeConverter::QWindowsMimeConverter() : m_internalMimeCount(0)
|
||||
{
|
||||
}
|
||||
|
||||
QWindowsMimeConverter::~QWindowsMimeConverter()
|
||||
{
|
||||
qDeleteAll(m_mimes);
|
||||
qDeleteAll(m_mimes.begin(), m_mimes.begin() + m_internalMimeCount);
|
||||
}
|
||||
|
||||
QWindowsMime * QWindowsMimeConverter::converterToMime(const QString &mimeType, IDataObject *pDataObj) const
|
||||
|
|
@ -1526,6 +1526,7 @@ void QWindowsMimeConverter::ensureInitialized() const
|
|||
m_mimes << new QWindowsMimeImage << new QLastResortMimes
|
||||
<< new QWindowsMimeText << new QWindowsMimeURI
|
||||
<< new QWindowsMimeHtml << new QBuiltInMimes;
|
||||
m_internalMimeCount = m_mimes.size();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1552,4 +1553,10 @@ QVariant QWindowsMimeConverter::convertToMime(const QStringList &mimeTypes,
|
|||
return QVariant();
|
||||
}
|
||||
|
||||
void QWindowsMimeConverter::registerMime(QWindowsMime *mime)
|
||||
{
|
||||
ensureInitialized();
|
||||
m_mimes.append(mime);
|
||||
}
|
||||
|
||||
QT_END_NAMESPACE
|
||||
|
|
|
|||
|
|
@ -89,12 +89,14 @@ public:
|
|||
QVariant convertToMime(const QStringList &mimeTypes, IDataObject *pDataObj, QVariant::Type preferredType,
|
||||
QString *format = 0) const;
|
||||
|
||||
private:
|
||||
typedef QSharedPointer<QWindowsMime> MimePtr;
|
||||
void registerMime(QWindowsMime *mime);
|
||||
void unregisterMime(QWindowsMime *mime) { m_mimes.removeOne(mime); }
|
||||
|
||||
private:
|
||||
void ensureInitialized() const;
|
||||
|
||||
mutable QList<QWindowsMime *> m_mimes;
|
||||
mutable int m_internalMimeCount;
|
||||
};
|
||||
|
||||
QT_END_NAMESPACE
|
||||
|
|
|
|||
|
|
@ -44,6 +44,7 @@
|
|||
#include "qwindowscontext.h"
|
||||
#include "qwindowsopenglcontext.h"
|
||||
#include "qwindowsintegration.h"
|
||||
#include "qwindowsmime.h"
|
||||
|
||||
#include <QtGui/QWindow>
|
||||
#include <QtGui/QOpenGLContext>
|
||||
|
|
@ -172,4 +173,19 @@ void QWindowsNativeInterface::setAsyncExpose(bool value)
|
|||
QWindowsContext::instance()->setAsyncExpose(value);
|
||||
}
|
||||
|
||||
void QWindowsNativeInterface::registerWindowsMime(void *mimeIn)
|
||||
{
|
||||
QWindowsContext::instance()->mimeConverter().registerMime(reinterpret_cast<QWindowsMime *>(mimeIn));
|
||||
}
|
||||
|
||||
void QWindowsNativeInterface::unregisterWindowsMime(void *mimeIn)
|
||||
{
|
||||
QWindowsContext::instance()->mimeConverter().unregisterMime(reinterpret_cast<QWindowsMime *>(mimeIn));
|
||||
}
|
||||
|
||||
int QWindowsNativeInterface::registerMimeType(const QString &mimeType)
|
||||
{
|
||||
return QWindowsMime::registerMimeType(mimeType);
|
||||
}
|
||||
|
||||
QT_END_NAMESPACE
|
||||
|
|
|
|||
|
|
@ -82,6 +82,10 @@ public:
|
|||
|
||||
Q_INVOKABLE void beep() { MessageBeep(MB_OK); } // For QApplication
|
||||
|
||||
Q_INVOKABLE void registerWindowsMime(void *mimeIn);
|
||||
Q_INVOKABLE void unregisterWindowsMime(void *mime);
|
||||
Q_INVOKABLE int registerMimeType(const QString &mimeType);
|
||||
|
||||
bool asyncExpose() const;
|
||||
void setAsyncExpose(bool value);
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue