1
0
Fork 0
flightgear/utils/fgqcanvas/qml/Window.qml
James Turner 6e465f9dbe FGQCanvas: Multi-window support (for RPi4)
To support EGLFS on the RPi4 dual outputs, enable multiple windows
within a single process.
2019-08-31 23:40:46 +01:00

84 lines
1.9 KiB
QML

import QtQuick 2.0
import QtQuick.Window 2.4 as QQ2W
Rectangle {
width: 1024
height: 768
color: "black"
// only show the UI on the main window
property double __uiOpacity: (isMainWindow && _application.showUI) ? 1.0 : 0.0
property bool __uiVisible: true
readonly property bool isMainWindow: (_windowNumber === 0)
Behavior on __uiOpacity {
SequentialAnimation {
ScriptAction { script: if (_application.showUI) __uiVisible = true; }
NumberAnimation { duration: 400 }
ScriptAction { script: if (!_application.showUI) __uiVisible = false; }
}
}
Image {
opacity: __uiOpacity * 0.5
source: "qrc:///images/checkerboard"
fillMode: Image.Tile
anchors.fill: parent
visible: __uiVisible
}
Repeater {
model: _application.activeCanvases
// we use a loader to only create canvases on the correct window
// by driving the 'active' property
delegate: Loader {
id: canvasLoader
sourceComponent: canvasFrame
active: modelData.windowIndex === _windowNumber
Binding {
target: canvasLoader.item
property: "canvas"
value: model.modelData
}
}
}
Component {
id: canvasFrame
CanvasFrame {
showUi: __uiVisible
}
}
VerticalTabPanel {
anchors.fill: parent
tabs: [browsePanel, configPanel, snapshotsPanel]
titles: ["Connect", "Load / Save", "Snapshots"]
visible: __uiVisible
opacity: __uiOpacity
}
Component {
id: browsePanel
BrowsePanel { }
}
Component {
id: configPanel
LoadSavePanel { }
}
Component {
id: snapshotsPanel
SnapshotsPanel { }
}
GetStarted {
visible: isMainWindow
anchors.centerIn: parent
}
}