diff options
author | Liang Qi <liang.qi@theqtcompany.com> | 2016-03-07 21:17:53 +0100 |
---|---|---|
committer | Liang Qi <liang.qi@theqtcompany.com> | 2016-03-07 21:17:53 +0100 |
commit | 06a9505327f1c8aee70d701037b2cdcc4fc143f6 (patch) | |
tree | 242cec89d49078e912343afa8fc1ff92c7a8c2db /examples | |
parent | 9500aadc219481d89d32e5c2a2de10b0740c50de (diff) | |
parent | 3198bf4944edd8f25996c2b4c4516f606165af59 (diff) | |
download | qtmultimedia-06a9505327f1c8aee70d701037b2cdcc4fc143f6.tar.gz |
Merge remote-tracking branch 'origin/5.6' into 5.7
Conflicts:
src/plugins/avfoundation/mediaplayer/mediaplayer.pro
tests/auto/unit/qmediaserviceprovider/mockserviceplugin1/mockserviceplugin1.pro
tests/auto/unit/qmediaserviceprovider/mockserviceplugin2/mockserviceplugin2.pro
tests/auto/unit/qmediaserviceprovider/mockserviceplugin3/mockserviceplugin3.pro
tests/auto/unit/qmediaserviceprovider/mockserviceplugin4/mockserviceplugin4.pro
tests/auto/unit/qmediaserviceprovider/mockserviceplugin5/mockserviceplugin5.pro
Change-Id: I5742596230dc510ba2a09eba624429bb67179194
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); |