blob: 2cfe5aa97411d3dd566a6a73f6951c635e873e15 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
|
// Copyright (C) 2023 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0+ OR GPL-3.0 WITH Qt-GPL-exception-1.0
#include "studioquickwidget.h"
#include <QQuickItem>
#include <QVBoxLayout>
#include <QtQml/QQmlEngine>
QQmlEngine *s_engine = nullptr;
StudioQuickWidget::StudioQuickWidget(QWidget *parent)
: QWidget{parent}
{
if (!s_engine)
s_engine = new QQmlEngine;
m_quickWidget = new QQuickWidget(s_engine, this);
QVBoxLayout *layout = new QVBoxLayout(this);
setLayout(layout);
layout->setContentsMargins(0, 0, 0, 0);
layout->addWidget(m_quickWidget);
}
QQmlEngine *StudioQuickWidget::engine() const
{
return m_quickWidget->engine();
}
QQmlContext *StudioQuickWidget::rootContext() const
{
return m_quickWidget->rootContext();
}
QQuickItem *StudioQuickWidget::rootObject() const
{
return m_quickWidget->rootObject();
}
void StudioQuickWidget::setResizeMode(QQuickWidget::ResizeMode mode)
{
m_quickWidget->setResizeMode(mode);
}
void StudioQuickWidget::setSource(const QUrl &url)
{
m_quickWidget->setSource(url);
}
void StudioQuickWidget::refresh() {}
void StudioQuickWidget::setClearColor(const QColor &color)
{
m_quickWidget->setClearColor(color);
}
QList<QQmlError> StudioQuickWidget::errors() const
{
return m_quickWidget->errors();
}
StudioPropertyMap *StudioQuickWidget::registerPropertyMap(const QByteArray &name)
{
StudioPropertyMap *map = new StudioPropertyMap(this);
[[maybe_unused]] const int typeIndex = qmlRegisterSingletonType<StudioPropertyMap>(
name.data(), 1, 0, name.data(), [map](QQmlEngine *, QJSEngine *) { return map; });
return map;
}
QQuickWidget *StudioQuickWidget::quickWidget() const
{
return m_quickWidget;
}
StudioPropertyMap::StudioPropertyMap(QObject *parent)
: QQmlPropertyMap(parent)
{}
void StudioPropertyMap::setProperties(const QList<PropertyPair> &properties)
{
for (const PropertyPair &pair : properties)
insert(pair.name, pair.value);
}
|