summaryrefslogtreecommitdiffstats
path: root/examples/multimediawidgets/player/player.cpp
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@theqtcompany.com>2016-03-01 14:58:18 +0100
committerFriedemann Kleint <Friedemann.Kleint@theqtcompany.com>2016-03-01 14:59:17 +0000
commit787211c1d2082874ea07be4c5987032221ee48fe (patch)
tree158e1fa111b47ca8c415a4e5b59ce15ac8be6f4c /examples/multimediawidgets/player/player.cpp
parent1816f89b6fc1f62ea2b97fabf43963b3312a7c08 (diff)
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/multimediawidgets/player/player.cpp')
-rw-r--r--examples/multimediawidgets/player/player.cpp53
1 files changed, 31 insertions, 22 deletions
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);
}
}