From 950e9b472890478f0460a060ae08cc16a06ac659 Mon Sep 17 00:00:00 2001 From: James McDonnell Date: Tue, 19 Sep 2017 12:39:48 -0400 Subject: QNX 7.0.0 audio management support [ChangeLog][QNX] Added support for QNX 7.0.0 audio management. Change-Id: Ia9f1740577527126bf666627647084382e4d7ce9 Reviewed-by: Christian Stromme --- examples/multimediawidgets/player/player.cpp | 50 +++++++++++++++++++++------- examples/multimediawidgets/player/player.h | 3 ++ 2 files changed, 41 insertions(+), 12 deletions(-) (limited to 'examples/multimediawidgets') diff --git a/examples/multimediawidgets/player/player.cpp b/examples/multimediawidgets/player/player.cpp index 4d3340855..89246e65c 100644 --- a/examples/multimediawidgets/player/player.cpp +++ b/examples/multimediawidgets/player/player.cpp @@ -174,6 +174,15 @@ Player::Player(QWidget *parent) layout->addLayout(hLayout); layout->addLayout(controlLayout); layout->addLayout(histogramLayout); +#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. + m_statusLabel = new QLabel; + m_statusBar = new QStatusBar; + m_statusBar->addPermanentWidget(m_statusLabel); + m_statusBar->setSizeGripEnabled(false); // Without mouse grabbing, it doesn't work very well. + layout->addWidget(m_statusBar); +#endif setLayout(layout); @@ -308,15 +317,17 @@ void Player::statusChanged(QMediaPlayer::MediaStatus status) case QMediaPlayer::UnknownMediaStatus: case QMediaPlayer::NoMedia: case QMediaPlayer::LoadedMedia: - case QMediaPlayer::BufferingMedia: - case QMediaPlayer::BufferedMedia: setStatusInfo(QString()); break; case QMediaPlayer::LoadingMedia: setStatusInfo(tr("Loading...")); break; + case QMediaPlayer::BufferingMedia: + case QMediaPlayer::BufferedMedia: + setStatusInfo(tr("Buffering %1%").arg(m_player->bufferStatus())); + break; case QMediaPlayer::StalledMedia: - setStatusInfo(tr("Media Stalled")); + setStatusInfo(tr("Stalled %1%").arg(m_player->bufferStatus())); break; case QMediaPlayer::EndOfMedia: QApplication::alert(this); @@ -347,7 +358,10 @@ void Player::handleCursor(QMediaPlayer::MediaStatus status) void Player::bufferingProgress(int progress) { - setStatusInfo(tr("Buffering %4%").arg(progress)); + if (m_player->mediaStatus() == QMediaPlayer::StalledMedia) + setStatusInfo(tr("Stalled %1%").arg(progress)); + else + setStatusInfo(tr("Buffering %1%").arg(progress)); } void Player::videoAvailableChanged(bool available) @@ -369,19 +383,31 @@ void Player::videoAvailableChanged(bool available) void Player::setTrackInfo(const QString &info) { m_trackInfo = info; - if (!m_statusInfo.isEmpty()) - setWindowTitle(QString("%1 | %2").arg(m_trackInfo).arg(m_statusInfo)); - else - setWindowTitle(m_trackInfo); + + if (m_statusBar) { + m_statusBar->showMessage(m_trackInfo); + m_statusLabel->setText(m_statusInfo); + } else { + if (!m_statusInfo.isEmpty()) + setWindowTitle(QString("%1 | %2").arg(m_trackInfo).arg(m_statusInfo)); + else + setWindowTitle(m_trackInfo); + } } void Player::setStatusInfo(const QString &info) { m_statusInfo = info; - if (!m_statusInfo.isEmpty()) - setWindowTitle(QString("%1 | %2").arg(m_trackInfo).arg(m_statusInfo)); - else - setWindowTitle(m_trackInfo); + + if (m_statusBar) { + m_statusBar->showMessage(m_trackInfo); + m_statusLabel->setText(m_statusInfo); + } else { + if (!m_statusInfo.isEmpty()) + setWindowTitle(QString("%1 | %2").arg(m_trackInfo).arg(m_statusInfo)); + else + setWindowTitle(m_trackInfo); + } } void Player::displayErrorMessage() diff --git a/examples/multimediawidgets/player/player.h b/examples/multimediawidgets/player/player.h index a15d27bd7..3002c9811 100644 --- a/examples/multimediawidgets/player/player.h +++ b/examples/multimediawidgets/player/player.h @@ -62,6 +62,7 @@ class QMediaPlayer; class QModelIndex; class QPushButton; class QSlider; +class QStatusBar; class QVideoProbe; class QVideoWidget; class QAudioProbe; @@ -123,6 +124,8 @@ private: QPushButton *m_fullScreenButton = nullptr; QPushButton *m_colorButton = nullptr; QDialog *m_colorDialog = nullptr; + QLabel *m_statusLabel = nullptr; + QStatusBar *m_statusBar = nullptr; QLabel *m_labelHistogram = nullptr; HistogramWidget *m_videoHistogram = nullptr; -- cgit v1.2.3