summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--demos/multimedia/player/player.cpp12
-rw-r--r--demos/multimedia/player/player.h2
2 files changed, 13 insertions, 1 deletions
diff --git a/demos/multimedia/player/player.cpp b/demos/multimedia/player/player.cpp
index 64b1f25..49d18cb 100644
--- a/demos/multimedia/player/player.cpp
+++ b/demos/multimedia/player/player.cpp
@@ -99,7 +99,7 @@ Player::Player(QWidget *parent)
connect(controls, SIGNAL(pause()), player, SLOT(pause()));
connect(controls, SIGNAL(stop()), player, SLOT(stop()));
connect(controls, SIGNAL(next()), playlist, SLOT(next()));
- connect(controls, SIGNAL(previous()), playlist, SLOT(previous()));
+ connect(controls, SIGNAL(previous()), this, SLOT(previousClicked()));
connect(controls, SIGNAL(changeVolume(int)), player, SLOT(setVolume(int)));
connect(controls, SIGNAL(changeMuting(bool)), player, SLOT(setMuted(bool)));
connect(controls, SIGNAL(changeRate(qreal)), player, SLOT(setPlaybackRate(qreal)));
@@ -200,6 +200,16 @@ void Player::metaDataChanged()
}
}
+void Player::previousClicked()
+{
+ // Go to previous track if we are within the first 5 seconds of playback
+ // Otherwise, seek to the beginning.
+ if(player->position() <= 5000)
+ playlist->previous();
+ else
+ player->setPosition(0);
+}
+
void Player::jump(const QModelIndex &index)
{
if (index.isValid()) {
diff --git a/demos/multimedia/player/player.h b/demos/multimedia/player/player.h
index 0ad609b..1de8b1a 100644
--- a/demos/multimedia/player/player.h
+++ b/demos/multimedia/player/player.h
@@ -77,6 +77,8 @@ private slots:
void positionChanged(qint64 progress);
void metaDataChanged();
+ void previousClicked();
+
void seek(int seconds);
void jump(const QModelIndex &index);
void playlistPositionChanged(int);