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
qqmlinspectorservice.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
4
5
#
include
<
private
/
qqmldebugserviceinterfaces_p
.
h
>
6
#
include
<
private
/
qqmldebugservicefactory_p
.
h
>
7
8
#
include
"globalinspector.h"
9
#
include
"qquickwindowinspector.h"
10
11
#
include
<
QtGui
/
QWindow
>
12
13
QT_BEGIN_NAMESPACE
14
15
class
QQmlInspectorServiceImpl
:
public
QQmlInspectorService
16
{
17
Q_OBJECT
18
public
:
19
QQmlInspectorServiceImpl
(
QObject
*
parent
=
nullptr
);
20
21
void
addWindow
(QQuickWindow *window)
override
;
22
void
setParentWindow
(QQuickWindow *window, QWindow *parent)
override
;
23
void
removeWindow
(QQuickWindow *window)
override
;
24
25
signals
:
26
void
scheduleMessage
(
const
QByteArray
&
message
);
27
28
protected
:
29
void
messageReceived
(
const
QByteArray &)
override
;
30
31
private
:
32
friend
class
QQmlInspectorServiceFactory
;
33
34
QmlJSDebugger
::
GlobalInspector
*checkInspector();
35
QmlJSDebugger
::
GlobalInspector
*m_globalInspector;
36
QHash<QQuickWindow *, QWindow *> m_waitingWindows;
37
38
void
messageFromClient(
const
QByteArray &message);
39
};
40
41
QQmlInspectorServiceImpl
::QQmlInspectorServiceImpl(QObject *parent):
42
QQmlInspectorService(1, parent), m_globalInspector(
nullptr
)
43
{
44
connect(
this
, &QQmlInspectorServiceImpl::scheduleMessage,
45
this
, &QQmlInspectorServiceImpl::messageFromClient, Qt::QueuedConnection);
46
}
47
48
QmlJSDebugger
::
GlobalInspector
*
QQmlInspectorServiceImpl
::checkInspector()
49
{
50
if
(state() == Enabled) {
51
if
(!m_globalInspector) {
52
m_globalInspector =
new
QmlJSDebugger::GlobalInspector(
this
);
53
connect(m_globalInspector, &QmlJSDebugger::GlobalInspector::messageToClient,
54
this
, &QQmlDebugService::messageToClient);
55
for
(QHash<QQuickWindow *, QWindow *>::ConstIterator i = m_waitingWindows.constBegin();
56
i != m_waitingWindows.constEnd(); ++i) {
57
m_globalInspector
->
addWindow
(
i.key()
)
;
58
if
(i.value() != 0)
59
m_globalInspector
->
setParentWindow
(
i.key()
,
i.value()
)
;
60
}
61
m_waitingWindows.clear();
62
}
63
}
else
if
(m_globalInspector) {
64
delete
m_globalInspector;
65
m_globalInspector =
nullptr
;
66
}
67
return
m_globalInspector;
68
}
69
70
void
QQmlInspectorServiceImpl
::
addWindow
(QQuickWindow *window)
71
{
72
if
(
QmlJSDebugger
::
GlobalInspector
*inspector = checkInspector())
73
inspector
->
addWindow
(
window
)
;
74
else
75
m_waitingWindows.insert(window, 0);
76
}
77
78
void
QQmlInspectorServiceImpl
::
removeWindow
(QQuickWindow *window)
79
{
80
if
(
QmlJSDebugger
::
GlobalInspector
*inspector = checkInspector())
81
inspector
->
removeWindow
(
window
)
;
82
else
83
m_waitingWindows.remove(window);
84
}
85
86
void
QQmlInspectorServiceImpl
::
setParentWindow
(QQuickWindow *window, QWindow *parent)
87
{
88
if
(
QmlJSDebugger
::
GlobalInspector
*inspector = checkInspector())
89
inspector
->
setParentWindow
(
window
,
parent
)
;
90
else
91
m_waitingWindows[window] = parent;
92
}
93
94
void
QQmlInspectorServiceImpl
::
messageReceived
(
const
QByteArray &message)
95
{
96
// Move the message to the right thread via queued signal
97
emit scheduleMessage(message);
98
}
99
100
void
QQmlInspectorServiceImpl
::messageFromClient(
const
QByteArray &message)
101
{
102
if
(
QmlJSDebugger
::
GlobalInspector
*inspector = checkInspector())
103
inspector->processMessage(message);
104
}
105
106
class
QQmlInspectorServiceFactory
:
public
QQmlDebugServiceFactory
107
{
108
Q_OBJECT
109
Q_PLUGIN_METADATA(IID QQmlDebugServiceFactory_iid FILE
"qqmlinspectorservice.json"
)
110
public
:
111
QQmlDebugService
*
create
(
const
QString
&
key
)
override
;
112
};
113
114
QQmlDebugService *
QQmlInspectorServiceFactory
::create(
const
QString &key)
115
{
116
return
key == QQmlInspectorServiceImpl::s_key ?
new
QQmlInspectorServiceImpl(
this
) :
nullptr
;
117
}
118
119
QT_END_NAMESPACE
120
121
#
include
"qqmlinspectorservice.moc"
QQmlInspectorServiceFactory
Definition
qqmlinspectorservice.cpp:107
QQmlInspectorServiceImpl
Definition
qqmlinspectorservice.cpp:16
QQmlInspectorServiceImpl::setParentWindow
void setParentWindow(QQuickWindow *window, QWindow *parent) override
Definition
qqmlinspectorservice.cpp:86
QQmlInspectorServiceImpl::messageReceived
void messageReceived(const QByteArray &) override
Definition
qqmlinspectorservice.cpp:94
QQmlInspectorServiceImpl::removeWindow
void removeWindow(QQuickWindow *window) override
Definition
qqmlinspectorservice.cpp:78
QQmlInspectorServiceImpl::addWindow
void addWindow(QQuickWindow *window) override
Definition
qqmlinspectorservice.cpp:70
QmlJSDebugger::GlobalInspector
Definition
globalinspector.h:22
QmlJSDebugger::GlobalInspector::setParentWindow
void setParentWindow(QQuickWindow *window, QWindow *parentWindow)
Definition
globalinspector.cpp:192
QmlJSDebugger::GlobalInspector::removeWindow
void removeWindow(QQuickWindow *window)
Definition
globalinspector.cpp:179
QmlJSDebugger::GlobalInspector::addWindow
void addWindow(QQuickWindow *window)
Definition
globalinspector.cpp:174
QT_BEGIN_NAMESPACE
Combined button and popup list for selecting options.
Definition
qsequentialanimationgroup.cpp:47
QmlJSDebugger
Definition
globalinspector.cpp:48
qtdeclarative
src
plugins
qmltooling
qmldbg_inspector
qqmlinspectorservice.cpp
Generated on
for Qt by
1.18.0