mirror of
https://github.com/JulianGro/overte.git
synced 2025-04-26 02:35:16 +02:00
Remove old ToolWindow code
This commit is contained in:
parent
a116768f4c
commit
1fa31d3c10
10 changed files with 28 additions and 386 deletions
|
@ -1,256 +0,0 @@
|
||||||
//
|
|
||||||
// ToolWindow.qml
|
|
||||||
//
|
|
||||||
// Created by Bradley Austin Davis on 12 Jan 2016
|
|
||||||
// Copyright 2016 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
|
|
||||||
//
|
|
||||||
|
|
||||||
import QtQuick 2.5
|
|
||||||
import QtQuick.Controls 1.4
|
|
||||||
import QtQuick.Controls.Styles 1.4
|
|
||||||
import QtWebEngine 1.1
|
|
||||||
import QtWebChannel 1.0
|
|
||||||
import Qt.labs.settings 1.0
|
|
||||||
|
|
||||||
import "windows"
|
|
||||||
import "controls-uit"
|
|
||||||
import "styles-uit"
|
|
||||||
|
|
||||||
|
|
||||||
ScrollingWindow {
|
|
||||||
id: toolWindow
|
|
||||||
resizable: true
|
|
||||||
objectName: "ToolWindow"
|
|
||||||
destroyOnCloseButton: false
|
|
||||||
destroyOnHidden: false
|
|
||||||
closable: true
|
|
||||||
shown: false
|
|
||||||
title: "Edit"
|
|
||||||
property alias tabView: tabView
|
|
||||||
implicitWidth: 520; implicitHeight: 695
|
|
||||||
minSize: Qt.vector2d(456, 500)
|
|
||||||
|
|
||||||
HifiConstants { id: hifi }
|
|
||||||
|
|
||||||
onParentChanged: {
|
|
||||||
if (parent) {
|
|
||||||
x = 120;
|
|
||||||
y = 120;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
onShownChanged: {
|
|
||||||
keyboardEnabled = HMD.active;
|
|
||||||
}
|
|
||||||
|
|
||||||
Settings {
|
|
||||||
category: "ToolWindow.Position"
|
|
||||||
property alias x: toolWindow.x
|
|
||||||
property alias y: toolWindow.y
|
|
||||||
}
|
|
||||||
|
|
||||||
Item {
|
|
||||||
id: toolWindowTabViewItem
|
|
||||||
height: pane.scrollHeight
|
|
||||||
width: pane.contentWidth
|
|
||||||
anchors.left: parent.left
|
|
||||||
anchors.top: parent.top
|
|
||||||
|
|
||||||
TabView {
|
|
||||||
id: tabView
|
|
||||||
width: pane.contentWidth
|
|
||||||
// Pane height so that don't use Window's scrollbars otherwise tabs may be scrolled out of view.
|
|
||||||
height: pane.scrollHeight
|
|
||||||
property int tabCount: 0
|
|
||||||
|
|
||||||
Repeater {
|
|
||||||
model: 4
|
|
||||||
Tab {
|
|
||||||
// Force loading of the content even if the tab is not visible
|
|
||||||
// (required for letting the C++ code access the webview)
|
|
||||||
active: true
|
|
||||||
enabled: false
|
|
||||||
property string originalUrl: ""
|
|
||||||
|
|
||||||
WebView {
|
|
||||||
id: webView
|
|
||||||
anchors.fill: parent
|
|
||||||
enabled: false
|
|
||||||
Component.onCompleted: {
|
|
||||||
webChannel.registerObject("eventBridge", eventBridge);
|
|
||||||
webChannel.registerObject("eventBridgeWrapper", eventBridgeWrapper);
|
|
||||||
}
|
|
||||||
|
|
||||||
onEnabledChanged: toolWindow.updateVisiblity()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
style: TabViewStyle {
|
|
||||||
|
|
||||||
frame: Rectangle { // Background shown before content loads.
|
|
||||||
anchors.fill: parent
|
|
||||||
color: hifi.colors.baseGray
|
|
||||||
}
|
|
||||||
|
|
||||||
frameOverlap: 0
|
|
||||||
|
|
||||||
tab: Rectangle {
|
|
||||||
implicitWidth: text.width
|
|
||||||
implicitHeight: 3 * text.height
|
|
||||||
color: styleData.selected ? hifi.colors.black : hifi.colors.tabBackgroundDark
|
|
||||||
|
|
||||||
RalewayRegular {
|
|
||||||
id: text
|
|
||||||
text: styleData.title
|
|
||||||
font.capitalization: Font.AllUppercase
|
|
||||||
size: hifi.fontSizes.tabName
|
|
||||||
width: tabView.tabCount > 1 ? styleData.availableWidth / tabView.tabCount : implicitWidth + 2 * hifi.dimensions.contentSpacing.x
|
|
||||||
elide: Text.ElideRight
|
|
||||||
color: styleData.selected ? hifi.colors.primaryHighlight : hifi.colors.lightGrayText
|
|
||||||
horizontalAlignment: Text.AlignHCenter
|
|
||||||
anchors.centerIn: parent
|
|
||||||
}
|
|
||||||
|
|
||||||
Rectangle { // Separator.
|
|
||||||
width: 1
|
|
||||||
height: parent.height
|
|
||||||
color: hifi.colors.black
|
|
||||||
anchors.left: parent.left
|
|
||||||
anchors.top: parent.top
|
|
||||||
visible: styleData.index > 0
|
|
||||||
|
|
||||||
Rectangle {
|
|
||||||
width: 1
|
|
||||||
height: 1
|
|
||||||
color: hifi.colors.baseGray
|
|
||||||
anchors.left: parent.left
|
|
||||||
anchors.bottom: parent.bottom
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Rectangle { // Active underline.
|
|
||||||
width: parent.width - (styleData.index > 0 ? 1 : 0)
|
|
||||||
height: 1
|
|
||||||
anchors.right: parent.right
|
|
||||||
anchors.bottom: parent.bottom
|
|
||||||
color: styleData.selected ? hifi.colors.primaryHighlight : hifi.colors.baseGray
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
tabOverlap: 0
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function updateVisiblity() {
|
|
||||||
if (visible) {
|
|
||||||
for (var i = 0; i < tabView.count; ++i) {
|
|
||||||
if (tabView.getTab(i).enabled) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
shown = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function findIndexForUrl(source) {
|
|
||||||
for (var i = 0; i < tabView.count; ++i) {
|
|
||||||
var tab = tabView.getTab(i);
|
|
||||||
if (tab.originalUrl === source) {
|
|
||||||
return i;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
function findTabForUrl(source) {
|
|
||||||
var index = findIndexForUrl(source);
|
|
||||||
if (index < 0) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
return tabView.getTab(index);
|
|
||||||
}
|
|
||||||
|
|
||||||
function showTabForUrl(source, newVisible) {
|
|
||||||
var index = findIndexForUrl(source);
|
|
||||||
if (index < 0) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
var tab = tabView.getTab(index);
|
|
||||||
if (newVisible) {
|
|
||||||
toolWindow.shown = true
|
|
||||||
tab.enabled = true
|
|
||||||
} else {
|
|
||||||
tab.enabled = false;
|
|
||||||
updateVisiblity();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function findFreeTab() {
|
|
||||||
for (var i = 0; i < tabView.count; ++i) {
|
|
||||||
var tab = tabView.getTab(i);
|
|
||||||
if (tab && (!tab.originalUrl || tab.originalUrl === "")) {
|
|
||||||
return i;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
function removeTabForUrl(source) {
|
|
||||||
var index = findIndexForUrl(source);
|
|
||||||
if (index < 0) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
var tab = tabView.getTab(index);
|
|
||||||
tab.title = "";
|
|
||||||
tab.enabled = false;
|
|
||||||
tab.originalUrl = "";
|
|
||||||
tab.item.url = "about:blank";
|
|
||||||
tab.item.enabled = false;
|
|
||||||
tabView.tabCount--;
|
|
||||||
}
|
|
||||||
|
|
||||||
function addWebTab(properties) {
|
|
||||||
if (!properties.source) {
|
|
||||||
console.warn("Attempted to open Web Tool Pane without URL");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
var existingTabIndex = findIndexForUrl(properties.source);
|
|
||||||
if (existingTabIndex >= 0) {
|
|
||||||
var tab = tabView.getTab(existingTabIndex);
|
|
||||||
return tab.item;
|
|
||||||
}
|
|
||||||
|
|
||||||
var freeTabIndex = findFreeTab();
|
|
||||||
if (freeTabIndex === -1) {
|
|
||||||
console.warn("Unable to add new tab");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (properties.width) {
|
|
||||||
tabView.width = Math.min(Math.max(tabView.width, properties.width), toolWindow.maxSize.x);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (properties.height) {
|
|
||||||
tabView.height = Math.min(Math.max(tabView.height, properties.height), toolWindow.maxSize.y);
|
|
||||||
}
|
|
||||||
|
|
||||||
var tab = tabView.getTab(freeTabIndex);
|
|
||||||
tab.title = properties.title || "Unknown";
|
|
||||||
tab.enabled = true;
|
|
||||||
tab.originalUrl = properties.source;
|
|
||||||
|
|
||||||
var result = tab.item;
|
|
||||||
result.enabled = true;
|
|
||||||
tabView.tabCount++;
|
|
||||||
result.url = properties.source;
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -22,10 +22,6 @@ OriginalDesktop.Desktop {
|
||||||
acceptedButtons: Qt.NoButton
|
acceptedButtons: Qt.NoButton
|
||||||
}
|
}
|
||||||
|
|
||||||
// The tool window, one instance
|
|
||||||
property alias toolWindow: toolWindow
|
|
||||||
ToolWindow { id: toolWindow }
|
|
||||||
|
|
||||||
Action {
|
Action {
|
||||||
text: "Open Browser"
|
text: "Open Browser"
|
||||||
shortcut: "Ctrl+B"
|
shortcut: "Ctrl+B"
|
||||||
|
|
|
@ -666,7 +666,6 @@ void OffscreenUi::createDesktop(const QUrl& url) {
|
||||||
Q_UNUSED(context)
|
Q_UNUSED(context)
|
||||||
_desktop = static_cast<QQuickItem*>(newObject);
|
_desktop = static_cast<QQuickItem*>(newObject);
|
||||||
getSurfaceContext()->setContextProperty("desktop", _desktop);
|
getSurfaceContext()->setContextProperty("desktop", _desktop);
|
||||||
_toolWindow = _desktop->findChild<QQuickItem*>("ToolWindow");
|
|
||||||
|
|
||||||
_vrMenu = new VrMenu(this);
|
_vrMenu = new VrMenu(this);
|
||||||
for (const auto& menuInitializer : _queuedMenuInitializers) {
|
for (const auto& menuInitializer : _queuedMenuInitializers) {
|
||||||
|
@ -686,10 +685,6 @@ QObject* OffscreenUi::getRootMenu() {
|
||||||
return getRootItem()->findChild<QObject*>("rootMenu");
|
return getRootItem()->findChild<QObject*>("rootMenu");
|
||||||
}
|
}
|
||||||
|
|
||||||
QQuickItem* OffscreenUi::getToolWindow() {
|
|
||||||
return _toolWindow;
|
|
||||||
}
|
|
||||||
|
|
||||||
void OffscreenUi::unfocusWindows() {
|
void OffscreenUi::unfocusWindows() {
|
||||||
bool invokeResult = QMetaObject::invokeMethod(_desktop, "unfocusWindows");
|
bool invokeResult = QMetaObject::invokeMethod(_desktop, "unfocusWindows");
|
||||||
Q_ASSERT(invokeResult);
|
Q_ASSERT(invokeResult);
|
||||||
|
|
|
@ -80,7 +80,6 @@ public:
|
||||||
QObject* getFlags();
|
QObject* getFlags();
|
||||||
Q_INVOKABLE bool isPointOnDesktopWindow(QVariant point);
|
Q_INVOKABLE bool isPointOnDesktopWindow(QVariant point);
|
||||||
QQuickItem* getDesktop();
|
QQuickItem* getDesktop();
|
||||||
QQuickItem* getToolWindow();
|
|
||||||
QObject* getRootMenu();
|
QObject* getRootMenu();
|
||||||
enum Icon {
|
enum Icon {
|
||||||
ICON_NONE = 0,
|
ICON_NONE = 0,
|
||||||
|
@ -261,7 +260,6 @@ private:
|
||||||
ModalDialogListener* assetDialogAsync(const QVariantMap& properties);
|
ModalDialogListener* assetDialogAsync(const QVariantMap& properties);
|
||||||
|
|
||||||
QQuickItem* _desktop { nullptr };
|
QQuickItem* _desktop { nullptr };
|
||||||
QQuickItem* _toolWindow { nullptr };
|
|
||||||
QList<QObject*> _modalDialogListeners;
|
QList<QObject*> _modalDialogListeners;
|
||||||
std::unordered_map<int, bool> _pressedKeys;
|
std::unordered_map<int, bool> _pressedKeys;
|
||||||
VrMenu* _vrMenu { nullptr };
|
VrMenu* _vrMenu { nullptr };
|
||||||
|
|
|
@ -32,7 +32,6 @@ static const char* const EVENT_BRIDGE_PROPERTY = "eventBridge";
|
||||||
static const char* const WIDTH_PROPERTY = "width";
|
static const char* const WIDTH_PROPERTY = "width";
|
||||||
static const char* const HEIGHT_PROPERTY = "height";
|
static const char* const HEIGHT_PROPERTY = "height";
|
||||||
static const char* const VISIBILE_PROPERTY = "visible";
|
static const char* const VISIBILE_PROPERTY = "visible";
|
||||||
static const char* const TOOLWINDOW_PROPERTY = "toolWindow";
|
|
||||||
static const uvec2 MAX_QML_WINDOW_SIZE { 1280, 720 };
|
static const uvec2 MAX_QML_WINDOW_SIZE { 1280, 720 };
|
||||||
static const uvec2 MIN_QML_WINDOW_SIZE { 120, 80 };
|
static const uvec2 MIN_QML_WINDOW_SIZE { 120, 80 };
|
||||||
|
|
||||||
|
@ -53,9 +52,6 @@ QVariantMap QmlWindowClass::parseArguments(QScriptContext* context) {
|
||||||
if (context->argument(3).isNumber()) {
|
if (context->argument(3).isNumber()) {
|
||||||
properties[HEIGHT_PROPERTY] = context->argument(3).toInt32();
|
properties[HEIGHT_PROPERTY] = context->argument(3).toInt32();
|
||||||
}
|
}
|
||||||
if (context->argument(4).isBool()) {
|
|
||||||
properties[TOOLWINDOW_PROPERTY] = context->argument(4).toBool();
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
properties = context->argument(0).toVariant().toMap();
|
properties = context->argument(0).toVariant().toMap();
|
||||||
}
|
}
|
||||||
|
@ -96,52 +92,37 @@ void QmlWindowClass::initQml(QVariantMap properties) {
|
||||||
auto offscreenUi = DependencyManager::get<OffscreenUi>();
|
auto offscreenUi = DependencyManager::get<OffscreenUi>();
|
||||||
_source = properties[SOURCE_PROPERTY].toString();
|
_source = properties[SOURCE_PROPERTY].toString();
|
||||||
|
|
||||||
#if QML_TOOL_WINDOW
|
// Build the event bridge and wrapper on the main thread
|
||||||
_toolWindow = properties.contains(TOOLWINDOW_PROPERTY) && properties[TOOLWINDOW_PROPERTY].toBool();
|
offscreenUi->loadInNewContext(qmlSource(), [&](QQmlContext* context, QObject* object) {
|
||||||
if (_toolWindow) {
|
_qmlWindow = object;
|
||||||
// Build the event bridge and wrapper on the main thread
|
context->setContextProperty(EVENT_BRIDGE_PROPERTY, this);
|
||||||
_qmlWindow = offscreenUi->getToolWindow();
|
context->engine()->setObjectOwnership(this, QQmlEngine::CppOwnership);
|
||||||
properties[EVENT_BRIDGE_PROPERTY] = QVariant::fromValue(this);
|
context->engine()->setObjectOwnership(object, QQmlEngine::CppOwnership);
|
||||||
QVariant newTabVar;
|
if (properties.contains(TITLE_PROPERTY)) {
|
||||||
bool invokeResult = QMetaObject::invokeMethod(_qmlWindow, "addWebTab", Qt::DirectConnection,
|
object->setProperty(TITLE_PROPERTY, properties[TITLE_PROPERTY].toString());
|
||||||
Q_RETURN_ARG(QVariant, newTabVar),
|
}
|
||||||
Q_ARG(QVariant, QVariant::fromValue(properties)));
|
if (properties.contains(HEIGHT_PROPERTY) && properties.contains(WIDTH_PROPERTY)) {
|
||||||
Q_ASSERT(invokeResult);
|
uvec2 requestedSize { properties[WIDTH_PROPERTY].toUInt(), properties[HEIGHT_PROPERTY].toUInt() };
|
||||||
} else {
|
requestedSize = glm::clamp(requestedSize, MIN_QML_WINDOW_SIZE, MAX_QML_WINDOW_SIZE);
|
||||||
#endif
|
asQuickItem()->setSize(QSize(requestedSize.x, requestedSize.y));
|
||||||
// Build the event bridge and wrapper on the main thread
|
}
|
||||||
offscreenUi->loadInNewContext(qmlSource(), [&](QQmlContext* context, QObject* object) {
|
|
||||||
_qmlWindow = object;
|
|
||||||
context->setContextProperty(EVENT_BRIDGE_PROPERTY, this);
|
|
||||||
context->engine()->setObjectOwnership(this, QQmlEngine::CppOwnership);
|
|
||||||
context->engine()->setObjectOwnership(object, QQmlEngine::CppOwnership);
|
|
||||||
if (properties.contains(TITLE_PROPERTY)) {
|
|
||||||
object->setProperty(TITLE_PROPERTY, properties[TITLE_PROPERTY].toString());
|
|
||||||
}
|
|
||||||
if (properties.contains(HEIGHT_PROPERTY) && properties.contains(WIDTH_PROPERTY)) {
|
|
||||||
uvec2 requestedSize { properties[WIDTH_PROPERTY].toUInt(), properties[HEIGHT_PROPERTY].toUInt() };
|
|
||||||
requestedSize = glm::clamp(requestedSize, MIN_QML_WINDOW_SIZE, MAX_QML_WINDOW_SIZE);
|
|
||||||
asQuickItem()->setSize(QSize(requestedSize.x, requestedSize.y));
|
|
||||||
}
|
|
||||||
|
|
||||||
bool visible = !properties.contains(VISIBILE_PROPERTY) || properties[VISIBILE_PROPERTY].toBool();
|
bool visible = !properties.contains(VISIBILE_PROPERTY) || properties[VISIBILE_PROPERTY].toBool();
|
||||||
object->setProperty(OFFSCREEN_VISIBILITY_PROPERTY, visible);
|
object->setProperty(OFFSCREEN_VISIBILITY_PROPERTY, visible);
|
||||||
object->setProperty(SOURCE_PROPERTY, _source);
|
object->setProperty(SOURCE_PROPERTY, _source);
|
||||||
|
|
||||||
const QMetaObject *metaObject = _qmlWindow->metaObject();
|
const QMetaObject *metaObject = _qmlWindow->metaObject();
|
||||||
// Forward messages received from QML on to the script
|
// Forward messages received from QML on to the script
|
||||||
connect(_qmlWindow, SIGNAL(sendToScript(QVariant)), this, SLOT(qmlToScript(const QVariant&)), Qt::QueuedConnection);
|
connect(_qmlWindow, SIGNAL(sendToScript(QVariant)), this, SLOT(qmlToScript(const QVariant&)), Qt::QueuedConnection);
|
||||||
connect(_qmlWindow, SIGNAL(visibleChanged()), this, SIGNAL(visibleChanged()), Qt::QueuedConnection);
|
connect(_qmlWindow, SIGNAL(visibleChanged()), this, SIGNAL(visibleChanged()), Qt::QueuedConnection);
|
||||||
|
|
||||||
|
if (metaObject->indexOfSignal("resized") >= 0)
|
||||||
|
connect(_qmlWindow, SIGNAL(resized(QSizeF)), this, SIGNAL(resized(QSizeF)), Qt::QueuedConnection);
|
||||||
|
if (metaObject->indexOfSignal("moved") >= 0)
|
||||||
|
connect(_qmlWindow, SIGNAL(moved(QVector2D)), this, SLOT(hasMoved(QVector2D)), Qt::QueuedConnection);
|
||||||
|
connect(_qmlWindow, SIGNAL(windowClosed()), this, SLOT(hasClosed()), Qt::QueuedConnection);
|
||||||
|
});
|
||||||
|
|
||||||
if (metaObject->indexOfSignal("resized") >= 0)
|
|
||||||
connect(_qmlWindow, SIGNAL(resized(QSizeF)), this, SIGNAL(resized(QSizeF)), Qt::QueuedConnection);
|
|
||||||
if (metaObject->indexOfSignal("moved") >= 0)
|
|
||||||
connect(_qmlWindow, SIGNAL(moved(QVector2D)), this, SLOT(hasMoved(QVector2D)), Qt::QueuedConnection);
|
|
||||||
connect(_qmlWindow, SIGNAL(windowClosed()), this, SLOT(hasClosed()), Qt::QueuedConnection);
|
|
||||||
});
|
|
||||||
#if QML_TOOL_WINDOW
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
Q_ASSERT(_qmlWindow);
|
Q_ASSERT(_qmlWindow);
|
||||||
Q_ASSERT(dynamic_cast<const QQuickItem*>(_qmlWindow.data()));
|
Q_ASSERT(dynamic_cast<const QQuickItem*>(_qmlWindow.data()));
|
||||||
}
|
}
|
||||||
|
@ -215,11 +196,6 @@ QmlWindowClass::~QmlWindowClass() {
|
||||||
}
|
}
|
||||||
|
|
||||||
QQuickItem* QmlWindowClass::asQuickItem() const {
|
QQuickItem* QmlWindowClass::asQuickItem() const {
|
||||||
#if QML_TOOL_WINDOW
|
|
||||||
if (_toolWindow) {
|
|
||||||
return DependencyManager::get<OffscreenUi>()->getToolWindow();
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
return _qmlWindow.isNull() ? nullptr : dynamic_cast<QQuickItem*>(_qmlWindow.data());
|
return _qmlWindow.isNull() ? nullptr : dynamic_cast<QQuickItem*>(_qmlWindow.data());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -230,14 +206,6 @@ void QmlWindowClass::setVisible(bool visible) {
|
||||||
}
|
}
|
||||||
|
|
||||||
QQuickItem* targetWindow = asQuickItem();
|
QQuickItem* targetWindow = asQuickItem();
|
||||||
#if QML_TOOL_WINDOW
|
|
||||||
if (_toolWindow) {
|
|
||||||
// For tool window tabs we special case visibility as a function call on the tab parent
|
|
||||||
// The tool window itself has special logic based on whether any tabs are visible
|
|
||||||
QMetaObject::invokeMethod(targetWindow, "showTabForUrl", Qt::QueuedConnection, Q_ARG(QVariant, _source), Q_ARG(QVariant, visible));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
targetWindow->setProperty(OFFSCREEN_VISIBILITY_PROPERTY, visible);
|
targetWindow->setProperty(OFFSCREEN_VISIBILITY_PROPERTY, visible);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -253,12 +221,6 @@ bool QmlWindowClass::isVisible() {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if QML_TOOL_WINDOW
|
|
||||||
if (_toolWindow) {
|
|
||||||
return dynamic_cast<QQuickItem*>(_qmlWindow.data())->isEnabled();
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
return asQuickItem()->isVisible();
|
return asQuickItem()->isVisible();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -343,17 +305,6 @@ void QmlWindowClass::close() {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if QML_TOOL_WINDOW
|
|
||||||
if (_toolWindow) {
|
|
||||||
auto offscreenUi = DependencyManager::get<OffscreenUi>();
|
|
||||||
auto toolWindow = offscreenUi->getToolWindow();
|
|
||||||
auto invokeResult = QMetaObject::invokeMethod(toolWindow, "removeTabForUrl", Qt::DirectConnection,
|
|
||||||
Q_ARG(QVariant, _source));
|
|
||||||
Q_ASSERT(invokeResult);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if (_qmlWindow) {
|
if (_qmlWindow) {
|
||||||
_qmlWindow->deleteLater();
|
_qmlWindow->deleteLater();
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,8 +19,6 @@
|
||||||
class QScriptEngine;
|
class QScriptEngine;
|
||||||
class QScriptContext;
|
class QScriptContext;
|
||||||
|
|
||||||
#define QML_TOOL_WINDOW 0
|
|
||||||
|
|
||||||
// FIXME refactor this class to be a QQuickItem derived type and eliminate the needless wrapping
|
// FIXME refactor this class to be a QQuickItem derived type and eliminate the needless wrapping
|
||||||
class QmlWindowClass : public QObject {
|
class QmlWindowClass : public QObject {
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
@ -87,12 +85,6 @@ protected:
|
||||||
|
|
||||||
virtual QString qmlSource() const { return "QmlWindow.qml"; }
|
virtual QString qmlSource() const { return "QmlWindow.qml"; }
|
||||||
|
|
||||||
#if QML_TOOL_WINDOW
|
|
||||||
// FIXME needs to be initialized in the ctor once we have support
|
|
||||||
// for tool window panes in QML
|
|
||||||
bool _toolWindow { false };
|
|
||||||
#endif
|
|
||||||
|
|
||||||
QPointer<QObject> _qmlWindow;
|
QPointer<QObject> _qmlWindow;
|
||||||
QString _source;
|
QString _source;
|
||||||
|
|
||||||
|
|
|
@ -4,7 +4,6 @@ qmlWindow = new OverlayWindow({
|
||||||
source: qml,
|
source: qml,
|
||||||
height: 320,
|
height: 320,
|
||||||
width: 640,
|
width: 640,
|
||||||
toolWindow: false,
|
|
||||||
visible: true
|
visible: true
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -4,7 +4,6 @@ qmlWindow = new OverlayWindow({
|
||||||
source: "qrc:///qml/OverlayWindowTest.qml",
|
source: "qrc:///qml/OverlayWindowTest.qml",
|
||||||
height: 240,
|
height: 240,
|
||||||
width: 320,
|
width: 320,
|
||||||
toolWindow: false,
|
|
||||||
visible: true
|
visible: true
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -15,7 +15,6 @@ qmlWindow = new OverlayWindow({
|
||||||
source: qml,
|
source: qml,
|
||||||
height: 240,
|
height: 240,
|
||||||
width: 320,
|
width: 320,
|
||||||
toolWindow: false,
|
|
||||||
visible: true
|
visible: true
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -1,31 +0,0 @@
|
||||||
var TOGGLE_RATE = 1000;
|
|
||||||
var RUNTIME = 60 * 1000;
|
|
||||||
|
|
||||||
var webView;
|
|
||||||
var running = true;
|
|
||||||
|
|
||||||
function toggleWindow() {
|
|
||||||
if (!running) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (webView) {
|
|
||||||
webView.close();
|
|
||||||
webView = null;
|
|
||||||
} else {
|
|
||||||
webView = new OverlayWebWindow({
|
|
||||||
title: 'Entity Properties',
|
|
||||||
source: "http://www.google.com",
|
|
||||||
toolWindow: true
|
|
||||||
});
|
|
||||||
webView.setVisible(true);
|
|
||||||
}
|
|
||||||
Script.setTimeout(toggleWindow, TOGGLE_RATE)
|
|
||||||
}
|
|
||||||
|
|
||||||
toggleWindow();
|
|
||||||
print("Creating window?")
|
|
||||||
|
|
||||||
Script.setTimeout(function(){
|
|
||||||
print("Shutting down")
|
|
||||||
}, RUNTIME)
|
|
Loading…
Reference in a new issue