diff options
author | Friedemann Kleint <Friedemann.Kleint@theqtcompany.com> | 2016-03-01 14:58:18 +0100 |
---|---|---|
committer | Friedemann Kleint <Friedemann.Kleint@theqtcompany.com> | 2016-03-01 14:59:17 +0000 |
commit | 787211c1d2082874ea07be4c5987032221ee48fe (patch) | |
tree | 158e1fa111b47ca8c415a4e5b59ce15ac8be6f4c /examples | |
parent | 1816f89b6fc1f62ea2b97fabf43963b3312a7c08 (diff) | |
download | qtmultimedia-787211c1d2082874ea07be4c5987032221ee48fe.tar.gz |
Polish the QtWidgets/Player example.
Point the file dialog to the Movies folder.
Add command proper command line handling.
Change the logic to use QUrl everywhere.
Change-Id: I1e54e600187153f52a55e3a381a24e4f2eeda3ab
Reviewed-by: Yoann Lopes <yoann.lopes@theqtcompany.com>
Diffstat (limited to 'examples')
-rw-r--r-- | examples/multimediawidgets/player/main.cpp | 20 | ||||
-rw-r--r-- | examples/multimediawidgets/player/player.cpp | 53 | ||||
-rw-r--r-- | examples/multimediawidgets/player/player.h | 5 |
3 files changed, 55 insertions, 23 deletions
diff --git a/examples/multimediawidgets/player/main.cpp b/examples/multimediawidgets/player/main.cpp index c32cbc83e..a3dabe15d 100644 --- a/examples/multimediawidgets/player/main.cpp +++ b/examples/multimediawidgets/player/main.cpp @@ -41,13 +41,33 @@ #include "player.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 Example"); + parser.addHelpOption(); + parser.addVersionOption(); + parser.addPositionalArgument("url", "The URL to open."); + parser.process(app); + Player player; + if (!parser.positionalArguments().isEmpty() && player.isPlayerAvailable()) { + QList<QUrl> urls; + foreach (const QString &a, parser.positionalArguments()) + urls.append(QUrl::fromUserInput(a, QDir::currentPath(), QUrl::AssumeLocalFile)); + player.addToPlaylist(urls); + } + #if defined(Q_WS_SIMULATOR) player.setAttribute(Qt::WA_LockLandscapeOrientation); player.showMaximized(); diff --git a/examples/multimediawidgets/player/player.cpp b/examples/multimediawidgets/player/player.cpp index b450bc361..e787aa269 100644 --- a/examples/multimediawidgets/player/player.cpp +++ b/examples/multimediawidgets/player/player.cpp @@ -167,7 +167,7 @@ Player::Player(QWidget *parent) setLayout(layout); - if (!player->isAvailable()) { + if (!isPlayerAvailable()) { QMessageBox::warning(this, tr("Service not available"), tr("The QMediaPlayer object does not have a valid service.\n"\ "Please check the media service plugins are installed.")); @@ -182,38 +182,47 @@ Player::Player(QWidget *parent) } metaDataChanged(); - - QStringList arguments = qApp->arguments(); - arguments.removeAt(0); - addToPlaylist(arguments); } Player::~Player() { } +bool Player::isPlayerAvailable() const +{ + return player->isAvailable(); +} + void Player::open() { - QStringList fileNames = QFileDialog::getOpenFileNames(this, tr("Open Files")); - addToPlaylist(fileNames); + QFileDialog fileDialog(this); + fileDialog.setAcceptMode(QFileDialog::AcceptOpen); + fileDialog.setWindowTitle(tr("Open Files")); + QStringList supportedMimeTypes = player->supportedMimeTypes(); + if (!supportedMimeTypes.isEmpty()) { + supportedMimeTypes.append("audio/x-m3u"); // MP3 playlists + fileDialog.setMimeTypeFilters(supportedMimeTypes); + } + fileDialog.setDirectory(QStandardPaths::standardLocations(QStandardPaths::MoviesLocation).value(0, QDir::homePath())); + if (fileDialog.exec() == QDialog::Accepted) + addToPlaylist(fileDialog.selectedUrls()); } -void Player::addToPlaylist(const QStringList& fileNames) +static bool isPlaylist(const QUrl &url) // Check for ".m3u" playlists. { - foreach (QString const &argument, fileNames) { - QFileInfo fileInfo(argument); - if (fileInfo.exists()) { - QUrl url = QUrl::fromLocalFile(fileInfo.absoluteFilePath()); - if (fileInfo.suffix().toLower() == QLatin1String("m3u")) { - playlist->load(url); - } else - playlist->addMedia(url); - } else { - QUrl url(argument); - if (url.isValid()) { - playlist->addMedia(url); - } - } + if (!url.isLocalFile()) + return false; + const QFileInfo fileInfo(url.toLocalFile()); + return fileInfo.exists() && !fileInfo.suffix().compare(QLatin1String("m3u"), Qt::CaseInsensitive); +} + +void Player::addToPlaylist(const QList<QUrl> urls) +{ + foreach (const QUrl &url, urls) { + if (isPlaylist(url)) + playlist->load(url); + else + playlist->addMedia(url); } } diff --git a/examples/multimediawidgets/player/player.h b/examples/multimediawidgets/player/player.h index 61f3cff27..7f5d0881b 100644 --- a/examples/multimediawidgets/player/player.h +++ b/examples/multimediawidgets/player/player.h @@ -69,6 +69,10 @@ public: Player(QWidget *parent = 0); ~Player(); + bool isPlayerAvailable() const; + + void addToPlaylist(const QList<QUrl> urls); + signals: void fullScreenChanged(bool fullScreen); @@ -93,7 +97,6 @@ private slots: #ifndef PLAYER_NO_COLOROPTIONS void showColorDialog(); #endif - void addToPlaylist(const QStringList &fileNames); private: void setTrackInfo(const QString &info); |