diff options
author | Tim Blechmann <tim@klingt.org> | 2024-04-25 12:54:50 +0800 |
---|---|---|
committer | Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> | 2024-04-26 14:27:25 +0000 |
commit | 509a1a90f1e46d2bd1d899ea844a9475eafd7952 (patch) | |
tree | 8ae1e6bdc3cbef2ffd840588f9b212a005a1da0c | |
parent | bd08b0d897706ad5227d9c8d3c9fb3d8ad20765e (diff) |
Tests: minimal player - add test to switch output widget dynamically
Pick-to: 6.5
Change-Id: If948d85b0845247d40dcff1fac0bcaa635d09cd5
Reviewed-by: Artem Dyomin <artem.dyomin@qt.io>
(cherry picked from commit b30c39c90928cf8205478919847737a2ae60345d)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
-rw-r--r-- | tests/manual/minimal-player/minimal-player.cpp | 84 |
1 files changed, 69 insertions, 15 deletions
diff --git a/tests/manual/minimal-player/minimal-player.cpp b/tests/manual/minimal-player/minimal-player.cpp index bd75efa09..70512dff3 100644 --- a/tests/manual/minimal-player/minimal-player.cpp +++ b/tests/manual/minimal-player/minimal-player.cpp @@ -1,31 +1,85 @@ // Copyright (C) 2024 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only -#include <QApplication> - -#include <QtWidgets/QApplication> -#include <QtWidgets/QWidget> -#include <QtMultimedia/QMediaPlayer> +#include <QtCore/QTimer> +#include <QtCore/QCommandLineParser> #include <QtMultimedia/QAudioOutput> +#include <QtMultimedia/QMediaPlayer> #include <QtMultimediaWidgets/QVideoWidget> +#include <QtWidgets/QApplication> +#include <QtWidgets/QWidget> -int main(int argc, char **argv) +using namespace std::chrono_literals; +using namespace Qt::Literals; + +int mainToggleWidgets(QString filename) { - QApplication app(argc, argv); QMediaPlayer player; - QVideoWidget widget; + QVideoWidget widget1; + QVideoWidget widget2; QAudioOutput audioOutput; - player.setVideoOutput(&widget); + player.setVideoOutput(&widget1); player.setAudioOutput(&audioOutput); + player.setSource(filename); - if (QApplication::arguments().size() > 1) { - player.setSource(QApplication::arguments()[1]); - } else { + QTimer toggleOutput; + bool toggled = {}; + + toggleOutput.callOnTimeout([&] { + toggled = !toggled; + if (toggled) + player.setVideoOutput(&widget2); + else + player.setVideoOutput(&widget1); + }); + + toggleOutput.setInterval(1s); + toggleOutput.start(); + + widget1.show(); + widget2.show(); + player.play(); + return QApplication::exec(); +} + +int mainSimple(QString filename) +{ + QMediaPlayer player; + QVideoWidget widget1; + QAudioOutput audioOutput; + player.setVideoOutput(&widget1); + player.setAudioOutput(&audioOutput); + player.setSource(filename); + + widget1.show(); + player.play(); + return QApplication::exec(); +} + +int main(int argc, char **argv) +{ + QApplication app(argc, argv); + + QCommandLineParser parser; + parser.setApplicationDescription("Minimal Player"); + parser.addHelpOption(); + parser.addVersionOption(); + parser.addPositionalArgument("media", "File to play"); + + QCommandLineOption toggleWidgetsOption{ "toggle-widgets", "Toggle between widgets." }; + parser.addOption(toggleWidgetsOption); + + parser.process(app); + + if (parser.positionalArguments().isEmpty()) { qInfo() << "Please specify a video source"; return 0; } - widget.show(); - player.play(); - return QApplication::exec(); + QString filename = parser.positionalArguments()[0]; + + if (parser.isSet(toggleWidgetsOption)) + return mainToggleWidgets(filename); + + return mainSimple(filename); } |