flightgear/utils/fgqcanvas/qml/Window.qml
2022-10-20 20:29:11 +08:00

90 lines
2.1 KiB
QML

import QtQuick 2.0
Rectangle {
width: 1024
height: 768
color: "black"
// only show the UI on the main window
property double __uiOpacity: __shouldShowUi ? 1.0 : 0.0
property bool __uiVisible: true
readonly property bool __shouldShowUi: (isMainWindow && _application.showUI)
readonly property bool isMainWindow: (_windowNumber === 0)
Component.onCompleted: {
// synchronize insitial state of this
__uiVisible = __shouldShowUi;
}
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
}
}