Qt 6.x
The Qt SDK
Loading...
Searching...
No Matches
qqmldebugservice.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
6#include <private/qqmldata_p.h>
7#include <private/qqmlcontext_p.h>
8
9#include <QtCore/QDebug>
10#include <QtCore/QStringList>
11#include <QtCore/QFileInfo>
12
14
15class QQmlDebugServer;
16
18{
19 Q_DECLARE_PUBLIC(QQmlDebugService)
20public:
22
24 const float version;
26};
27
29 name(name), version(version), state(QQmlDebugService::NotConnected)
30{
31}
32
34 : QObject(*(new QQmlDebugServicePrivate(name, version)), parent)
35{
38
39 if (!server)
40 return;
41
42 if (server->service(d->name)) {
43 qWarning() << "QQmlDebugService: Conflicting plugin name" << d->name;
44 } else {
45 server->addService(d->name, this);
46 }
47}
48
50{
53
54 if (!server)
55 return;
56
57 if (server->service(d->name) != this)
58 qWarning() << "QQmlDebugService: Plugin" << d->name << "is not registered.";
59 else
60 server->removeService(d->name);
61}
62
64{
65 Q_D(const QQmlDebugService);
66 return d->name;
67}
68
70{
71 Q_D(const QQmlDebugService);
72 return d->version;
73}
74
76{
77 Q_D(const QQmlDebugService);
78 return d->state;
79}
80
82{
84 d->state = newState;
85}
86
87namespace {
88class ObjectReferenceHash : public QObject
89{
91public:
92 ObjectReferenceHash() : nextId(0) {}
93
96
97 int nextId;
98
99 void remove(QObject *obj);
100};
101}
102Q_GLOBAL_STATIC(ObjectReferenceHash, objectReferenceHash)
103
104void ObjectReferenceHash::remove(QObject *obj)
105{
107 if (iter != objects.end()) {
108 ids.remove(iter.value());
109 objects.erase(iter);
110 }
111}
112
118{
119 if (!object)
120 return -1;
121
122 ObjectReferenceHash *hash = objectReferenceHash();
123 QHash<QObject *, int>::Iterator iter = hash->objects.find(object);
124
125 if (iter == hash->objects.end()) {
126 int id = hash->nextId++;
127 hash->ids.insert(id, object);
128 iter = hash->objects.insert(object, id);
129 connect(object, &QObject::destroyed, hash, &ObjectReferenceHash::remove);
130 }
131 return iter.value();
132}
133
138{
139 return objectReferenceHash()->ids;
140}
141
143
144#include "qqmldebugservice.moc"
145#include "moc_qqmldebugservice_p.cpp"
\inmodule QtCore
Definition qhash.h:1093
\inmodule QtCore
Definition qhash.h:818
\inmodule QtCore
Definition qobject.h:90
static QMetaObject::Connection connect(const QObject *sender, const char *signal, const QObject *receiver, const char *member, Qt::ConnectionType=Qt::AutoConnection)
\threadsafe
Definition qobject.cpp:2823
void destroyed(QObject *=nullptr)
This signal is emitted immediately before the object obj is destroyed, after any instances of QPointe...
static QQmlDebugConnector * instance()
QQmlDebugServicePrivate(const QString &name, float version)
QQmlDebugService::State state
void setState(State newState)
static int idForObject(QObject *)
Returns a unique id for object.
~QQmlDebugService() override
static const QHash< int, QObject * > & objectsForIds()
Returns the mapping of objects to unique ids, created through calls to idForObject().
float version() const
const QString & name() const
QQmlDebugService(const QString &, float version, QObject *parent=nullptr)
\macro QT_RESTRICTED_CAST_FROM_ASCII
Definition qstring.h:127
QHash< int, QWidget * > hash
[35multi]
else opt state
[0]
void newState(QList< State > &states, const char *token, const char *lexem, bool pre)
Combined button and popup list for selecting options.
DBusConnection const char DBusError DBusBusType DBusError return DBusConnection DBusHandleMessageFunction void DBusFreeFunction return DBusConnection return DBusConnection return const char DBusError return DBusConnection DBusMessage dbus_uint32_t return DBusConnection dbus_bool_t DBusConnection DBusAddWatchFunction DBusRemoveWatchFunction DBusWatchToggledFunction void DBusFreeFunction return DBusConnection DBusDispatchStatusFunction void DBusFreeFunction DBusTimeout return DBusTimeout return DBusWatch return DBusWatch unsigned int return DBusError const DBusError return const DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessageIter * iter
DBusConnection const char DBusError DBusBusType DBusError return DBusConnection DBusHandleMessageFunction void DBusFreeFunction return DBusConnection return DBusConnection return const char DBusError return DBusConnection DBusMessage dbus_uint32_t return DBusConnection dbus_bool_t DBusConnection DBusAddWatchFunction DBusRemoveWatchFunction DBusWatchToggledFunction void DBusFreeFunction return DBusConnection DBusDispatchStatusFunction void DBusFreeFunction DBusTimeout return DBusTimeout return DBusWatch return DBusWatch unsigned int return DBusError const DBusError return const DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessageIter int const void return DBusMessageIter DBusMessageIter return DBusMessageIter void DBusMessageIter void int return DBusMessage DBusMessageIter return DBusMessageIter return DBusMessageIter DBusMessageIter const char const char const char const char return DBusMessage return DBusMessage const char return DBusMessage dbus_bool_t return DBusMessage dbus_uint32_t return DBusMessage return DBusPendingCall DBusPendingCall return DBusPendingCall return dbus_int32_t return DBusServer * server
#define Q_GLOBAL_STATIC(TYPE, NAME,...)
#define qWarning
Definition qlogging.h:162
GLenum GLenum GLsizei const GLuint * ids
GLuint name
GLhandleARB obj
[2]
#define Q_OBJECT
static uint nextId
settings remove("monkey")
IUIAutomationTreeWalker __RPC__deref_out_opt IUIAutomationElement ** parent