qtmobility/examples/player/player.cpp
changeset 14 6fbed849b4f4
parent 11 06b8e2af4411
child 15 1f895d8a5b2b
--- a/qtmobility/examples/player/player.cpp	Fri Jun 11 14:26:25 2010 +0300
+++ b/qtmobility/examples/player/player.cpp	Wed Jun 23 19:08:38 2010 +0300
@@ -71,15 +71,17 @@
     , toggleAspectRatio(0)
     , showYoutubeDialog(0)
     , youtubeDialog(0)
+#else
     , audioEndpointSelector(0)
-#else
     , colorDialog(0)
 #endif
 {
+//! [create-objs]
     player = new QMediaPlayer(this);
-    // owerd by PlaylistModel
+    // owned by PlaylistModel
     playlist = new QMediaPlaylist();
-    playlist->setMediaObject(player);
+    player->setPlaylist(playlist);
+//! [create-objs]
 
     connect(player, SIGNAL(durationChanged(qint64)), SLOT(durationChanged(qint64)));
     connect(player, SIGNAL(positionChanged(qint64)), SLOT(positionChanged(qint64)));
@@ -90,11 +92,13 @@
     connect(player, SIGNAL(bufferStatusChanged(int)), this, SLOT(bufferingProgress(int)));
     connect(player, SIGNAL(error(QMediaPlayer::Error)), this, SLOT(displayErrorMessage()));
 
+//! [2]
     videoWidget = new VideoWidget(this);
-    videoWidget->setMediaObject(player);
+    player->setVideoOutput(videoWidget);
 
     playlistModel = new PlaylistModel(this);
     playlistModel->setPlaylist(playlist);
+//! [2]
 
     playlistView = new QListView(this);
     playlistView->setModel(playlistModel);
@@ -107,8 +111,19 @@
 
     connect(slider, SIGNAL(sliderMoved(int)), this, SLOT(seek(int)));
     
-    audioEndpointSelector = qobject_cast<QAudioEndpointSelector*>(player->service()->control(QAudioEndpointSelector_iid));
-    connect(audioEndpointSelector, SIGNAL(activeEndpointChanged(const QString&)), this, SLOT(handleAudioOutputChangedSignal(const QString&)));
+    QMediaService *service = player->service();
+    if (service) {
+        QMediaControl *control = service->requestControl(QAudioEndpointSelector_iid);
+        if (control) {
+            audioEndpointSelector = qobject_cast<QAudioEndpointSelector*>(control);
+            if (audioEndpointSelector) {
+                connect(audioEndpointSelector, SIGNAL(activeEndpointChanged(const QString&)),
+                        this, SLOT(handleAudioOutputChangedSignal(const QString&)));
+            } else {
+                service->releaseControl(control);
+            }
+        }
+    }
 
 #ifndef Q_OS_SYMBIAN
     QPushButton *openButton = new QPushButton(tr("Open"), this);
@@ -226,13 +241,22 @@
 
     metaDataChanged();
 
-    QStringList fileNames = qApp->arguments();
-    fileNames.removeAt(0);
-    foreach (QString const &fileName, fileNames) {
-        if (fileName.startsWith(QLatin1String("http://")))
-            playlist->addMedia(QUrl(fileName));
-        else if (QFileInfo(fileName).exists())
-            playlist->addMedia(QUrl::fromLocalFile(fileName));
+    QStringList arguments = qApp->arguments();
+    arguments.removeAt(0);
+    foreach (QString const &argument, arguments) {
+        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);
+            }
+        }
     }
 }
 
@@ -266,15 +290,15 @@
         setTrackInfo(QString("(%1/%2) %3 - %4")
                 .arg(playlist->currentIndex()+1)
                 .arg(playlist->mediaCount())
-                .arg(player->metaData(QtMediaServices::AlbumArtist).toString())
-                .arg(player->metaData(QtMediaServices::Title).toString()));
+                .arg(player->metaData(QtMultimedia::AlbumArtist).toString())
+                .arg(player->metaData(QtMultimedia::Title).toString()));
 
         if (!player->isVideoAvailable()) {
-            QUrl uri = player->metaData(QtMediaServices::CoverArtUrlLarge).value<QUrl>();
+            QUrl uri = player->metaData(QtMultimedia::CoverArtUrlLarge).value<QUrl>();
             QPixmap pixmap = NULL;
 
-            if (uri.isEmpty()) {
-                QVariant picture = player->extendedMetaData("attachedpicture");
+            if (uri.isEmpty()) {                
+                QVariant picture = player->metaData(QtMultimedia::CoverArtImage);
                 // Load picture from metadata
                 if (!picture.isNull() && picture.canConvert<QByteArray>())
                     pixmap.loadFromData(picture.value<QByteArray>());
@@ -300,20 +324,22 @@
                 // Load picture from file pointed by uri
             } else
                 pixmap.load(uri.toString());
-
+            
             coverLabel->setPixmap((!pixmap.isNull())?pixmap:QPixmap());
+            coverLabel->setAlignment(Qt::AlignCenter);            
+            coverLabel->setScaledContents(true);
             }
     hideOrShowCoverArt();
     }
 #else
-    //qDebug() << "update metadata" << player->metaData(QtMediaServices::Title).toString();
+    //qDebug() << "update metadata" << player->metaData(QtMultimedia::Title).toString();
     if (player->isMetaDataAvailable()) {
         setTrackInfo(QString("%1 - %2")
-                .arg(player->metaData(QtMediaServices::AlbumArtist).toString())
-                .arg(player->metaData(QtMediaServices::Title).toString()));
+                .arg(player->metaData(QtMultimedia::AlbumArtist).toString())
+                .arg(player->metaData(QtMultimedia::Title).toString()));
 
         if (coverLabel) {
-            QUrl url = player->metaData(QtMediaServices::CoverArtUrlLarge).value<QUrl>();
+            QUrl url = player->metaData(QtMultimedia::CoverArtUrlLarge).value<QUrl>();
 
             coverLabel->setPixmap(!url.isEmpty()
                     ? QPixmap(url.toString())