diff options
Diffstat (limited to 'examples/multimedia/video/recorder/SettingsMetaData.qml')
-rw-r--r-- | examples/multimedia/video/recorder/SettingsMetaData.qml | 145 |
1 files changed, 145 insertions, 0 deletions
diff --git a/examples/multimedia/video/recorder/SettingsMetaData.qml b/examples/multimedia/video/recorder/SettingsMetaData.qml new file mode 100644 index 000000000..7bfc2255d --- /dev/null +++ b/examples/multimedia/video/recorder/SettingsMetaData.qml @@ -0,0 +1,145 @@ +// Copyright (C) 2021 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause + +import QtQuick +import QtQuick.Layouts +import QtQuick.Controls +import QtMultimedia + +pragma ComponentBehavior: Bound + +ColumnLayout { + id: root + required property MediaRecorder recorder + + Text { + text: "Metadata settings" + color: palette.text + } + + ListModel { id: metaDataModel } + + Connections { + target: root.recorder + function onMetaDataChanged() { + metaDataModel.clear() + for (var key of root.recorder.metaData.keys()) { + if (recorder.metaData.stringValue(key)) + metaDataModel.append( + { text: recorder.metaData.metaDataKeyToString(key) + , value: key }) + } + } + } + + Row { + id: metaDataAdd + spacing: Style.intraSpacing + ComboBox { + id: metaDataType + width: Style.widthMedium + height: Style.height + font.pointSize: Style.fontSize + model: ListModel { + ListElement { text: "Title"; value: MediaMetaData.Title } + ListElement { text: "Author"; value: MediaMetaData.Author } + ListElement { text: "Comment"; value: MediaMetaData.Comment } + ListElement { text: "Description"; value: MediaMetaData.Description } + ListElement { text: "Genre"; value: MediaMetaData.Genre } + ListElement { text: "Publisher"; value: MediaMetaData.Publisher } + ListElement { text: "Copyright"; value: MediaMetaData.Copyright } + ListElement { text: "Date"; value: MediaMetaData.Date } + ListElement { text: "Url"; value: MediaMetaData.Url } + ListElement { text: "MediaType"; value: MediaMetaData.MediaType } + ListElement { text: "AlbumTitle"; value: MediaMetaData.AlbumTitle } + ListElement { text: "AlbumArtist"; value: MediaMetaData.AlbumArtist } + ListElement { text: "ContributingArtist"; value: MediaMetaData.ContributingArtist } + ListElement { text: "Composer"; value: MediaMetaData.Composer } + ListElement { text: "LeadPerformer"; value: MediaMetaData.LeadPerformer } + } + textRole: "text" + valueRole: "value" + background: StyleRectangle { anchors.fill: parent; width: metaDataType.width } + } + Item { + width: Style.widthMedium + height: Style.height + StyleRectangle { anchors.fill: parent } + TextInput { + id: textInput + anchors.fill: parent + anchors.bottom: parent.bottom + anchors.margins: 4 + font.pointSize: Style.fontSize + clip: true + onAccepted: { + root.recorder.metaData.insert(metaDataType.currentValue, text) + recorder.metaDataChanged() + text = "" + textInput.deselect() + } + } + } + Button { + width: Style.widthShort + height: Style.height + text: "add" + font.pointSize: Style.fontSize + + background: StyleRectangle { anchors.fill: parent } + onClicked: textInput.accepted() + } + } + + ListView { + id: listView + Layout.fillHeight: true + Layout.minimumWidth: metaDataAdd.width + spacing: Style.intraSpacing + clip: true + model: metaDataModel + + delegate: Row { + id: r + height: Style.height + spacing: Style.intraSpacing + + required property string text + required property string value + + Text { + width: Style.widthShort + height: Style.height + text: r.text + font.pointSize: Style.fontSize + + horizontalAlignment: Text.AlignRight + verticalAlignment: Text.AlignVCenter + } + Item { + width: Style.widthMedium + height: Style.height + + StyleRectangle { anchors.fill: parent } + TextInput { + anchors.fill: parent + anchors.margins: 4 + anchors.bottom: parent.bottom + font.pointSize: Style.fontSize + clip: true + text: root.recorder.metaData.stringValue(r.value) + onAccepted: root.recorder.metaData.insert(r.value, text) + + } + } + Button { + width: Style.widthShort + height: Style.height + text: "del" + font.pointSize: Style.fontSize + background: StyleRectangle { anchors.fill: parent } + onClicked: { root.recorder.metaData.remove(r.value); recorder.metaDataChanged() } + } + } + } +} |