Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Toggle main menu visibility
Loading...
Searching...
No Matches
qwindowsinternalmimedata.cpp
Go to the documentation of this file.
1
// Copyright (C) 2016 The Qt Company Ltd.
2
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3
// Qt-Security score:significant reason:default
4
5
#
include
"qwindowsinternalmimedata.h"
6
#
include
"qwindowscontext.h"
7
#
include
"qwindowsmimeregistry.h"
8
#
include
<
QtCore
/
qdebug
.
h
>
9
#
include
<
QtCore
/
qvariant
.
h
>
10
11
/*!
12
\class QWindowsInternalMimeDataBase
13
\brief Base for implementations of QInternalMimeData using a IDataObject COM object.
14
15
In clipboard handling and Drag and drop, static instances
16
of QInternalMimeData implementations are kept and passed to the client.
17
18
QInternalMimeData provides virtuals that query the formats and retrieve
19
mime data on demand when the client invokes functions like QMimeData::hasHtml(),
20
QMimeData::html() on the instance returned. Otherwise, expensive
21
construction of a new QMimeData object containing all possible
22
formats would have to be done in each call to mimeData().
23
24
The base class introduces new virtuals to obtain and release
25
the instances IDataObject from the clipboard or Drag and Drop and
26
does conversion using QWindowsMimeConverter classes.
27
28
\sa QInternalMimeData, QWindowsMimeConverter, QWindowsMimeRegistry
29
\internal
30
*/
31
32
bool
QWindowsInternalMimeData
::
hasFormat_sys
(
const
QString &mime)
const
33
{
34
IDataObject *pDataObj = retrieveDataObject();
35
if
(!pDataObj)
36
return
false
;
37
38
const
QWindowsMimeRegistry
&mc =
QWindowsContext
::
instance
(
)
->
mimeConverter
(
)
;
39
const
bool
has = mc.converterToMime(mime, pDataObj) !=
nullptr
;
40
releaseDataObject(pDataObj);
41
qCDebug(lcQpaMime) <<
__FUNCTION__
<< mime << has;
42
return
has;
43
}
44
45
QStringList
QWindowsInternalMimeData
::
formats_sys
()
const
46
{
47
IDataObject *pDataObj = retrieveDataObject();
48
if
(!pDataObj)
49
return
QStringList();
50
51
const
QWindowsMimeRegistry
&mc =
QWindowsContext
::
instance
(
)
->
mimeConverter
(
)
;
52
const
QStringList fmts = mc.allMimesForFormats(pDataObj);
53
releaseDataObject(pDataObj);
54
qCDebug(lcQpaMime) <<
__FUNCTION__
<< fmts;
55
return
fmts;
56
}
57
58
QVariant
QWindowsInternalMimeData
::
retrieveData_sys
(
const
QString &mimeType, QMetaType type)
const
59
{
60
IDataObject *pDataObj = retrieveDataObject();
61
if
(!pDataObj)
62
return
QVariant();
63
64
QVariant result;
65
const
QWindowsMimeRegistry
&mc =
QWindowsContext
::
instance
(
)
->
mimeConverter
(
)
;
66
if
(
auto
converter = mc.converterToMime(mimeType, pDataObj))
67
result = converter->convertToMime(mimeType, pDataObj, type);
68
releaseDataObject(pDataObj);
69
if
(
QWindowsContext
::
verbose
) {
70
qCDebug(lcQpaMime) <<
__FUNCTION__
<<
' '
<< mimeType <<
' '
<< type.name()
71
<<
" returns "
<< result.metaType().name()
72
<< (result.metaType().id() != QMetaType::QByteArray ? result.toString() : QStringLiteral(
"<data>"
));
73
}
74
return
result;
75
}
QWindowsContext
Singleton container for all relevant information.
Definition
qwindowscontext.h:50
QWindowsContext::mimeConverter
QWindowsMimeRegistry & mimeConverter() const
Definition
qwindowscontext.cpp:670
QWindowsContext::instance
static QWindowsContext * instance()
Definition
qwindowscontext.cpp:450
QWindowsContext::verbose
static int verbose
Definition
qwindowscontext.h:62
QWindowsInternalMimeData
Definition
qwindowsinternalmimedata.h:18
QWindowsInternalMimeData::hasFormat_sys
bool hasFormat_sys(const QString &mimetype) const override
Definition
qwindowsinternalmimedata.cpp:32
QWindowsInternalMimeData::retrieveData_sys
QVariant retrieveData_sys(const QString &mimetype, QMetaType preferredType) const override
Definition
qwindowsinternalmimedata.cpp:58
QWindowsInternalMimeData::formats_sys
QStringList formats_sys() const override
Definition
qwindowsinternalmimedata.cpp:45
QWindowsMimeRegistry
Manages the list of QWindowsMimeConverter instances.
Definition
qwindowsmimeregistry.h:21
qtbase
src
plugins
platforms
windows
qwindowsinternalmimedata.cpp
Generated on
for Qt by
1.18.0