--- a/playlist/playlist.cpp
+++ b/playlist/playlist.cpp
@@ -26,6 +26,7 @@
 #include <QDebug>
 #include <QDir>
 #include <QFileDialog>
+#include <QSettings>
 
 #include "upadapt/upputils.h"
 #include "playlist.h"
@@ -91,6 +92,40 @@
     onRemoteTpState_impl(tps, sst);
 }
 
+void Playlist::onRemoteSecsInSong(quint32 s)
+{
+    if (m_play_idx >= 0 && m_play_idx < int(m_meta.size())) {
+        m_meta[m_play_idx].curseeksecs = s;
+    }
+    onRemoteSecsInSong_impl(s);
+}
+
+void Playlist::psl_pause()
+{
+    if (m_play_idx >= 0 && m_play_idx < int(m_meta.size())) {
+        m_meta[m_play_idx].pauseseeksecs = m_meta[m_play_idx].curseeksecs;
+    }
+    psl_pause_impl();
+}
+
+void Playlist::psl_change_track(int num)
+{
+    m_insertion_point = -1;
+    m_play_idx = -1;
+    psl_change_track_impl(num);
+    QSettings settings;
+    bool saveseek = settings.value("saveseekpos").toBool();
+    if (saveseek && num >= 0 && num < int(m_meta.size())) {
+        Playlist_Mode playlist_mode =
+            CSettingsStorage::getInstance()->getPlaylistMode();
+        int seeksecs = playlist_mode.repAll ? m_meta[num].pauseseeksecs :
+            m_meta[num].curseeksecs;
+        if (seeksecs > 0) {
+            psl_seek(seeksecs);
+        }
+    }
+}
+
 Playlist_Mode Playlist::mode()
 {
     return CSettingsStorage::getInstance()->getPlaylistMode();
@@ -181,7 +216,8 @@
 
     emit sig_sync();
 
-    Playlist_Mode playlist_mode = CSettingsStorage::getInstance()->getPlaylistMode();
+    Playlist_Mode playlist_mode =
+        CSettingsStorage::getInstance()->getPlaylistMode();
     if (playlist_mode.replace)
         psl_clear_playlist();