diff options
author | Dominik Holland <dominik.holland@pelagicore.com> | 2017-02-17 11:21:33 +0100 |
---|---|---|
committer | Dominik Holland <dominik.holland@pelagicore.com> | 2017-02-20 10:22:39 +0000 |
commit | 96852379c1b893c27ec53c42fed99c1e10461ad2 (patch) | |
tree | 6c5d337397225b9866a3e3db9b6e7d7b6a5372c9 | |
parent | f0cd7bcfeddaf25e76e567a83bad0eacdcc866f0 (diff) |
QIviMediaPlayer: Make it possible to directly set the desired position
Before it was only possible to use seek
Change-Id: I252ad3c1878dd8efc751156c626c213edf283920
Reviewed-by: Johan Thelin <johan.thelin@pelagicore.com>
-rw-r--r-- | src/ivimedia/qivimediaplayer.cpp | 12 | ||||
-rw-r--r-- | src/ivimedia/qivimediaplayer.h | 3 | ||||
-rw-r--r-- | src/ivimedia/qivimediaplayerbackendinterface.cpp | 9 | ||||
-rw-r--r-- | src/ivimedia/qivimediaplayerbackendinterface.h | 1 | ||||
-rw-r--r-- | src/plugins/ivimedia/media_simulator/mediaplayerbackend.cpp | 5 | ||||
-rw-r--r-- | src/plugins/ivimedia/media_simulator/mediaplayerbackend.h | 1 |
6 files changed, 30 insertions, 1 deletions
diff --git a/src/ivimedia/qivimediaplayer.cpp b/src/ivimedia/qivimediaplayer.cpp index ac8ed6d..7e96b1d 100644 --- a/src/ivimedia/qivimediaplayer.cpp +++ b/src/ivimedia/qivimediaplayer.cpp @@ -222,6 +222,18 @@ qint64 QIviMediaPlayer::duration() const return d->m_duration; } +void QIviMediaPlayer::setPosition(qint64 position) +{ + Q_D(QIviMediaPlayer); + QIviMediaPlayerBackendInterface *backend = d->playerBackend(); + if (!backend) { + qWarning("Can't set the position without a connected backend"); + return; + } + + backend->setPosition(position); +} + /*! \qmlmethod MediaPlayer::play() diff --git a/src/ivimedia/qivimediaplayer.h b/src/ivimedia/qivimediaplayer.h index 28178ea..9c11cf3 100644 --- a/src/ivimedia/qivimediaplayer.h +++ b/src/ivimedia/qivimediaplayer.h @@ -59,7 +59,7 @@ class Q_QTIVIMEDIA_EXPORT QIviMediaPlayer : public QIviAbstractFeature //TODO Status Q_PROPERTY(QIviPlayQueue *playQueue READ playQueue CONSTANT) Q_PROPERTY(QVariant currentTrack READ currentTrack NOTIFY currentTrackChanged) - Q_PROPERTY(qint64 position READ position NOTIFY positionChanged) + Q_PROPERTY(qint64 position READ position WRITE setPosition NOTIFY positionChanged) Q_PROPERTY(qint64 duration READ duration NOTIFY durationChanged) public: @@ -71,6 +71,7 @@ public: qint64 duration() const; public Q_SLOTS: + void setPosition(qint64 position); void play(); void pause(); void stop(); diff --git a/src/ivimedia/qivimediaplayerbackendinterface.cpp b/src/ivimedia/qivimediaplayerbackendinterface.cpp index 577e23e..bca949c 100644 --- a/src/ivimedia/qivimediaplayerbackendinterface.cpp +++ b/src/ivimedia/qivimediaplayerbackendinterface.cpp @@ -121,6 +121,15 @@ QIviMediaPlayerBackendInterface::QIviMediaPlayerBackendInterface(QObject *parent */ /*! + \fn QIviMediaPlayerBackendInterface::setPosition(qint64 position) + + Sets the \a position of the currently playing item. If a valid position is passed, the + function should emit the corresponding change signals + + \sa positionChanged +*/ + +/*! \fn QIviMediaPlayerBackendInterface::setCurrentIndex(int currentIndex) Sets the \a currentIndex of the play-queue to the given index. If a valid index is passed, the diff --git a/src/ivimedia/qivimediaplayerbackendinterface.h b/src/ivimedia/qivimediaplayerbackendinterface.h index e9897cb..93c4fd4 100644 --- a/src/ivimedia/qivimediaplayerbackendinterface.h +++ b/src/ivimedia/qivimediaplayerbackendinterface.h @@ -63,6 +63,7 @@ public: virtual void seek(qint64 offset) = 0; virtual void next() = 0; virtual void previous() = 0; + virtual void setPosition(qint64 position) = 0; virtual void setCurrentIndex(int currentIndex) = 0; virtual bool canReportCount() = 0; diff --git a/src/plugins/ivimedia/media_simulator/mediaplayerbackend.cpp b/src/plugins/ivimedia/media_simulator/mediaplayerbackend.cpp index 47132bc..ecad72d 100644 --- a/src/plugins/ivimedia/media_simulator/mediaplayerbackend.cpp +++ b/src/plugins/ivimedia/media_simulator/mediaplayerbackend.cpp @@ -106,6 +106,11 @@ void MediaPlayerBackend::previous() setCurrentIndex(m_currentIndex - 1); } +void MediaPlayerBackend::setPosition(qint64 position) +{ + m_player->setPosition(position); +} + bool MediaPlayerBackend::canReportCount() { return true; diff --git a/src/plugins/ivimedia/media_simulator/mediaplayerbackend.h b/src/plugins/ivimedia/media_simulator/mediaplayerbackend.h index 0c2d6f8..c9e4f06 100644 --- a/src/plugins/ivimedia/media_simulator/mediaplayerbackend.h +++ b/src/plugins/ivimedia/media_simulator/mediaplayerbackend.h @@ -72,6 +72,7 @@ public: virtual void seek(qint64 offset) Q_DECL_OVERRIDE; virtual void next() Q_DECL_OVERRIDE; virtual void previous() Q_DECL_OVERRIDE; + virtual void setPosition(qint64 position) Q_DECL_OVERRIDE; virtual void setCurrentIndex(int index) Q_DECL_OVERRIDE; virtual bool canReportCount() Q_DECL_OVERRIDE; |