aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDominik Holland <dominik.holland@pelagicore.com>2017-02-17 11:21:33 +0100
committerDominik Holland <dominik.holland@pelagicore.com>2017-02-20 10:22:39 +0000
commit96852379c1b893c27ec53c42fed99c1e10461ad2 (patch)
tree6c5d337397225b9866a3e3db9b6e7d7b6a5372c9
parentf0cd7bcfeddaf25e76e567a83bad0eacdcc866f0 (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.cpp12
-rw-r--r--src/ivimedia/qivimediaplayer.h3
-rw-r--r--src/ivimedia/qivimediaplayerbackendinterface.cpp9
-rw-r--r--src/ivimedia/qivimediaplayerbackendinterface.h1
-rw-r--r--src/plugins/ivimedia/media_simulator/mediaplayerbackend.cpp5
-rw-r--r--src/plugins/ivimedia/media_simulator/mediaplayerbackend.h1
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;