diff options
author | Laszlo Agocs <laszlo.agocs@qt.io> | 2018-05-03 14:07:50 +0200 |
---|---|---|
committer | Laszlo Agocs <laszlo.agocs@qt.io> | 2018-05-04 08:45:51 +0000 |
commit | cda212e300ce4861c7bf3c322fa1a3f852ac8c24 (patch) | |
tree | 741dd1cb40a7490e7256435b58744816c249d125 /src/runtime/api/q3dswidget.cpp | |
parent | 776109405e4414784d78fb93ba6f9e7ccc921066 (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.cpp | 23 |
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); |