import QtQuick 2.0 import FlightGear 1.0 as FG Item { id: root property bool showDecorations: true property alias canvas: paintedDisplay.canvas property bool showUi: true property bool showMenu: false Component.onCompleted: { if (canvas) { width = canvas.size.width height = canvas.size.height x = canvas.origin.x y = canvas.origin.y } } function saveGeometry() { canvas.origin = Qt.point(x, y ) canvas.size = Qt.size(root.width, root.height); } Item { id: clipShell anchors.fill: parent clip: true // FG.CanvasDisplay { // id: canvasDisplay // anchors.fill: parent // onCanvasChanged: { // if (canvas) { // root.width = canvas.size.width // root.height = canvas.size.height // root.x = canvas.origin.x // root.y = canvas.origin.y // } // } // } FG.PaintedCanvasDisplay { id: paintedDisplay anchors.fill: parent // canvas: canvasDisplay.canvas onCanvasChanged: { if (canvas) { root.width = canvas.size.width root.height = canvas.size.height root.x = canvas.origin.x root.y = canvas.origin.y } } } } Rectangle { border.width: 1 border.color: "orange" color: "transparent" anchors.centerIn: parent width: parent.width height: parent.height visible: showUi MouseArea { anchors.fill: parent drag.target: root onReleased: { root.saveGeometry(); } onPressAndHold: { root.showMenu = true; } } Rectangle { width: 32 height: 32 color: "orange" opacity: 0.5 anchors.right: parent.right anchors.bottom: parent.bottom MouseArea { anchors.fill: parent // resizing onPositionChanged: { var rootPos = mapToItem(root, mouse.x, mouse.y); // var rootDiff = Qt.point(rootPos.x - root.x, // rootPos.y - root.y); root.width = rootPos.x; root.height = rootPos.y; } onReleased: { saveGeometry(); } } } Text { color: "orange" anchors.centerIn: parent text: "Canvas" visible: !root.showMenu } Text { anchors.fill: parent verticalAlignment: Text.AlignBottom function statusAsString(status) { switch (status) { case FG.CanvasConnection.NotConnected: return "Not connected"; case FG.CanvasConnection.Connecting: return "Connecting"; case FG.CanvasConnection.Connected: return "Connected"; case FG.CanvasConnection.Closed: return "Closed"; case FG.CanvasConnection.Reconnecting: return "Re-connecting"; case FG.CanvasConnection.Error: return "Error"; case FG.CanvasConnection.Snapshot: return "Snapshot"; } } text: "WS: " + canvas.webSocketUrl + "\n" + "Root:" + canvas.rootPath + "\n" + "Status:" + statusAsString(canvas.status); color: "white" } CanvasMenu { anchors.fill:parent visible: root.showMenu onMenuBack: root.showMenu = false onCloseCanvas: _application.closeCanvas(canvas); onReconnectCanvas: canvas.reconnect(); } } }