summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTim Blechmann <tim@klingt.org>2024-04-25 12:54:50 +0800
committerQt Cherry-pick Bot <cherrypick_bot@qt-project.org>2024-04-26 14:27:25 +0000
commit509a1a90f1e46d2bd1d899ea844a9475eafd7952 (patch)
tree8ae1e6bdc3cbef2ffd840588f9b212a005a1da0c
parentbd08b0d897706ad5227d9c8d3c9fb3d8ad20765e (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.cpp84
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);
}