diff options
| author | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2023-03-27 17:18:48 +0200 |
|---|---|---|
| committer | Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> | 2023-03-28 12:22:12 +0000 |
| commit | db2b8f99cd693494644418f2bc326441164c278e (patch) | |
| tree | 7be8661c032d1bc7339c63841e132b0c8c4b4ea5 /examples/multimedia/camera/metadatadialog.py | |
| parent | a3be0d51bd6b9738dc458c0f0ac901f7a71acfa6 (diff) | |
Re-port the camera example
Task-number: PYSIDE-2206
Change-Id: I0f7e66eedf92c0d00ed47d6e55acec7c1819065b
Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
(cherry picked from commit 6c3bd4a359421bc094dd4827fae4bce32bf07d63)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
Diffstat (limited to 'examples/multimedia/camera/metadatadialog.py')
| -rw-r--r-- | examples/multimedia/camera/metadatadialog.py | 86 |
1 files changed, 86 insertions, 0 deletions
diff --git a/examples/multimedia/camera/metadatadialog.py b/examples/multimedia/camera/metadatadialog.py new file mode 100644 index 000000000..97d0a36e5 --- /dev/null +++ b/examples/multimedia/camera/metadatadialog.py @@ -0,0 +1,86 @@ +# Copyright (C) 2023 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause + +from PySide6.QtMultimedia import QMediaMetaData +from PySide6.QtWidgets import (QDialog, QDialogButtonBox, QFileDialog, + QFormLayout, QHBoxLayout, QLineEdit, + QPushButton, QScrollArea, QVBoxLayout, QWidget) +from PySide6.QtCore import QDateTime, QDir, Slot + + +IMAGE_FILTER = "Image Files (*.png *.jpg *.bmp)" + + +def default_value(key): + if key == QMediaMetaData.Title: + return "Qt Camera Example" + if key == QMediaMetaData.Author: + return "The Qt Company" + if key == QMediaMetaData.Date: + return QDateTime.currentDateTime().toString() + return "" + + +class MetaDataDialog(QDialog): + + def __init__(self, parent=None): + super().__init__(parent) + + self.m_metaDataFields = [] + meta_data_layout = QFormLayout() + for i in range(0, QMediaMetaData.NumMetaData): + key = QMediaMetaData.Key(i) + label = QMediaMetaData.metaDataKeyToString(QMediaMetaData.Key(key)) + line_edit = QLineEdit(default_value(key)) + line_edit.setClearButtonEnabled(True) + self.m_metaDataFields.append(line_edit) + if key == QMediaMetaData.ThumbnailImage: + open_thumbnail = QPushButton("Open") + open_thumbnail.clicked.connect(self.open_thumbnail_image) + layout = QHBoxLayout() + layout.addWidget(line_edit) + layout.addWidget(open_thumbnail) + meta_data_layout.addRow(label, layout) + elif key == QMediaMetaData.CoverArtImage: + open_cover_art = QPushButton("Open") + open_cover_art.clicked.connect(self.open_cover_art_image) + layout = QHBoxLayout() + layout.addWidget(line_edit) + layout.addWidget(open_cover_art) + meta_data_layout.addRow(label, layout) + else: + meta_data_layout.addRow(label, line_edit) + + viewport = QWidget() + viewport.setLayout(meta_data_layout) + scroll_area = QScrollArea() + scroll_area.setWidget(viewport) + dialog_layout = QVBoxLayout(self) + dialog_layout.addWidget(scroll_area) + + button_box = QDialogButtonBox(QDialogButtonBox.Ok | QDialogButtonBox.Cancel) + dialog_layout.addWidget(button_box) + + self.setWindowTitle("Set Metadata") + self.resize(400, 300) + + button_box.accepted.connect(self.accept) + button_box.rejected.connect(self.reject) + + @Slot() + def open_thumbnail_image(self): + dir = QDir.currentPath() + file_name = QFileDialog.getOpenFileName(self, "Open Image", dir, + IMAGE_FILTER) + if file_name: + i = QMediaMetaData.ThumbnailImage.value + self.m_metaDataFields[i].setText(file_name[0]) + + @Slot() + def open_cover_art_image(self): + dir = QDir.currentPath() + file_name = QFileDialog.getOpenFileName(self, "Open Image", dir, + IMAGE_FILTER) + if file_name: + i = QMediaMetaData.CoverArtImage.value + self.m_metaDataFields[i].setText(file_name[0]) |
