From 787211c1d2082874ea07be4c5987032221ee48fe Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Tue, 1 Mar 2016 14:58:18 +0100 Subject: 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 --- examples/multimediawidgets/player/player.cpp | 53 ++++++++++++++++------------ 1 file changed, 31 insertions(+), 22 deletions(-) (limited to 'examples/multimediawidgets/player/player.cpp') 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 urls) +{ + foreach (const QUrl &url, urls) { + if (isPlaylist(url)) + playlist->load(url); + else + playlist->addMedia(url); } } -- cgit v1.2.3