--- a/qtmobility/src/multimedia/qmediaimageviewer.cpp Fri Jun 11 14:26:25 2010 +0300
+++ b/qtmobility/src/multimedia/qmediaimageviewer.cpp Wed Jun 23 19:08:38 2010 +0300
@@ -44,9 +44,10 @@
#include "qmediaobject_p.h"
#include "qmediaimageviewerservice_p.h"
-#include "qmediaplaylist.h"
-#include "qmediacontent.h"
-#include "qmediaresource.h"
+#include <qmediaplaylist.h>
+#include <qmediaplaylistsourcecontrol.h>
+#include <qmediacontent.h>
+#include <qmediaresource.h>
#include <QtCore/qcoreevent.h>
#include <QtCore/qtextstream.h>
@@ -123,6 +124,8 @@
if (state != QMediaImageViewer::StoppedState)
emit q_func()->stateChanged(state = QMediaImageViewer::StoppedState);
+
+ q_func()->setMedia(QMediaContent());
}
/*!
@@ -140,7 +143,7 @@
viewer = new QMediaImageViewer(this);
display = new QVideoWidget;
- display->setMediaObject(viewer);
+ viewer->addVideoOutput(display);
display->show();
\endcode
@@ -203,7 +206,7 @@
Q_D(QMediaImageViewer);
d->viewerControl = qobject_cast<QMediaImageViewerControl*>(
- d->service->control(QMediaImageViewerControl_iid));
+ d->service->requestControl(QMediaImageViewerControl_iid));
connect(d->viewerControl, SIGNAL(mediaStatusChanged(QMediaImageViewer::MediaStatus)),
this, SLOT(_q_mediaStatusChanged(QMediaImageViewer::MediaStatus)));
@@ -267,6 +270,14 @@
{
Q_D(QMediaImageViewer);
+ if (d->playlist && d->playlist->currentMedia() != media) {
+ disconnect(d->playlist, SIGNAL(currentMediaChanged(QMediaContent)),
+ this, SLOT(_q_playlistMediaChanged(QMediaContent)));
+ disconnect(d->playlist, SIGNAL(destroyed()), this, SLOT(_q_playlistDestroyed()));
+
+ d->playlist = 0;
+ }
+
d->media = media;
if (d->timer.isActive()) {
@@ -284,6 +295,29 @@
emit mediaChanged(d->media);
}
+void QMediaImageViewer::setPlaylist(QMediaPlaylist *playlist)
+{
+ Q_D(QMediaImageViewer);
+
+ if (d->playlist) {
+ disconnect(d->playlist, SIGNAL(currentMediaChanged(QMediaContent)),
+ this, SLOT(_q_playlistMediaChanged(QMediaContent)));
+ disconnect(d->playlist, SIGNAL(destroyed()), this, SLOT(_q_playlistDestroyed()));
+ }
+
+ d->playlist = playlist;
+
+ if (d->playlist) {
+ connect(d->playlist, SIGNAL(currentMediaChanged(QMediaContent)),
+ this, SLOT(_q_playlistMediaChanged(QMediaContent)));
+ connect(d->playlist, SIGNAL(destroyed()), this, SLOT(_q_playlistDestroyed()));
+
+ setMedia(d->playlist->currentMedia());
+ } else {
+ setMedia(QMediaContent());
+ }
+}
+
/*!
\fn QMediaImageViewer::mediaChanged(const QMediaContent &media)
@@ -349,21 +383,9 @@
/*!
\internal
*/
-void QMediaImageViewer::bind(QObject *object)
+bool QMediaImageViewer::bind(QObject *object)
{
- Q_D(QMediaImageViewer);
-
- if (QMediaPlaylist *playlist = qobject_cast<QMediaPlaylist *>(object)) {
- if (d->playlist) {
- qWarning("QMediaImageViewer::bind(): already bound to a playlist, detaching the current one");
- d->playlist->setMediaObject(0);
- }
- d->playlist = playlist;
-
- connect(d->playlist, SIGNAL(currentMediaChanged(QMediaContent)),
- this, SLOT(_q_playlistMediaChanged(QMediaContent)));
- connect(d->playlist, SIGNAL(destroyed()), this, SLOT(_q_playlistDestroyed()));
- }
+ return QMediaObject::bind(object);
}
/*!
@@ -371,16 +393,7 @@
*/
void QMediaImageViewer::unbind(QObject *object)
{
- Q_D(QMediaImageViewer);
-
- if (object == d->playlist) {
- disconnect(d->playlist, SIGNAL(currentMediaChanged(QMediaContent)),
- this, SLOT(_q_playlistMediaChanged(QMediaContent)));
- disconnect(d->playlist, SIGNAL(destroyed()), this, SLOT(_q_playlistDestroyed()));
-
- d->playlist = 0;
- setMedia(QMediaContent());
- }
+ QMediaObject::unbind(object);
}
/*!