File: FlashControl.qml

package info (click to toggle)
qt6-multimedia 6.10.2-2
  • links: PTS, VCS
  • area: main
  • in suites: experimental
  • size: 43,900 kB
  • sloc: cpp: 186,273; ansic: 78,309; java: 2,870; python: 262; xml: 193; sh: 136; makefile: 30
file content (68 lines) | stat: -rw-r--r-- 2,078 bytes parent folder | download
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
// Copyright (C) 2023 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause

import QtQuick
import QtQuick.Controls
import QtMultimedia

Item {
    id: topItem

    height: column.height

    //! [0]
    required property Camera camera

    property bool mIsFlashSupported: camera.isFlashModeSupported(Camera.FlashOn)
    property bool mIsTorchSupported: camera.isTorchModeSupported(Camera.TorchOn)
    //! [0]

    // Because the function 'camera.isFlashModeSupported()' is not a reactive binding
    // we must explicitly check if the flash mode is still supported when we change
    // the camera-device.
    Connections {
        target: camera
        function onCameraDeviceChanged() {
            topItem.mIsFlashSupported = camera.isFlashModeSupported(Camera.FlashOn)
            topItem.mIsTorchSupported = camera.isTorchModeSupported(Camera.TorchOn)
        }
    }

    Column {
        id: column

        //! [1]
        Switch {
            id: flashModeControl
            visible: topItem.mIsFlashSupported
            checked: topItem.camera.flashMode === Camera.FlashOn
            opacity: checked ? 0.75 : 0.25
            text: "Flash"

            contentItem: Text {
                text: flashModeControl.text
                color: "white"
                leftPadding: flashModeControl.indicator.width + flashModeControl.spacing
            }

            onClicked: topItem.camera.flashMode = checked ? Camera.FlashOn : Camera.FlashOff
        }
        //! [1]

        Switch {
            id: torchModeControl
            visible: topItem.mIsTorchSupported
            checked: topItem.camera.torchMode === Camera.FlashOn
            opacity: checked ? 0.75 : 0.25
            text: "Torch"

            contentItem: Text {
                text: torchModeControl.text
                color: "white"
                leftPadding: torchModeControl.indicator.width + torchModeControl.spacing
            }

            onClicked: topItem.camera.torchMode = checked ? Camera.TorchOn : Camera.TorchOff
        }
    }
}