From 664ce94663555968de564575e4fb667037b9896b Mon Sep 17 00:00:00 2001 From: ZGaetano Date: Wed, 6 May 2026 20:17:51 -0400 Subject: [PATCH] Upload DragonRelayView.qml --- app/gui/DragonRelayView.qml | 32 ++++++++++++++++++++++++++++++-- 1 file changed, 30 insertions(+), 2 deletions(-) diff --git a/app/gui/DragonRelayView.qml b/app/gui/DragonRelayView.qml index f9c6992..194a91a 100644 --- a/app/gui/DragonRelayView.qml +++ b/app/gui/DragonRelayView.qml @@ -37,6 +37,12 @@ Page { property int currentState: stateIdle property string statusText: qsTr("Not connected") + // Display picker state + property bool showDisplayPicker: false + property var pickerDisplays: [] + property string pickerHostIP: "" + property string pickerHostName: "" + // ── Header bar ───────────────────────────────────────────────────────── header: ToolBar { @@ -211,8 +217,15 @@ Page { Button { text: qsTr("Stream") onClicked: { - // Real call: dragonRelay.streamHost(model.hostIp, "Desktop") - console.log("stream", model.hostIp) + var displays = dragonRelay.displaysForHost(model.hostIp) + if (displays && displays.length > 1) { + root.pickerHostIP = model.hostIp + root.pickerHostName = model.hostName + root.pickerDisplays = displays + root.showDisplayPicker = true + } else { + dragonRelay.streamHost(model.hostIp, "Desktop") + } } } } @@ -243,4 +256,19 @@ Page { Item { Layout.fillHeight: true; visible: root.currentState !== root.stateConnected } } + + // ── Display Picker Modal ─────────────────────────────────────────────── + + DragonDisplayPicker { + visible: root.showDisplayPicker + anchors.fill: parent + hostIP: root.pickerHostIP + hostName: root.pickerHostName + displays: root.pickerDisplays + onDisplaySelected: function(idx) { + root.showDisplayPicker = false + dragonRelay.streamHostDisplay(root.pickerHostIP, idx) + } + onCancelled: { root.showDisplayPicker = false } + } }