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
4#include "qqmldebugserviceinterfaces_p.h"
5
6QT_BEGIN_NAMESPACE
7
8const QString QV4DebugService::s_key = QStringLiteral("V8Debugger");
9const QString QQmlEngineDebugService::s_key = QStringLiteral("QmlDebugger");
10const QString QQmlInspectorService::s_key = QStringLiteral("QmlInspector");
11const QString QQmlProfilerService::s_key = QStringLiteral("CanvasFrameRate");
12const QString QDebugMessageService::s_key = QStringLiteral("DebugMessages");
13const QString QQmlEngineControlService::s_key = QStringLiteral("EngineControl");
14const QString QQmlNativeDebugService::s_key = QStringLiteral("NativeQmlDebugger");
15#if QT_CONFIG(translation)
16const QString QQmlDebugTranslationService::s_key = QStringLiteral("DebugTranslation");
17#endif
18
19QV4DebugService::~QV4DebugService()
20 = default;
21QQmlEngineDebugService::~QQmlEngineDebugService()
22 = default;
23QQmlInspectorService::~QQmlInspectorService()
24 = default;
25QQmlProfilerService::~QQmlProfilerService()
26 = default;
27QDebugMessageService::~QDebugMessageService()
28 = default;
29QQmlEngineControlService::~QQmlEngineControlService()
30 = default;
31QQmlNativeDebugService::~QQmlNativeDebugService()
32 = default;
33
34static QQmlDebugStatesDelegate *(*statesDelegateFactory)() = nullptr;
35void QQmlEngineDebugService::setStatesDelegateFactory(QQmlDebugStatesDelegate *(*factory)())
36{
37 statesDelegateFactory = factory;
38}
39
40QQmlDebugStatesDelegate *QQmlEngineDebugService::createStatesDelegate()
41{
42 return statesDelegateFactory ? statesDelegateFactory() : nullptr;
43}
44
45#if QT_CONFIG(translation)
46QQmlDebugTranslationService::~QQmlDebugTranslationService()
47 = default;
48
49const TranslationBindingInformation TranslationBindingInformation::create(
50 const QQmlRefPointer<QV4::ExecutableCompilationUnit> &compilationUnit,
51 const QV4::CompiledData::Binding *binding, QObject *scopeObject,
52 QQmlRefPointer<QQmlContextData> ctxt)
53{
54 QQmlTranslation translation;
55 if (binding->type() == QV4::CompiledData::Binding::Type_TranslationById) {
56 const QV4::CompiledData::TranslationData data =
57 compilationUnit->data->translations()[binding->value.translationDataIndex];
58 const QString id = compilationUnit->stringAt(index: data.stringIndex);
59 const int n = data.number;
60
61 translation = QQmlTranslation(QQmlTranslation::QsTrIdData(id, n));
62 } else {
63 Q_ASSERT(binding->type() == QV4::CompiledData::Binding::Type_Translation);
64
65 const QV4::CompiledData::TranslationData data =
66 compilationUnit->data->translations()[binding->value.translationDataIndex];
67 const QString text = compilationUnit->stringAt(index: data.stringIndex);
68 const QString comment = compilationUnit->stringAt(index: data.commentIndex);
69 const QString context = compilationUnit->stringAt(index: data.contextIndex);
70 const int n = data.number;
71
72 translation = QQmlTranslation(
73 QQmlTranslation::QsTrData(context.isEmpty()
74 ? QQmlTranslation::contextFromQmlFilename(
75 qmlFilename: compilationUnit->fileName())
76 : context, text, comment, n));
77 }
78
79 return { .compilationUnit: compilationUnit,
80 .scopeObject: scopeObject,
81 .ctxt: ctxt,
82
83 .propertyName: compilationUnit->stringAt(index: binding->propertyNameIndex),
84 .translation: translation,
85
86 .line: binding->location.line(),
87 .column: binding->location.column() };
88}
89#endif
90
91QT_END_NAMESPACE
92
93#include "moc_qqmldebugserviceinterfaces_p.cpp"
94

source code of qtdeclarative/src/qml/debugger/qqmldebugserviceinterfaces.cpp