summaryrefslogtreecommitdiffstats
path: root/examples/demos/mediaplayer/MediaPlayer/TracksOptions.qml
blob: a659bc9e26ce8f758419bbedbf08839b2797e92c (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
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
69
70
71
72
73
74
75
76
77
78
79
80
// Copyright (C) 2023 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause

pragma ComponentBehavior: Bound

import QtQuick
import QtQuick.Controls.Fusion
import QtMultimedia
import MediaControls
import Config

Item {
    id: root

    implicitWidth: 380
    implicitHeight: childrenRect.height

    required property int selectedTrack
    required property list<mediaMetaData> metaData
    property string headerText: ""

    function readTracks(metadataList : list<mediaMetaData>) {
        const LanguageKey = 6
        elements.clear()
        if (!metadataList || !metadataList.length)
            return

        elements.append({
            language: "No Track",
            trackNumber: -1
        })

        metadataList.forEach(function (metadata, index) {
            const language = metadata.stringValue(LanguageKey)
            const label = language ? language : "Track " + (index + 1)
            elements.append({
                language: label,
                trackNumber: index
            })
        });
    }

    ListModel { id: elements }

    ButtonGroup { id: group }

    Column {
        spacing: 16

        Label {
            id: header
            text: elements.count ? qsTr(root.headerText) : qsTr("No " + root.headerText + " present")
            font.pixelSize: 18
            font.bold: true
            color: Config.secondaryColor
        }

        Column {
            id: trackList
            spacing: 18
            Repeater {
                model: elements
                delegate: CustomRadioButton {

                    checked: trackNumber === root.selectedTrack
                    text: language

                    required property int trackNumber
                    required property string language

                    ButtonGroup.group: group

                    onClicked: root.selectedTrack = trackNumber
                }
            }
        }
    }

    onMetaDataChanged: readTracks(root.metaData)
}