summaryrefslogtreecommitdiffstats
path: root/src/runtime/api/q3dswidget.cpp
diff options
context:
space:
mode:
authorLaszlo Agocs <laszlo.agocs@qt.io>2018-05-03 14:07:50 +0200
committerLaszlo Agocs <laszlo.agocs@qt.io>2018-05-04 08:45:51 +0000
commitcda212e300ce4861c7bf3c322fa1a3f852ac8c24 (patch)
tree741dd1cb40a7490e7256435b58744816c249d125 /src/runtime/api/q3dswidget.cpp
parent776109405e4414784d78fb93ba6f9e7ccc921066 (diff)
Make ViewerSettings available in all public APIs
The original plan of making it available only for Studio3D is probably not a good one now that it turns out scale modes are to be implemented in the engine, not just as a Studio3D-only feature. Change-Id: I25f95c92e40b6b4048ab3acfbb2c011dc44eac25 Reviewed-by: Christian Stromme <christian.stromme@qt.io>
Diffstat (limited to 'src/runtime/api/q3dswidget.cpp')
-rw-r--r--src/runtime/api/q3dswidget.cpp23
1 files changed, 19 insertions, 4 deletions
diff --git a/src/runtime/api/q3dswidget.cpp b/src/runtime/api/q3dswidget.cpp
index 8fe224d..9179f5e 100644
--- a/src/runtime/api/q3dswidget.cpp
+++ b/src/runtime/api/q3dswidget.cpp
@@ -62,6 +62,12 @@ Q3DSPresentation *Q3DSWidget::presentation() const
return d->presentation;
}
+Q3DSViewerSettings *Q3DSWidget::settings() const
+{
+ Q_D(const Q3DSWidget);
+ return d->viewerSettings;
+}
+
QString Q3DSWidget::error() const
{
Q_D(const Q3DSWidget);
@@ -202,10 +208,16 @@ void Q3DSWidget::paintGL()
Q3DSWidgetPrivate::Q3DSWidgetPrivate(Q3DSWidget *q)
: q_ptr(q),
- presentation(new Q3DSPresentation)
+ presentation(new Q3DSPresentation),
+ viewerSettings(new Q3DSViewerSettings)
{
Q3DSPresentationPrivate::get(presentation)->setController(this);
+ QObject::connect(viewerSettings, &Q3DSViewerSettings::showRenderStatsChanged, viewerSettings, [this] {
+ if (engine)
+ engine->setProfileUiVisible(viewerSettings->isShowingRenderStats());
+ });
+
typedef void (QWidget::*QWidgetVoidSlot)();
QObject::connect(&updateTimer, &QTimer::timeout, q, static_cast<QWidgetVoidSlot>(&QWidget::update));
updateTimer.setInterval(updateInterval);
@@ -215,13 +227,12 @@ Q3DSWidgetPrivate::Q3DSWidgetPrivate(Q3DSWidget *q)
Q3DSWidgetPrivate::~Q3DSWidgetPrivate()
{
destroyEngine();
+ delete viewerSettings;
delete presentation;
}
void Q3DSWidgetPrivate::createEngine()
{
- Q_Q(Q3DSWidget);
-
engine = new Q3DSEngine;
Q3DSEngine::Flags flags = Q3DSEngine::WithoutRenderAspect;
@@ -242,7 +253,11 @@ void Q3DSWidgetPrivate::createEngine()
if (!sz.isEmpty())
engine->resize(sz);
- QObject::connect(engine, &Q3DSEngine::presentationLoaded, q, &Q3DSWidget::presentationLoaded);
+ QObject::connect(engine, &Q3DSEngine::presentationLoaded, engine, [this] {
+ if (viewerSettings->isShowingRenderStats())
+ engine->setProfileUiVisible(true);
+ emit q_ptr->presentationLoaded();
+ });
QString err;
sourceLoaded = engine->setSource(fn, &err, inlineQmlSubPresentations);