From a483a380d624ca94eeeeab33d803f4811e6f91bc Mon Sep 17 00:00:00 2001 From: Anika Raemer Date: Wed, 13 Oct 2021 14:13:48 +0200 Subject: [PATCH] reset playlist to first track on stop --- LenaPi/controllers/MusicPlayer.cpp | 13 ++++++++++--- LenaPi/controllers/MusicPlayer.h | 13 +++++++++++-- 2 files changed, 21 insertions(+), 5 deletions(-) diff --git a/LenaPi/controllers/MusicPlayer.cpp b/LenaPi/controllers/MusicPlayer.cpp index b592542..dbc4d5c 100644 --- a/LenaPi/controllers/MusicPlayer.cpp +++ b/LenaPi/controllers/MusicPlayer.cpp @@ -33,7 +33,7 @@ void MusicPlayer::init(NavigationItemModel *item) mCurrentItem = item; emit coverImageSourceChanged(); - clearMediaList(); + clearPlaylist(); readMedia(mCurrentItem->getPath()); } @@ -55,6 +55,7 @@ void MusicPlayer::stopMusic() { if(isPlaying()){ stop(); + resetPlaylistToFirstTrack(); } } @@ -66,10 +67,16 @@ void MusicPlayer::playNext() void MusicPlayer::playPrevious() { - if(!hasPrevious()) return; + if(!hasPrevious()) return; // checks if playlist exists playlist()->previous(); } +void MusicPlayer::resetPlaylistToFirstTrack() +{ + if(!playlist() && !playlist()->isEmpty()) return; + playlist()->setCurrentIndex(0); +} + bool MusicPlayer::isPlaying() const { return state() == State::PlayingState; @@ -117,7 +124,7 @@ QString MusicPlayer::getTime() return timeToString(position()); } -void MusicPlayer::clearMediaList() +void MusicPlayer::clearPlaylist() { if(playlist()){ playlist()->clear(); diff --git a/LenaPi/controllers/MusicPlayer.h b/LenaPi/controllers/MusicPlayer.h index 912d828..9e68c03 100644 --- a/LenaPi/controllers/MusicPlayer.h +++ b/LenaPi/controllers/MusicPlayer.h @@ -62,9 +62,18 @@ public slots: void playPrevious(); private: - void reset(); - void clearMediaList(); + /** + * @brief Resets playlist to first track if playlist exists and is non-empty + */ + void resetPlaylistToFirstTrack(); + void clearPlaylist(); void readMedia(const QString& path); + /** + * @brief Transforms time in milliseconds into a string + * @param time Time in ms + * @return + * @todo use QDateTime + */ QString timeToString(int time); int mCurrentMediaItemLength = 0;