equal
deleted
inserted
replaced
42 #include "qmediaimageviewer.h" |
42 #include "qmediaimageviewer.h" |
43 |
43 |
44 #include "qmediaobject_p.h" |
44 #include "qmediaobject_p.h" |
45 #include "qmediaimageviewerservice_p.h" |
45 #include "qmediaimageviewerservice_p.h" |
46 |
46 |
47 #include "qmediaplaylist.h" |
47 #include <qmediaplaylist.h> |
48 #include "qmediacontent.h" |
48 #include <qmediaplaylistsourcecontrol.h> |
49 #include "qmediaresource.h" |
49 #include <qmediacontent.h> |
|
50 #include <qmediaresource.h> |
50 |
51 |
51 #include <QtCore/qcoreevent.h> |
52 #include <QtCore/qcoreevent.h> |
52 #include <QtCore/qtextstream.h> |
53 #include <QtCore/qtextstream.h> |
53 #include <QtCore/qdatetime.h> |
54 #include <QtCore/qdatetime.h> |
54 |
55 |
121 playlist = 0; |
122 playlist = 0; |
122 timer.stop(); |
123 timer.stop(); |
123 |
124 |
124 if (state != QMediaImageViewer::StoppedState) |
125 if (state != QMediaImageViewer::StoppedState) |
125 emit q_func()->stateChanged(state = QMediaImageViewer::StoppedState); |
126 emit q_func()->stateChanged(state = QMediaImageViewer::StoppedState); |
|
127 |
|
128 q_func()->setMedia(QMediaContent()); |
126 } |
129 } |
127 |
130 |
128 /*! |
131 /*! |
129 \class QMediaImageViewer |
132 \class QMediaImageViewer |
130 \brief The QMediaImageViewer class provides a means of viewing image media. |
133 \brief The QMediaImageViewer class provides a means of viewing image media. |
138 |
141 |
139 \code |
142 \code |
140 viewer = new QMediaImageViewer(this); |
143 viewer = new QMediaImageViewer(this); |
141 |
144 |
142 display = new QVideoWidget; |
145 display = new QVideoWidget; |
143 display->setMediaObject(viewer); |
146 viewer->addVideoOutput(display); |
144 display->show(); |
147 display->show(); |
145 \endcode |
148 \endcode |
146 |
149 |
147 QMediaImageViewer can be paired with a QMediaPlaylist to create a slide |
150 QMediaImageViewer can be paired with a QMediaPlaylist to create a slide |
148 show of images. Constructing a QMediaPlaylist with a pointer to an |
151 show of images. Constructing a QMediaPlaylist with a pointer to an |
201 : QMediaObject(*new QMediaImageViewerPrivate, parent, new QMediaImageViewerService) |
204 : QMediaObject(*new QMediaImageViewerPrivate, parent, new QMediaImageViewerService) |
202 { |
205 { |
203 Q_D(QMediaImageViewer); |
206 Q_D(QMediaImageViewer); |
204 |
207 |
205 d->viewerControl = qobject_cast<QMediaImageViewerControl*>( |
208 d->viewerControl = qobject_cast<QMediaImageViewerControl*>( |
206 d->service->control(QMediaImageViewerControl_iid)); |
209 d->service->requestControl(QMediaImageViewerControl_iid)); |
207 |
210 |
208 connect(d->viewerControl, SIGNAL(mediaStatusChanged(QMediaImageViewer::MediaStatus)), |
211 connect(d->viewerControl, SIGNAL(mediaStatusChanged(QMediaImageViewer::MediaStatus)), |
209 this, SLOT(_q_mediaStatusChanged(QMediaImageViewer::MediaStatus))); |
212 this, SLOT(_q_mediaStatusChanged(QMediaImageViewer::MediaStatus))); |
210 } |
213 } |
211 |
214 |
264 } |
267 } |
265 |
268 |
266 void QMediaImageViewer::setMedia(const QMediaContent &media) |
269 void QMediaImageViewer::setMedia(const QMediaContent &media) |
267 { |
270 { |
268 Q_D(QMediaImageViewer); |
271 Q_D(QMediaImageViewer); |
|
272 |
|
273 if (d->playlist && d->playlist->currentMedia() != media) { |
|
274 disconnect(d->playlist, SIGNAL(currentMediaChanged(QMediaContent)), |
|
275 this, SLOT(_q_playlistMediaChanged(QMediaContent))); |
|
276 disconnect(d->playlist, SIGNAL(destroyed()), this, SLOT(_q_playlistDestroyed())); |
|
277 |
|
278 d->playlist = 0; |
|
279 } |
269 |
280 |
270 d->media = media; |
281 d->media = media; |
271 |
282 |
272 if (d->timer.isActive()) { |
283 if (d->timer.isActive()) { |
273 d->pauseTime = 0; |
284 d->pauseTime = 0; |
282 d->viewerControl->showMedia(d->media); |
293 d->viewerControl->showMedia(d->media); |
283 |
294 |
284 emit mediaChanged(d->media); |
295 emit mediaChanged(d->media); |
285 } |
296 } |
286 |
297 |
|
298 void QMediaImageViewer::setPlaylist(QMediaPlaylist *playlist) |
|
299 { |
|
300 Q_D(QMediaImageViewer); |
|
301 |
|
302 if (d->playlist) { |
|
303 disconnect(d->playlist, SIGNAL(currentMediaChanged(QMediaContent)), |
|
304 this, SLOT(_q_playlistMediaChanged(QMediaContent))); |
|
305 disconnect(d->playlist, SIGNAL(destroyed()), this, SLOT(_q_playlistDestroyed())); |
|
306 } |
|
307 |
|
308 d->playlist = playlist; |
|
309 |
|
310 if (d->playlist) { |
|
311 connect(d->playlist, SIGNAL(currentMediaChanged(QMediaContent)), |
|
312 this, SLOT(_q_playlistMediaChanged(QMediaContent))); |
|
313 connect(d->playlist, SIGNAL(destroyed()), this, SLOT(_q_playlistDestroyed())); |
|
314 |
|
315 setMedia(d->playlist->currentMedia()); |
|
316 } else { |
|
317 setMedia(QMediaContent()); |
|
318 } |
|
319 } |
|
320 |
287 /*! |
321 /*! |
288 \fn QMediaImageViewer::mediaChanged(const QMediaContent &media) |
322 \fn QMediaImageViewer::mediaChanged(const QMediaContent &media) |
289 |
323 |
290 Signals that the \a media an image viewer is presenting has changed. |
324 Signals that the \a media an image viewer is presenting has changed. |
291 */ |
325 */ |
347 */ |
381 */ |
348 |
382 |
349 /*! |
383 /*! |
350 \internal |
384 \internal |
351 */ |
385 */ |
352 void QMediaImageViewer::bind(QObject *object) |
386 bool QMediaImageViewer::bind(QObject *object) |
353 { |
387 { |
354 Q_D(QMediaImageViewer); |
388 return QMediaObject::bind(object); |
355 |
|
356 if (QMediaPlaylist *playlist = qobject_cast<QMediaPlaylist *>(object)) { |
|
357 if (d->playlist) { |
|
358 qWarning("QMediaImageViewer::bind(): already bound to a playlist, detaching the current one"); |
|
359 d->playlist->setMediaObject(0); |
|
360 } |
|
361 d->playlist = playlist; |
|
362 |
|
363 connect(d->playlist, SIGNAL(currentMediaChanged(QMediaContent)), |
|
364 this, SLOT(_q_playlistMediaChanged(QMediaContent))); |
|
365 connect(d->playlist, SIGNAL(destroyed()), this, SLOT(_q_playlistDestroyed())); |
|
366 } |
|
367 } |
389 } |
368 |
390 |
369 /*! |
391 /*! |
370 \internal |
392 \internal |
371 */ |
393 */ |
372 void QMediaImageViewer::unbind(QObject *object) |
394 void QMediaImageViewer::unbind(QObject *object) |
373 { |
395 { |
374 Q_D(QMediaImageViewer); |
396 QMediaObject::unbind(object); |
375 |
|
376 if (object == d->playlist) { |
|
377 disconnect(d->playlist, SIGNAL(currentMediaChanged(QMediaContent)), |
|
378 this, SLOT(_q_playlistMediaChanged(QMediaContent))); |
|
379 disconnect(d->playlist, SIGNAL(destroyed()), this, SLOT(_q_playlistDestroyed())); |
|
380 |
|
381 d->playlist = 0; |
|
382 setMedia(QMediaContent()); |
|
383 } |
|
384 } |
397 } |
385 |
398 |
386 /*! |
399 /*! |
387 Starts a slide show. |
400 Starts a slide show. |
388 |
401 |