From 7cc3e3c196ba7823e40c5820c177e7bb9a67208a Mon Sep 17 00:00:00 2001 From: Craig Drummond Date: Sun, 9 Dec 2018 20:38:21 +0000 Subject: [PATCH] MPRIS seeks command specifies an offset from current position. Closes #1417 --- ChangeLog | 1 + dbus/mpris.cpp | 1 + dbus/mpris.h | 3 ++- mpd-interface/mpdconnection.cpp | 10 ++++++---- mpd-interface/mpdconnection.h | 2 +- 5 files changed, 11 insertions(+), 6 deletions(-) diff --git a/ChangeLog b/ChangeLog index 73addf67f5..eddb36a8d5 100644 --- a/ChangeLog +++ b/ChangeLog @@ -35,6 +35,7 @@ 25. When copying tracks to a device, only update cache if configured to do so. 26. Fix MusicBrainz disc ID calculation. 27. When loading URLs via commandline use AppendAndPlay. +28. MPRIS seeks command specifies an offset from current position. 2.3.2 ----- diff --git a/dbus/mpris.cpp b/dbus/mpris.cpp index 2ce8a74fc8..6337b234c4 100644 --- a/dbus/mpris.cpp +++ b/dbus/mpris.cpp @@ -46,6 +46,7 @@ Mpris::Mpris(QObject *p) connect(this, SIGNAL(setRandom(bool)), MPDConnection::self(), SLOT(setRandom(bool))); connect(this, SIGNAL(setRepeat(bool)), MPDConnection::self(), SLOT(setRepeat(bool))); connect(this, SIGNAL(setSeekId(qint32, quint32)), MPDConnection::self(), SLOT(setSeekId(qint32, quint32))); + connect(this, SIGNAL(seek(qint32)), MPDConnection::self(), SLOT(seek(qint32))); connect(this, SIGNAL(setVolume(int)), MPDConnection::self(), SLOT(setVolume(int))); // connect(MPDConnection::self(), SIGNAL(currentSongUpdated(const Song &)), this, SLOT(updateCurrentSong(const Song &))); diff --git a/dbus/mpris.h b/dbus/mpris.h index 7c09ba16e2..431cebd366 100644 --- a/dbus/mpris.h +++ b/dbus/mpris.h @@ -76,7 +76,7 @@ class Mpris : public QObject void Stop() { StdActions::self()->stopPlaybackAction->trigger(); } void StopAfterCurrent() { StdActions::self()->stopAfterCurrentTrackAction->trigger(); } void Play(); - void Seek(qlonglong pos) { emit setSeekId(-1, pos/1000000); } + void Seek(qlonglong pos) { emit seek(pos/1000000); } void SetPosition(const QDBusObjectPath &trackId, qlonglong pos); void OpenUri(const QString &) { } QString PlaybackStatus() const; @@ -120,6 +120,7 @@ public Q_SLOTS: void setRandom(bool toggle); void setRepeat(bool toggle); void setSeekId(qint32 songId, quint32 time); + void seek(qint32 offset); void setVolume(int vol); void showMainWindow(); diff --git a/mpd-interface/mpdconnection.cpp b/mpd-interface/mpdconnection.cpp index e9dc08b9bf..89f7968cd0 100644 --- a/mpd-interface/mpdconnection.cpp +++ b/mpd-interface/mpdconnection.cpp @@ -1289,12 +1289,14 @@ void MPDConnection::playFirstTrack(bool emitErrors) sendCommand("play 0", emitErrors); } -void MPDConnection::seek() +void MPDConnection::seek(qint32 offset) { - QObject *s=sender(); - int offset=s ? s->property("offset").toInt() : 0; if (0==offset) { - return; + QObject *s=sender(); + offset=s ? s->property("offset").toInt() : 0; + if (0==offset) { + return; + } } toggleStopAfterCurrent(false); Response response=sendCommand("status"); diff --git a/mpd-interface/mpdconnection.h b/mpd-interface/mpdconnection.h index 31bc619d7d..0793abff6b 100644 --- a/mpd-interface/mpdconnection.h +++ b/mpd-interface/mpdconnection.h @@ -382,7 +382,7 @@ public Q_SLOTS: void setRating(const QStringList &files, quint8 val); void getRating(const QString &file); - void seek(); + void seek(qint32 offset=0); Q_SIGNALS: void connectionChanged(const MPDConnectionDetails &details);