Restructure the source code a little.
Change-Id: I995b0fb33bdda7f01bf6266c1c50a1b17eba6760 Reviewed-by: Jonas Rabbe <jonas.rabbe@nokia.com>
This commit is contained in:
committed by
Qt by Nokia
parent
6ee1977d60
commit
502d3c8eb3
769
src/multimedia/playback/qmediaplaylist.cpp
Normal file
769
src/multimedia/playback/qmediaplaylist.cpp
Normal file
@@ -0,0 +1,769 @@
|
||||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
|
||||
** All rights reserved.
|
||||
** Contact: Nokia Corporation (qt-info@nokia.com)
|
||||
**
|
||||
** This file is part of the Qt Toolkit.
|
||||
**
|
||||
** $QT_BEGIN_LICENSE:LGPL$
|
||||
** GNU Lesser General Public License Usage
|
||||
** This file may be used under the terms of the GNU Lesser General Public
|
||||
** License version 2.1 as published by the Free Software Foundation and
|
||||
** appearing in the file LICENSE.LGPL included in the packaging of this
|
||||
** file. Please review the following information to ensure the GNU Lesser
|
||||
** General Public License version 2.1 requirements will be met:
|
||||
** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
|
||||
**
|
||||
** In addition, as a special exception, Nokia gives you certain additional
|
||||
** rights. These rights are described in the Nokia Qt LGPL Exception
|
||||
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
|
||||
**
|
||||
** GNU General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU General
|
||||
** Public License version 3.0 as published by the Free Software Foundation
|
||||
** and appearing in the file LICENSE.GPL included in the packaging of this
|
||||
** file. Please review the following information to ensure the GNU General
|
||||
** Public License version 3.0 requirements will be met:
|
||||
** http://www.gnu.org/copyleft/gpl.html.
|
||||
**
|
||||
** Other Usage
|
||||
** Alternatively, this file may be used in accordance with the terms and
|
||||
** conditions contained in a signed written agreement between you and Nokia.
|
||||
**
|
||||
**
|
||||
**
|
||||
**
|
||||
**
|
||||
** $QT_END_LICENSE$
|
||||
**
|
||||
****************************************************************************/
|
||||
|
||||
#include "qmediaplaylist.h"
|
||||
#include "qmediaplaylist_p.h"
|
||||
#include "qmediaplaylistprovider.h"
|
||||
#include "qlocalmediaplaylistprovider.h"
|
||||
#include "qmediaplaylistioplugin.h"
|
||||
#include "qmediaservice.h"
|
||||
#include "qmediaplaylistcontrol.h"
|
||||
#include "qmediaplayercontrol.h"
|
||||
|
||||
#include <QtCore/qlist.h>
|
||||
#include <QtCore/qfile.h>
|
||||
#include <QtCore/qurl.h>
|
||||
#include <QtCore/qcoreevent.h>
|
||||
#include <QtCore/qcoreapplication.h>
|
||||
|
||||
#include "qmediapluginloader_p.h"
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
||||
Q_GLOBAL_STATIC_WITH_ARGS(QMediaPluginLoader, playlistIOLoader,
|
||||
(QMediaPlaylistIOInterface_iid, QLatin1String("playlistformats"), Qt::CaseInsensitive))
|
||||
|
||||
namespace
|
||||
{
|
||||
class QMediaPlaylistPrivateRegisterMetaTypes
|
||||
{
|
||||
public:
|
||||
QMediaPlaylistPrivateRegisterMetaTypes()
|
||||
{
|
||||
qRegisterMetaType<QMediaPlaylist::Error>();
|
||||
qRegisterMetaType<QMediaPlaylist::PlaybackMode>();
|
||||
}
|
||||
} _registerMetaTypes;
|
||||
}
|
||||
|
||||
|
||||
/*!
|
||||
\class QMediaPlaylist
|
||||
\inmodule QtMultimedia
|
||||
\ingroup multimedia
|
||||
\since 1.0
|
||||
|
||||
|
||||
\brief The QMediaPlaylist class provides a list of media content to play.
|
||||
|
||||
QMediaPlaylist is intended to be used with other media objects,
|
||||
like QMediaPlayer or QMediaImageViewer.
|
||||
|
||||
QMediaPlaylist allows to access the service intrinsic playlist functionality
|
||||
if available, otherwise it provides the the local memory playlist implementation.
|
||||
|
||||
\snippet doc/src/snippets/multimedia-snippets/media.cpp Movie playlist
|
||||
|
||||
Depending on playlist source implementation, most of the playlist mutating
|
||||
operations can be asynchronous.
|
||||
|
||||
\sa QMediaContent
|
||||
*/
|
||||
|
||||
|
||||
/*!
|
||||
\enum QMediaPlaylist::PlaybackMode
|
||||
|
||||
The QMediaPlaylist::PlaybackMode describes the order items in playlist are played.
|
||||
|
||||
\value CurrentItemOnce The current item is played only once.
|
||||
|
||||
\value CurrentItemInLoop The current item is played repeatedly in a loop.
|
||||
|
||||
\value Sequential Playback starts from the current and moves through each successive item until the last is reached and then stops.
|
||||
The next item is a null item when the last one is currently playing.
|
||||
|
||||
\value Loop Playback restarts at the first item after the last has finished playing.
|
||||
|
||||
\value Random Play items in random order.
|
||||
*/
|
||||
|
||||
|
||||
|
||||
/*!
|
||||
Create a new playlist object for with the given \a parent.
|
||||
*/
|
||||
|
||||
QMediaPlaylist::QMediaPlaylist(QObject *parent)
|
||||
: QObject(parent)
|
||||
, d_ptr(new QMediaPlaylistPrivate)
|
||||
{
|
||||
Q_D(QMediaPlaylist);
|
||||
|
||||
d->q_ptr = this;
|
||||
d->localPlaylistControl = new QLocalMediaPlaylistControl(this);
|
||||
|
||||
setMediaObject(0);
|
||||
}
|
||||
|
||||
/*!
|
||||
Destroys the playlist.
|
||||
*/
|
||||
|
||||
QMediaPlaylist::~QMediaPlaylist()
|
||||
{
|
||||
Q_D(QMediaPlaylist);
|
||||
|
||||
if (d->mediaObject)
|
||||
d->mediaObject->unbind(this);
|
||||
|
||||
delete d_ptr;
|
||||
}
|
||||
|
||||
/*!
|
||||
Returns the QMediaObject instance that this QMediaPlaylist is bound too,
|
||||
or 0 otherwise.
|
||||
\since 1.0
|
||||
*/
|
||||
QMediaObject *QMediaPlaylist::mediaObject() const
|
||||
{
|
||||
return d_func()->mediaObject;
|
||||
}
|
||||
|
||||
/*!
|
||||
\internal
|
||||
If \a mediaObject is null or doesn't have an intrinsic playlist,
|
||||
internal local memory playlist source will be created.
|
||||
\since 1.0
|
||||
*/
|
||||
bool QMediaPlaylist::setMediaObject(QMediaObject *mediaObject)
|
||||
{
|
||||
Q_D(QMediaPlaylist);
|
||||
|
||||
if (mediaObject && mediaObject == d->mediaObject)
|
||||
return true;
|
||||
|
||||
QMediaService *service = mediaObject
|
||||
? mediaObject->service() : 0;
|
||||
|
||||
QMediaPlaylistControl *newControl = 0;
|
||||
|
||||
if (service)
|
||||
newControl = qobject_cast<QMediaPlaylistControl*>(service->requestControl(QMediaPlaylistControl_iid));
|
||||
|
||||
if (!newControl)
|
||||
newControl = d->localPlaylistControl;
|
||||
|
||||
if (d->control != newControl) {
|
||||
int oldSize = 0;
|
||||
if (d->control) {
|
||||
QMediaPlaylistProvider *playlist = d->control->playlistProvider();
|
||||
oldSize = playlist->mediaCount();
|
||||
disconnect(playlist, SIGNAL(loadFailed(QMediaPlaylist::Error,QString)),
|
||||
this, SLOT(_q_loadFailed(QMediaPlaylist::Error,QString)));
|
||||
|
||||
disconnect(playlist, SIGNAL(mediaChanged(int,int)), this, SIGNAL(mediaChanged(int,int)));
|
||||
disconnect(playlist, SIGNAL(mediaAboutToBeInserted(int,int)), this, SIGNAL(mediaAboutToBeInserted(int,int)));
|
||||
disconnect(playlist, SIGNAL(mediaInserted(int,int)), this, SIGNAL(mediaInserted(int,int)));
|
||||
disconnect(playlist, SIGNAL(mediaAboutToBeRemoved(int,int)), this, SIGNAL(mediaAboutToBeRemoved(int,int)));
|
||||
disconnect(playlist, SIGNAL(mediaRemoved(int,int)), this, SIGNAL(mediaRemoved(int,int)));
|
||||
|
||||
disconnect(playlist, SIGNAL(loaded()), this, SIGNAL(loaded()));
|
||||
|
||||
disconnect(d->control, SIGNAL(playbackModeChanged(QMediaPlaylist::PlaybackMode)),
|
||||
this, SIGNAL(playbackModeChanged(QMediaPlaylist::PlaybackMode)));
|
||||
disconnect(d->control, SIGNAL(currentIndexChanged(int)),
|
||||
this, SIGNAL(currentIndexChanged(int)));
|
||||
disconnect(d->control, SIGNAL(currentMediaChanged(QMediaContent)),
|
||||
this, SIGNAL(currentMediaChanged(QMediaContent)));
|
||||
|
||||
if (d->mediaObject)
|
||||
d->mediaObject->service()->releaseControl(d->control);
|
||||
}
|
||||
|
||||
d->control = newControl;
|
||||
QMediaPlaylistProvider *playlist = d->control->playlistProvider();
|
||||
connect(playlist, SIGNAL(loadFailed(QMediaPlaylist::Error,QString)),
|
||||
this, SLOT(_q_loadFailed(QMediaPlaylist::Error,QString)));
|
||||
|
||||
connect(playlist, SIGNAL(mediaChanged(int,int)), this, SIGNAL(mediaChanged(int,int)));
|
||||
connect(playlist, SIGNAL(mediaAboutToBeInserted(int,int)), this, SIGNAL(mediaAboutToBeInserted(int,int)));
|
||||
connect(playlist, SIGNAL(mediaInserted(int,int)), this, SIGNAL(mediaInserted(int,int)));
|
||||
connect(playlist, SIGNAL(mediaAboutToBeRemoved(int,int)), this, SIGNAL(mediaAboutToBeRemoved(int,int)));
|
||||
connect(playlist, SIGNAL(mediaRemoved(int,int)), this, SIGNAL(mediaRemoved(int,int)));
|
||||
|
||||
connect(playlist, SIGNAL(loaded()), this, SIGNAL(loaded()));
|
||||
|
||||
connect(d->control, SIGNAL(playbackModeChanged(QMediaPlaylist::PlaybackMode)),
|
||||
this, SIGNAL(playbackModeChanged(QMediaPlaylist::PlaybackMode)));
|
||||
connect(d->control, SIGNAL(currentIndexChanged(int)),
|
||||
this, SIGNAL(currentIndexChanged(int)));
|
||||
connect(d->control, SIGNAL(currentMediaChanged(QMediaContent)),
|
||||
this, SIGNAL(currentMediaChanged(QMediaContent)));
|
||||
|
||||
if (oldSize)
|
||||
emit mediaRemoved(0, oldSize-1);
|
||||
|
||||
if (playlist->mediaCount()) {
|
||||
emit mediaAboutToBeInserted(0,playlist->mediaCount()-1);
|
||||
emit mediaInserted(0,playlist->mediaCount()-1);
|
||||
}
|
||||
}
|
||||
|
||||
d->mediaObject = mediaObject;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/*!
|
||||
\property QMediaPlaylist::playbackMode
|
||||
|
||||
This property defines the order, items in playlist are played.
|
||||
|
||||
\since 1.0
|
||||
\sa QMediaPlaylist::PlaybackMode
|
||||
*/
|
||||
|
||||
QMediaPlaylist::PlaybackMode QMediaPlaylist::playbackMode() const
|
||||
{
|
||||
return d_func()->control->playbackMode();
|
||||
}
|
||||
|
||||
void QMediaPlaylist::setPlaybackMode(QMediaPlaylist::PlaybackMode mode)
|
||||
{
|
||||
Q_D(QMediaPlaylist);
|
||||
d->control->setPlaybackMode(mode);
|
||||
}
|
||||
|
||||
/*!
|
||||
Returns position of the current media content in the playlist.
|
||||
\since 1.0
|
||||
*/
|
||||
int QMediaPlaylist::currentIndex() const
|
||||
{
|
||||
return d_func()->control->currentIndex();
|
||||
}
|
||||
|
||||
/*!
|
||||
Returns the current media content.
|
||||
\since 1.0
|
||||
*/
|
||||
|
||||
QMediaContent QMediaPlaylist::currentMedia() const
|
||||
{
|
||||
return d_func()->playlist()->media(currentIndex());
|
||||
}
|
||||
|
||||
/*!
|
||||
Returns the index of the item, which would be current after calling next()
|
||||
\a steps times.
|
||||
|
||||
Returned value depends on the size of playlist, current position
|
||||
and playback mode.
|
||||
|
||||
\since 1.0
|
||||
\sa QMediaPlaylist::playbackMode
|
||||
*/
|
||||
int QMediaPlaylist::nextIndex(int steps) const
|
||||
{
|
||||
return d_func()->control->nextIndex(steps);
|
||||
}
|
||||
|
||||
/*!
|
||||
Returns the index of the item, which would be current after calling previous()
|
||||
\a steps times.
|
||||
|
||||
\since 1.0
|
||||
\sa QMediaPlaylist::playbackMode
|
||||
*/
|
||||
|
||||
int QMediaPlaylist::previousIndex(int steps) const
|
||||
{
|
||||
return d_func()->control->previousIndex(steps);
|
||||
}
|
||||
|
||||
|
||||
/*!
|
||||
Returns the number of items in the playlist.
|
||||
|
||||
\since 1.0
|
||||
\sa isEmpty()
|
||||
*/
|
||||
int QMediaPlaylist::mediaCount() const
|
||||
{
|
||||
return d_func()->playlist()->mediaCount();
|
||||
}
|
||||
|
||||
/*!
|
||||
Returns true if the playlist contains no items; otherwise returns false.
|
||||
|
||||
\since 1.0
|
||||
\sa mediaCount()
|
||||
*/
|
||||
bool QMediaPlaylist::isEmpty() const
|
||||
{
|
||||
return mediaCount() == 0;
|
||||
}
|
||||
|
||||
/*!
|
||||
Returns true if the playlist can be modified; otherwise returns false.
|
||||
|
||||
\since 1.0
|
||||
\sa mediaCount()
|
||||
*/
|
||||
bool QMediaPlaylist::isReadOnly() const
|
||||
{
|
||||
return d_func()->playlist()->isReadOnly();
|
||||
}
|
||||
|
||||
/*!
|
||||
Returns the media content at \a index in the playlist.
|
||||
\since 1.0
|
||||
*/
|
||||
|
||||
QMediaContent QMediaPlaylist::media(int index) const
|
||||
{
|
||||
return d_func()->playlist()->media(index);
|
||||
}
|
||||
|
||||
/*!
|
||||
Append the media \a content to the playlist.
|
||||
|
||||
Returns true if the operation is successful, otherwise return false.
|
||||
\since 1.0
|
||||
*/
|
||||
bool QMediaPlaylist::addMedia(const QMediaContent &content)
|
||||
{
|
||||
return d_func()->control->playlistProvider()->addMedia(content);
|
||||
}
|
||||
|
||||
/*!
|
||||
Append multiple media content \a items to the playlist.
|
||||
|
||||
Returns true if the operation is successful, otherwise return false.
|
||||
\since 1.0
|
||||
*/
|
||||
bool QMediaPlaylist::addMedia(const QList<QMediaContent> &items)
|
||||
{
|
||||
return d_func()->control->playlistProvider()->addMedia(items);
|
||||
}
|
||||
|
||||
/*!
|
||||
Insert the media \a content to the playlist at position \a pos.
|
||||
|
||||
Returns true if the operation is successful, otherwise false.
|
||||
\since 1.0
|
||||
*/
|
||||
|
||||
bool QMediaPlaylist::insertMedia(int pos, const QMediaContent &content)
|
||||
{
|
||||
return d_func()->playlist()->insertMedia(pos, content);
|
||||
}
|
||||
|
||||
/*!
|
||||
Insert multiple media content \a items to the playlist at position \a pos.
|
||||
|
||||
Returns true if the operation is successful, otherwise false.
|
||||
\since 1.0
|
||||
*/
|
||||
|
||||
bool QMediaPlaylist::insertMedia(int pos, const QList<QMediaContent> &items)
|
||||
{
|
||||
return d_func()->playlist()->insertMedia(pos, items);
|
||||
}
|
||||
|
||||
/*!
|
||||
Remove the item from the playlist at position \a pos.
|
||||
|
||||
Returns true if the operation is successful, otherwise return false.
|
||||
\since 1.0
|
||||
*/
|
||||
bool QMediaPlaylist::removeMedia(int pos)
|
||||
{
|
||||
Q_D(QMediaPlaylist);
|
||||
return d->playlist()->removeMedia(pos);
|
||||
}
|
||||
|
||||
/*!
|
||||
Remove items in the playlist from \a start to \a end inclusive.
|
||||
|
||||
Returns true if the operation is successful, otherwise return false.
|
||||
\since 1.0
|
||||
*/
|
||||
bool QMediaPlaylist::removeMedia(int start, int end)
|
||||
{
|
||||
Q_D(QMediaPlaylist);
|
||||
return d->playlist()->removeMedia(start, end);
|
||||
}
|
||||
|
||||
/*!
|
||||
Remove all the items from the playlist.
|
||||
|
||||
Returns true if the operation is successful, otherwise return false.
|
||||
\since 1.0
|
||||
*/
|
||||
bool QMediaPlaylist::clear()
|
||||
{
|
||||
Q_D(QMediaPlaylist);
|
||||
return d->playlist()->clear();
|
||||
}
|
||||
|
||||
bool QMediaPlaylistPrivate::readItems(QMediaPlaylistReader *reader)
|
||||
{
|
||||
while (!reader->atEnd())
|
||||
playlist()->addMedia(reader->readItem());
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool QMediaPlaylistPrivate::writeItems(QMediaPlaylistWriter *writer)
|
||||
{
|
||||
for (int i=0; i<playlist()->mediaCount(); i++) {
|
||||
if (!writer->writeItem(playlist()->media(i)))
|
||||
return false;
|
||||
}
|
||||
writer->close();
|
||||
return true;
|
||||
}
|
||||
|
||||
/*!
|
||||
Load playlist from \a location. If \a format is specified, it is used,
|
||||
otherwise format is guessed from location name and data.
|
||||
|
||||
New items are appended to playlist.
|
||||
|
||||
QMediaPlaylist::loaded() signal is emitted if playlist was loaded successfully,
|
||||
otherwise the playlist emits loadFailed().
|
||||
\since 1.0
|
||||
*/
|
||||
void QMediaPlaylist::load(const QUrl &location, const char *format)
|
||||
{
|
||||
Q_D(QMediaPlaylist);
|
||||
|
||||
d->error = NoError;
|
||||
d->errorString.clear();
|
||||
|
||||
if (d->playlist()->load(location,format))
|
||||
return;
|
||||
|
||||
if (isReadOnly()) {
|
||||
d->error = AccessDeniedError;
|
||||
d->errorString = tr("Could not add items to read only playlist.");
|
||||
emit loadFailed();
|
||||
return;
|
||||
}
|
||||
|
||||
foreach (QString const& key, playlistIOLoader()->keys()) {
|
||||
QMediaPlaylistIOInterface* plugin = qobject_cast<QMediaPlaylistIOInterface*>(playlistIOLoader()->instance(key));
|
||||
if (plugin && plugin->canRead(location,format)) {
|
||||
QMediaPlaylistReader *reader = plugin->createReader(location,QByteArray(format));
|
||||
if (reader && d->readItems(reader)) {
|
||||
delete reader;
|
||||
emit loaded();
|
||||
return;
|
||||
}
|
||||
delete reader;
|
||||
}
|
||||
}
|
||||
|
||||
d->error = FormatNotSupportedError;
|
||||
d->errorString = tr("Playlist format is not supported");
|
||||
emit loadFailed();
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
/*!
|
||||
Load playlist from QIODevice \a device. If \a format is specified, it is used,
|
||||
otherwise format is guessed from device data.
|
||||
|
||||
New items are appended to playlist.
|
||||
|
||||
QMediaPlaylist::loaded() signal is emitted if playlist was loaded successfully,
|
||||
otherwise the playlist emits loadFailed().
|
||||
\since 1.0
|
||||
*/
|
||||
void QMediaPlaylist::load(QIODevice * device, const char *format)
|
||||
{
|
||||
Q_D(QMediaPlaylist);
|
||||
|
||||
d->error = NoError;
|
||||
d->errorString.clear();
|
||||
|
||||
if (d->playlist()->load(device,format))
|
||||
return;
|
||||
|
||||
if (isReadOnly()) {
|
||||
d->error = AccessDeniedError;
|
||||
d->errorString = tr("Could not add items to read only playlist.");
|
||||
emit loadFailed();
|
||||
return;
|
||||
}
|
||||
|
||||
foreach (QString const& key, playlistIOLoader()->keys()) {
|
||||
QMediaPlaylistIOInterface* plugin = qobject_cast<QMediaPlaylistIOInterface*>(playlistIOLoader()->instance(key));
|
||||
if (plugin && plugin->canRead(device,format)) {
|
||||
QMediaPlaylistReader *reader = plugin->createReader(device,QByteArray(format));
|
||||
if (reader && d->readItems(reader)) {
|
||||
delete reader;
|
||||
emit loaded();
|
||||
return;
|
||||
}
|
||||
delete reader;
|
||||
}
|
||||
}
|
||||
|
||||
d->error = FormatNotSupportedError;
|
||||
d->errorString = tr("Playlist format is not supported");
|
||||
emit loadFailed();
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
/*!
|
||||
Save playlist to \a location. If \a format is specified, it is used,
|
||||
otherwise format is guessed from location name.
|
||||
|
||||
Returns true if playlist was saved successfully, otherwise returns false.
|
||||
\since 1.0
|
||||
*/
|
||||
bool QMediaPlaylist::save(const QUrl &location, const char *format)
|
||||
{
|
||||
Q_D(QMediaPlaylist);
|
||||
|
||||
d->error = NoError;
|
||||
d->errorString.clear();
|
||||
|
||||
if (d->playlist()->save(location,format))
|
||||
return true;
|
||||
|
||||
QFile file(location.toLocalFile());
|
||||
|
||||
if (!file.open(QIODevice::WriteOnly | QIODevice::Truncate)) {
|
||||
d->error = AccessDeniedError;
|
||||
d->errorString = tr("The file could not be accessed.");
|
||||
return false;
|
||||
}
|
||||
|
||||
return save(&file, format);
|
||||
}
|
||||
|
||||
/*!
|
||||
Save playlist to QIODevice \a device using format \a format.
|
||||
|
||||
Returns true if playlist was saved successfully, otherwise returns false.
|
||||
\since 1.0
|
||||
*/
|
||||
bool QMediaPlaylist::save(QIODevice * device, const char *format)
|
||||
{
|
||||
Q_D(QMediaPlaylist);
|
||||
|
||||
d->error = NoError;
|
||||
d->errorString.clear();
|
||||
|
||||
if (d->playlist()->save(device,format))
|
||||
return true;
|
||||
|
||||
foreach (QString const& key, playlistIOLoader()->keys()) {
|
||||
QMediaPlaylistIOInterface* plugin = qobject_cast<QMediaPlaylistIOInterface*>(playlistIOLoader()->instance(key));
|
||||
if (plugin && plugin->canWrite(device,format)) {
|
||||
QMediaPlaylistWriter *writer = plugin->createWriter(device,QByteArray(format));
|
||||
if (writer && d->writeItems(writer)) {
|
||||
delete writer;
|
||||
return true;
|
||||
}
|
||||
delete writer;
|
||||
}
|
||||
}
|
||||
|
||||
d->error = FormatNotSupportedError;
|
||||
d->errorString = tr("Playlist format is not supported.");
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/*!
|
||||
Returns the last error condition.
|
||||
\since 1.0
|
||||
*/
|
||||
QMediaPlaylist::Error QMediaPlaylist::error() const
|
||||
{
|
||||
return d_func()->error;
|
||||
}
|
||||
|
||||
/*!
|
||||
Returns the string describing the last error condition.
|
||||
\since 1.0
|
||||
*/
|
||||
QString QMediaPlaylist::errorString() const
|
||||
{
|
||||
return d_func()->errorString;
|
||||
}
|
||||
|
||||
/*!
|
||||
Shuffle items in the playlist.
|
||||
\since 1.0
|
||||
*/
|
||||
void QMediaPlaylist::shuffle()
|
||||
{
|
||||
d_func()->playlist()->shuffle();
|
||||
}
|
||||
|
||||
|
||||
/*!
|
||||
Advance to the next media content in playlist.
|
||||
\since 1.0
|
||||
*/
|
||||
void QMediaPlaylist::next()
|
||||
{
|
||||
d_func()->control->next();
|
||||
}
|
||||
|
||||
/*!
|
||||
Return to the previous media content in playlist.
|
||||
\since 1.0
|
||||
*/
|
||||
void QMediaPlaylist::previous()
|
||||
{
|
||||
d_func()->control->previous();
|
||||
}
|
||||
|
||||
/*!
|
||||
Activate media content from playlist at position \a playlistPosition.
|
||||
\since 1.0
|
||||
*/
|
||||
|
||||
void QMediaPlaylist::setCurrentIndex(int playlistPosition)
|
||||
{
|
||||
d_func()->control->setCurrentIndex(playlistPosition);
|
||||
}
|
||||
|
||||
/*!
|
||||
\fn void QMediaPlaylist::mediaInserted(int start, int end)
|
||||
|
||||
This signal is emitted after media has been inserted into the playlist.
|
||||
The new items are those between \a start and \a end inclusive.
|
||||
\since 1.0
|
||||
*/
|
||||
|
||||
/*!
|
||||
\fn void QMediaPlaylist::mediaRemoved(int start, int end)
|
||||
|
||||
This signal is emitted after media has been removed from the playlist.
|
||||
The removed items are those between \a start and \a end inclusive.
|
||||
\since 1.0
|
||||
*/
|
||||
|
||||
/*!
|
||||
\fn void QMediaPlaylist::mediaChanged(int start, int end)
|
||||
|
||||
This signal is emitted after media has been changed in the playlist
|
||||
between \a start and \a end positions inclusive.
|
||||
\since 1.0
|
||||
*/
|
||||
|
||||
/*!
|
||||
\fn void QMediaPlaylist::currentIndexChanged(int position)
|
||||
|
||||
Signal emitted when playlist position changed to \a position.
|
||||
\since 1.0
|
||||
*/
|
||||
|
||||
/*!
|
||||
\fn void QMediaPlaylist::playbackModeChanged(QMediaPlaylist::PlaybackMode mode)
|
||||
|
||||
Signal emitted when playback mode changed to \a mode.
|
||||
\since 1.0
|
||||
*/
|
||||
|
||||
/*!
|
||||
\fn void QMediaPlaylist::mediaAboutToBeInserted(int start, int end)
|
||||
|
||||
Signal emitted when items are to be inserted at \a start and ending at \a end.
|
||||
\since 1.0
|
||||
*/
|
||||
|
||||
/*!
|
||||
\fn void QMediaPlaylist::mediaAboutToBeRemoved(int start, int end)
|
||||
|
||||
Signal emitted when item are to be deleted at \a start and ending at \a end.
|
||||
\since 1.0
|
||||
*/
|
||||
|
||||
/*!
|
||||
\fn void QMediaPlaylist::currentMediaChanged(const QMediaContent &content)
|
||||
|
||||
Signal emitted when current media changes to \a content.
|
||||
\since 1.0
|
||||
*/
|
||||
|
||||
/*!
|
||||
\property QMediaPlaylist::currentIndex
|
||||
\brief Current position.
|
||||
\since 1.0
|
||||
*/
|
||||
|
||||
/*!
|
||||
\property QMediaPlaylist::currentMedia
|
||||
\brief Current media content.
|
||||
\since 1.0
|
||||
*/
|
||||
|
||||
/*!
|
||||
\fn QMediaPlaylist::loaded()
|
||||
|
||||
Signal emitted when playlist finished loading.
|
||||
\since 1.0
|
||||
*/
|
||||
|
||||
/*!
|
||||
\fn QMediaPlaylist::loadFailed()
|
||||
|
||||
Signal emitted if failed to load playlist.
|
||||
\since 1.0
|
||||
*/
|
||||
|
||||
/*!
|
||||
\enum QMediaPlaylist::Error
|
||||
|
||||
This enum describes the QMediaPlaylist error codes.
|
||||
|
||||
\value NoError No errors.
|
||||
\value FormatError Format error.
|
||||
\value FormatNotSupportedError Format not supported.
|
||||
\value NetworkError Network error.
|
||||
\value AccessDeniedError Access denied error.
|
||||
*/
|
||||
|
||||
#include "moc_qmediaplaylist.cpp"
|
||||
#include "moc_qmediaplaylist_p.cpp"
|
||||
QT_END_NAMESPACE
|
||||
|
||||
Reference in New Issue
Block a user