summaryrefslogtreecommitdiffstats
path: root/examples/multimediawidgets/player/player.cpp
diff options
context:
space:
mode:
authorDoris Verria <doris.verria@qt.io>2021-02-15 10:28:53 +0100
committerLars Knoll <lars.knoll@qt.io>2021-03-02 14:50:16 +0000
commit4a6b7816b1f11e00063ee6080141be4d77bca9ac (patch)
treef73ed511fa44773e27c10a47b8517775be4133df /examples/multimediawidgets/player/player.cpp
parent2499b994a77c12a4cd55fd79c83708d18f3d896d (diff)
Show metadata for audio/video files in player example
Change-Id: I10748df06e9866c3121015c657b579aa27ac4450 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Diffstat (limited to 'examples/multimediawidgets/player/player.cpp')
-rw-r--r--examples/multimediawidgets/player/player.cpp53
1 files changed, 50 insertions, 3 deletions
diff --git a/examples/multimediawidgets/player/player.cpp b/examples/multimediawidgets/player/player.cpp
index ed04ff75f..60745ffe9 100644
--- a/examples/multimediawidgets/player/player.cpp
+++ b/examples/multimediawidgets/player/player.cpp
@@ -112,6 +112,26 @@ Player::Player(QWidget *parent)
histogramLayout->addWidget(m_videoHistogram, 1);
histogramLayout->addWidget(m_audioHistogram, 2);
+ QLabel *metaDataLabel = new QLabel(tr("Metadata for file:"));
+ QGridLayout *metaDataLayout = new QGridLayout;
+ int key = QMediaMetaData::Title;
+ for (int i = 0; i < 9; i++) {
+ for (int j = 0; j < 6; j+=2) {
+ m_metaDataLabels[key] = new QLabel(QMediaMetaData::metaDataKeyToString
+ (static_cast<QMediaMetaData::Key>(key)));
+ if (key == QMediaMetaData::ThumbnailImage
+ || key == QMediaMetaData::CoverArtImage)
+ m_metaDataFields[key] = new QLabel;
+ else
+ m_metaDataFields[key] = new QLineEdit;
+ m_metaDataLabels[key]->setDisabled(true);
+ m_metaDataFields[key]->setDisabled(true);
+ metaDataLayout->addWidget(m_metaDataLabels[key], i, j);
+ metaDataLayout->addWidget(m_metaDataFields[key], i, j+1);
+ key++;
+ }
+ }
+
// ### replace by a monitoring outputs once we have them
// m_videoProbe = new QVideoProbe(this);
// connect(m_videoProbe, &QVideoProbe::videoFrameProbed, m_videoHistogram, &HistogramWidget::processFrame);
@@ -179,6 +199,8 @@ Player::Player(QWidget *parent)
layout->addLayout(hLayout);
layout->addLayout(controlLayout);
layout->addLayout(histogramLayout);
+ layout->addWidget(metaDataLabel);
+ layout->addLayout(metaDataLayout);
#if defined(Q_OS_QNX)
// On QNX, the main window doesn't have a title bar (or any other decorations).
// Create a status bar for the status information instead.
@@ -269,9 +291,33 @@ void Player::metaDataChanged()
.arg(metaData.value(QMediaMetaData::AlbumArtist).toString())
.arg(metaData.value(QMediaMetaData::Title).toString()));
- if (m_coverLabel) {
- QImage cover = metaData.value(QMediaMetaData::CoverArtImage).value<QImage>();
- m_coverLabel->setPixmap(QPixmap::fromImage(cover));
+ for (int i = 0; i < QMediaMetaData::NumMetaData; i++) {
+ if (QLineEdit* field = qobject_cast<QLineEdit*>(m_metaDataFields[i]))
+ field->clear();
+ else if (QLabel* label = qobject_cast<QLabel*>(m_metaDataFields[i]))
+ label->clear();
+ m_metaDataFields[i]->setDisabled(true);
+ m_metaDataLabels[i]->setDisabled(true);
+ }
+
+ for (auto &key : metaData.keys()) {
+ int i = int(key);
+ if (key == QMediaMetaData::CoverArtImage) {
+ if (QLabel *cover = qobject_cast<QLabel*>(m_metaDataFields[key])) {
+ QImage coverImage = metaData.value(QMediaMetaData::CoverArtImage).value<QImage>();
+ cover->setPixmap(QPixmap::fromImage(coverImage));
+ }
+ }
+ else if (key == QMediaMetaData::ThumbnailImage) {
+ if (QLabel *thumbnail = qobject_cast<QLabel*>(m_metaDataFields[key])) {
+ QImage thumbnailImage = metaData.value(QMediaMetaData::CoverArtImage).value<QImage>();
+ thumbnail->setPixmap(QPixmap::fromImage(thumbnailImage));
+ }
+ }
+ else if (QLineEdit *field = qobject_cast<QLineEdit*>(m_metaDataFields[key]))
+ field->setText(QString("%1").arg(metaData.value(key).toString()));
+ m_metaDataFields[i]->setDisabled(false);
+ m_metaDataLabels[i]->setDisabled(false);
}
}
@@ -487,3 +533,4 @@ void Player::clearHistogram()
QMetaObject::invokeMethod(m_videoHistogram, "processFrame", Qt::QueuedConnection, Q_ARG(QVideoFrame, QVideoFrame()));
QMetaObject::invokeMethod(m_audioHistogram, "processBuffer", Qt::QueuedConnection, Q_ARG(QAudioBuffer, QAudioBuffer()));
}
+