diff options
Diffstat (limited to 'examples')
5 files changed, 60 insertions, 18 deletions
diff --git a/examples/multimedia/video/qmlvideofilter_opencl/main.cpp b/examples/multimedia/video/qmlvideofilter_opencl/main.cpp index df8222432..cf2fcbd7b 100644 --- a/examples/multimedia/video/qmlvideofilter_opencl/main.cpp +++ b/examples/multimedia/video/qmlvideofilter_opencl/main.cpp @@ -88,7 +88,7 @@ public: qreal factor() const { return m_factor; } void setFactor(qreal v); - QVideoFilterRunnable *createFilterRunnable() Q_DECL_OVERRIDE; + QVideoFilterRunnable *createFilterRunnable() override; signals: void factorChanged(); @@ -102,7 +102,7 @@ class CLFilterRunnable : public QVideoFilterRunnable public: CLFilterRunnable(CLFilter *filter); ~CLFilterRunnable(); - QVideoFrame run(QVideoFrame *input, const QVideoSurfaceFormat &surfaceFormat, RunFlags flags) Q_DECL_OVERRIDE; + QVideoFrame run(QVideoFrame *input, const QVideoSurfaceFormat &surfaceFormat, RunFlags flags) override; private: void releaseTextures(); @@ -423,7 +423,7 @@ class InfoFilter : public QAbstractVideoFilter Q_OBJECT public: - QVideoFilterRunnable *createFilterRunnable() Q_DECL_OVERRIDE; + QVideoFilterRunnable *createFilterRunnable() override; signals: void finished(QObject *result); @@ -436,7 +436,7 @@ class InfoFilterRunnable : public QVideoFilterRunnable { public: InfoFilterRunnable(InfoFilter *filter) : m_filter(filter) { } - QVideoFrame run(QVideoFrame *input, const QVideoSurfaceFormat &surfaceFormat, RunFlags flags) Q_DECL_OVERRIDE; + QVideoFrame run(QVideoFrame *input, const QVideoSurfaceFormat &surfaceFormat, RunFlags flags) override; private: InfoFilter *m_filter; diff --git a/examples/multimediawidgets/customvideosurface/customvideowidget/videowidget.cpp b/examples/multimediawidgets/customvideosurface/customvideowidget/videowidget.cpp index 2f5c16d5e..7ee3eb541 100644 --- a/examples/multimediawidgets/customvideosurface/customvideowidget/videowidget.cpp +++ b/examples/multimediawidgets/customvideosurface/customvideowidget/videowidget.cpp @@ -102,7 +102,7 @@ void VideoWidget::paintEvent(QPaintEvent *event) QBrush brush = palette().background(); - foreach (const QRect &rect, region.rects()) + for (const QRect &rect : region) painter.fillRect(rect, brush); } diff --git a/examples/multimediawidgets/player/main.cpp b/examples/multimediawidgets/player/main.cpp index 9e6d9358c..a20fb1c4f 100644 --- a/examples/multimediawidgets/player/main.cpp +++ b/examples/multimediawidgets/player/main.cpp @@ -63,14 +63,21 @@ int main(int argc, char *argv[]) QCoreApplication::setOrganizationName("QtProject"); QCoreApplication::setApplicationVersion(QT_VERSION_STR); QCommandLineParser parser; + QCommandLineOption customAudioRoleOption("custom-audio-role", + "Set a custom audio role for the player.", + "role"); parser.setApplicationDescription("Qt MultiMedia Player Example"); parser.addHelpOption(); parser.addVersionOption(); - parser.addPositionalArgument("url", "The URL to open."); + parser.addOption(customAudioRoleOption); + parser.addPositionalArgument("url", "The URL(s) to open."); parser.process(app); Player player; + if (parser.isSet(customAudioRoleOption)) + player.setCustomAudioRole(parser.value(customAudioRoleOption)); + if (!parser.positionalArguments().isEmpty() && player.isPlayerAvailable()) { QList<QUrl> urls; for (auto &a: parser.positionalArguments()) diff --git a/examples/multimediawidgets/player/player.cpp b/examples/multimediawidgets/player/player.cpp index 8113df70e..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); @@ -234,6 +243,11 @@ void Player::addToPlaylist(const QList<QUrl> &urls) } } +void Player::setCustomAudioRole(const QString &role) +{ + m_player->setCustomAudioRole(role); +} + void Player::durationChanged(qint64 duration) { m_duration = duration / 1000; @@ -303,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); @@ -342,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) @@ -364,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 1b30204f9..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; @@ -81,6 +82,7 @@ public: bool isPlayerAvailable() const; void addToPlaylist(const QList<QUrl> &urls); + void setCustomAudioRole(const QString &role); signals: void fullScreenChanged(bool fullScreen); @@ -122,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; |