summaryrefslogtreecommitdiffstats
path: root/tests/manual/qml-camera-advanced/CameraDeviceSelector.qml
blob: 025112750eac768e127f7361b9f027c12f5d28f3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
// Copyright (C) 2025 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only

import QtQuick.Controls
import QtQuick.Layouts

RowLayout {
    required property CameraHelper camera
    required property MediaDevicesHelper mediaDevices
    enabled: Object.values(mediaDevices.allCameraDevicesSoFarDict).length > 0

    Label { text: "Device" }
    ComboBox {
        implicitContentWidthPolicy: ComboBox.WidestText
        model: Object.values(mediaDevices.allCameraDevicesSoFarDict)
            .map((item) => { return {
                displayText: item.device.description + (item.connected ? "" : " (Disconnected)"),
                device: item.device } })
        valueRole: "device"
        textRole: "displayText"
        onActivated: index => {
            camera.cameraDevice = currentValue
        }
        currentIndex: model.findIndex(
            item => String(item.device.id) === String(camera.cameraDevice.id))
    }
    Button {
        text: "Default"
        onClicked: camera.cameraDevice = mediaDevices.defaultVideoInput
    }
}