overte/libraries/ui/src/DockWidget.cpp
2019-05-08 10:04:31 -07:00

47 lines
1.2 KiB
C++

//
// DockWidget.cpp
// libraries/ui/src
//
// Created by Dante Ruiz 05-07-2019
// Copyright 2019 High Fidelity, Inc.
//
// Distributed under the Apache License, Version 2.0.
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
//
#include "DockWidget.h"
#include "OffscreenUi.h"
#include <QtQml/QQmlEngine>
#include <QtQml/QQmlContext>
#include <QQuickView>
#include <PathUtils.h>
static void quickViewDeleter(QQuickView* quickView) {
quickView->deleteLater();
}
DockWidget::DockWidget(const QString& title, QWidget* parent) : QDockWidget(title, parent) {
auto offscreenUi = DependencyManager::get<OffscreenUi>();
auto qmlEngine = offscreenUi->getSurfaceContext()->engine();
_quickView = std::shared_ptr<QQuickView>(new QQuickView(qmlEngine, nullptr), quickViewDeleter);
QWidget* widget = QWidget::createWindowContainer(_quickView.get());
setWidget(widget);
QWidget* headerWidget = new QWidget();
setTitleBarWidget(headerWidget);
}
void DockWidget::setSource(const QUrl& url) {
_quickView->setSource(url);
}
QQuickItem* DockWidget::getRootItem() const {
return _quickView->rootObject();
}
std::shared_ptr<QQuickView> DockWidget::getQuickView() const {
return _quickView;
}