summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--examples/multimediawidgets/videographicsitem/main.cpp21
-rw-r--r--examples/multimediawidgets/videographicsitem/videoplayer.cpp58
-rw-r--r--examples/multimediawidgets/videographicsitem/videoplayer.h5
3 files changed, 62 insertions, 22 deletions
diff --git a/examples/multimediawidgets/videographicsitem/main.cpp b/examples/multimediawidgets/videographicsitem/main.cpp
index 25ac7af06..d5fcdb2d8 100644
--- a/examples/multimediawidgets/videographicsitem/main.cpp
+++ b/examples/multimediawidgets/videographicsitem/main.cpp
@@ -41,12 +41,33 @@
#include "videoplayer.h"
#include <QApplication>
+#include <QCommandLineParser>
+#include <QCommandLineOption>
+#include <QDir>
int main(int argc, char **argv)
{
QApplication app(argc, argv);
+ QCoreApplication::setApplicationName("Player Example");
+ QCoreApplication::setOrganizationName("QtProject");
+ QCoreApplication::setApplicationVersion(QT_VERSION_STR);
+ QCommandLineParser parser;
+ parser.setApplicationDescription("Qt MultiMedia Player QGraphicsView Example");
+ parser.addHelpOption();
+ parser.addVersionOption();
+ parser.addPositionalArgument("url", "The URL to open.");
+ parser.process(app);
+
VideoPlayer player;
+
+ if (!parser.positionalArguments().isEmpty() && player.isPlayerAvailable()) {
+ const QUrl url =
+ QUrl::fromUserInput(parser.positionalArguments().constFirst(),
+ QDir::currentPath(), QUrl::AssumeLocalFile);
+ player.load(url);
+ }
+
player.show();
return app.exec();
diff --git a/examples/multimediawidgets/videographicsitem/videoplayer.cpp b/examples/multimediawidgets/videographicsitem/videoplayer.cpp
index fcfe38b26..7f5c4f0bb 100644
--- a/examples/multimediawidgets/videographicsitem/videoplayer.cpp
+++ b/examples/multimediawidgets/videographicsitem/videoplayer.cpp
@@ -51,8 +51,9 @@ VideoPlayer::VideoPlayer(QWidget *parent)
, playButton(0)
, positionSlider(0)
{
+ const QRect screenGeometry = QApplication::desktop()->screenGeometry(this);
videoItem = new QGraphicsVideoItem;
- videoItem->setSize(QSizeF(640, 480));
+ videoItem->setSize(QSizeF(screenGeometry.width() / 3, screenGeometry.height() / 2));
QGraphicsScene *scene = new QGraphicsScene(this);
QGraphicsView *graphicsView = new QGraphicsView(scene);
@@ -60,27 +61,27 @@ VideoPlayer::VideoPlayer(QWidget *parent)
scene->addItem(videoItem);
QSlider *rotateSlider = new QSlider(Qt::Horizontal);
+ rotateSlider->setToolTip(tr("Rotate Video"));
rotateSlider->setRange(-180, 180);
rotateSlider->setValue(0);
- connect(rotateSlider, SIGNAL(valueChanged(int)),
- this, SLOT(rotateVideo(int)));
+ connect(rotateSlider, &QAbstractSlider::valueChanged,
+ this, &VideoPlayer::rotateVideo);
QAbstractButton *openButton = new QPushButton(tr("Open..."));
- connect(openButton, SIGNAL(clicked()), this, SLOT(openFile()));
+ connect(openButton, &QAbstractButton::clicked, this, &VideoPlayer::openFile);
playButton = new QPushButton;
playButton->setEnabled(false);
playButton->setIcon(style()->standardIcon(QStyle::SP_MediaPlay));
- connect(playButton, SIGNAL(clicked()),
- this, SLOT(play()));
+ connect(playButton, &QAbstractButton::clicked, this, &VideoPlayer::play);
positionSlider = new QSlider(Qt::Horizontal);
positionSlider->setRange(0, 0);
- connect(positionSlider, SIGNAL(sliderMoved(int)),
- this, SLOT(setPosition(int)));
+ connect(positionSlider, &QAbstractSlider::sliderMoved,
+ this, &VideoPlayer::setPosition);
QBoxLayout *controlLayout = new QHBoxLayout;
controlLayout->setMargin(0);
@@ -88,34 +89,49 @@ VideoPlayer::VideoPlayer(QWidget *parent)
controlLayout->addWidget(playButton);
controlLayout->addWidget(positionSlider);
- QBoxLayout *layout = new QVBoxLayout;
+ QBoxLayout *layout = new QVBoxLayout(this);
layout->addWidget(graphicsView);
layout->addWidget(rotateSlider);
layout->addLayout(controlLayout);
- setLayout(layout);
-
mediaPlayer.setVideoOutput(videoItem);
- connect(&mediaPlayer, SIGNAL(stateChanged(QMediaPlayer::State)),
- this, SLOT(mediaStateChanged(QMediaPlayer::State)));
- connect(&mediaPlayer, SIGNAL(positionChanged(qint64)), this, SLOT(positionChanged(qint64)));
- connect(&mediaPlayer, SIGNAL(durationChanged(qint64)), this, SLOT(durationChanged(qint64)));
+ connect(&mediaPlayer, &QMediaPlayer::stateChanged,
+ this, &VideoPlayer::mediaStateChanged);
+ connect(&mediaPlayer, &QMediaPlayer::positionChanged, this, &VideoPlayer::positionChanged);
+ connect(&mediaPlayer, &QMediaPlayer::durationChanged, this, &VideoPlayer::durationChanged);
}
VideoPlayer::~VideoPlayer()
{
}
+QSize VideoPlayer::sizeHint() const
+{
+ return (videoItem->size() * qreal(3) / qreal(2)).toSize();
+}
-void VideoPlayer::openFile()
+bool VideoPlayer::isPlayerAvailable() const
{
- QString fileName = QFileDialog::getOpenFileName(this, tr("Open Movie"),QDir::homePath());
+ return mediaPlayer.isAvailable();
+}
- if (!fileName.isEmpty()) {
- mediaPlayer.setMedia(QUrl::fromLocalFile(fileName));
+void VideoPlayer::openFile()
+{
+ QFileDialog fileDialog(this);
+ fileDialog.setAcceptMode(QFileDialog::AcceptOpen);
+ fileDialog.setWindowTitle(tr("Open Movie"));
+ const QStringList supportedMimeTypes = mediaPlayer.supportedMimeTypes();
+ if (!supportedMimeTypes.isEmpty())
+ fileDialog.setMimeTypeFilters(supportedMimeTypes);
+ fileDialog.setDirectory(QStandardPaths::standardLocations(QStandardPaths::MoviesLocation).value(0, QDir::homePath()));
+ if (fileDialog.exec() == QDialog::Accepted)
+ load(fileDialog.selectedUrls().constFirst());
+}
- playButton->setEnabled(true);
- }
+void VideoPlayer::load(const QUrl &url)
+{
+ mediaPlayer.setMedia(url);
+ playButton->setEnabled(true);
}
void VideoPlayer::play()
diff --git a/examples/multimediawidgets/videographicsitem/videoplayer.h b/examples/multimediawidgets/videographicsitem/videoplayer.h
index 9c67e1c7e..914c59499 100644
--- a/examples/multimediawidgets/videographicsitem/videoplayer.h
+++ b/examples/multimediawidgets/videographicsitem/videoplayer.h
@@ -59,7 +59,10 @@ public:
VideoPlayer(QWidget *parent = 0);
~VideoPlayer();
- QSize sizeHint() const { return QSize(800, 600); }
+ void load(const QUrl &url);
+ bool isPlayerAvailable() const;
+
+ QSize sizeHint() const Q_DECL_OVERRIDE;
public slots:
void openFile();