6e465f9dbe
To support EGLFS on the RPi4 dual outputs, enable multiple windows within a single process.
84 lines
1.9 KiB
QML
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
|
|
}
|
|
|
|
|
|
}
|