fixed progress

This commit is contained in:
Anika Raemer 2021-10-13 14:06:43 +02:00
parent 2d985ca17d
commit 39a0356a51
2 changed files with 14 additions and 32 deletions

View file

@ -16,6 +16,13 @@ MusicPlayer::MusicPlayer(QObject *parent) : QMediaPlayer(parent)
emit hasNextChanged(); emit hasNextChanged();
emit hasPreviousChanged(); emit hasPreviousChanged();
}); });
connect(this, &QMediaPlayer::positionChanged, this, [this](qint64){
emit progressChanged();
});
connect(this, &QMediaPlayer::durationChanged, this, [this](qint64){
emit progressChanged();
emit mediaLengthChanged();
});
} }
void MusicPlayer::init(NavigationItemModel *item) void MusicPlayer::init(NavigationItemModel *item)
@ -26,7 +33,6 @@ void MusicPlayer::init(NavigationItemModel *item)
mCurrentItem = item; mCurrentItem = item;
emit coverImageSourceChanged(); emit coverImageSourceChanged();
reset();
clearMediaList(); clearMediaList();
readMedia(mCurrentItem->getPath()); readMedia(mCurrentItem->getPath());
@ -48,7 +54,6 @@ void MusicPlayer::playPause()
void MusicPlayer::stopMusic() void MusicPlayer::stopMusic()
{ {
if(isPlaying()){ if(isPlaying()){
reset();
stop(); stop();
} }
} }
@ -86,12 +91,15 @@ bool MusicPlayer::hasPrevious() const
/* player inits with currentIndex -1 and hence previousIndex = last index /* player inits with currentIndex -1 and hence previousIndex = last index
* until started. Yet, previousButton should initially be disabled. * until started. Yet, previousButton should initially be disabled.
*/ */
return previousIndex >= 0 && previousIndex < playlist()->currentIndex(); return previousIndex >= 0 && previousIndex >= playlist()->currentIndex();
} }
double MusicPlayer::getProgress() const double MusicPlayer::getProgress() const
{ {
return mCurrentMediaItemProgress; if(duration() <= 0 || position() < 0){
return 0.0;
}
return (double)position()/duration();
} }
QString MusicPlayer::getMediaTitle() const QString MusicPlayer::getMediaTitle() const
@ -101,35 +109,12 @@ QString MusicPlayer::getMediaTitle() const
QString MusicPlayer::getMediaLength() QString MusicPlayer::getMediaLength()
{ {
return timeToString(mCurrentMediaItemLength); return timeToString(duration());
} }
QString MusicPlayer::getTime() QString MusicPlayer::getTime()
{ {
return timeToString(mCurrentTime); return timeToString(position());
}
void MusicPlayer::onTimeChanged(int time)
{
mCurrentMediaItemProgress = (double) time / mCurrentMediaItemLength;
mCurrentTime = time;
emit progressChanged();
}
void MusicPlayer::onLengthChanged(int length)
{
mCurrentMediaItemLength= length;
emit mediaLengthChanged();
}
void MusicPlayer::reset()
{
mCurrentMediaItemProgress = 0.0;
mCurrentTime = 0.0;
emit progressChanged();
mCurrentMediaItemLength = 0.0;
emit mediaLengthChanged();
} }
void MusicPlayer::clearMediaList() void MusicPlayer::clearMediaList()

View file

@ -61,9 +61,6 @@ public slots:
void playNext(); void playNext();
void playPrevious(); void playPrevious();
void onTimeChanged(int time);
void onLengthChanged(int length);
private: private:
void reset(); void reset();
void clearMediaList(); void clearMediaList();