diff --git a/src/app/qml/QrScannerPage.qml b/src/app/qml/QrScannerPage.qml index 1090cb912..81299f4ad 100644 --- a/src/app/qml/QrScannerPage.qml +++ b/src/app/qml/QrScannerPage.qml @@ -27,9 +27,26 @@ Kirigami.Page { } } + MediaDevices { + id: devices + } + + Rectangle { + anchors.fill: parent + + color: Kirigami.Theme.backgroundColor + visible: devices.videoInputs.length === 0 + + Kirigami.PlaceholderMessage { + text: i18nc("@info", "No Camera Connected") + anchors.centerIn: parent + } + } + VideoOutput { id: viewFinder anchors.centerIn: parent + visible: devices.videoInputs.length > 0 } Prison.VideoScanner { @@ -47,6 +64,8 @@ Kirigami.Page { } CaptureSession { + id: session + camera: Camera { id: camera } diff --git a/src/rooms/ExploreComponent.qml b/src/rooms/ExploreComponent.qml index 276cf2304..db6a62736 100644 --- a/src/rooms/ExploreComponent.qml +++ b/src/rooms/ExploreComponent.qml @@ -6,6 +6,7 @@ pragma ComponentBehavior: Bound import QtQuick import QtQuick.Controls as QQC2 import QtQuick.Layouts +import QtMultimedia import org.kde.kirigami as Kirigami @@ -25,6 +26,10 @@ RowLayout { */ signal textChanged(string newText) + MediaDevices { + id: devices + } + Kirigami.Heading { Layout.fillWidth: true visible: !root.collapsed @@ -101,6 +106,7 @@ RowLayout { QQC2.MenuItem { text: i18n("Scan a QR Code") icon.name: "view-barcode-qr" + visible: devices.videoInputs.length > 0 onTriggered: (root.Kirigami.PageStack.pageStack as Kirigami.PageRow).pushDialogLayer(Qt.createComponent("org.kde.neochat", "QrScannerPage"), { connection: root.connection }, {