show media length and progress above progress bar

This commit is contained in:
Anika Raemer 2018-12-06 20:59:24 +01:00
parent 0b84a6e6b6
commit 470e95f57f
3 changed files with 63 additions and 19 deletions

View file

@ -49,6 +49,13 @@ Item{
color: "#99ffffff"
height: 140
Label{
anchors.right: progress.right
anchors.bottom: progress.top
font.pointSize: 9
color: "grey"
text: musicModel.pTime + " / " + musicModel.pMediaLength
}
ProgressBar{
id: progress

View file

@ -23,10 +23,7 @@ void MusicModel::init(NavigationItemModel *item)
mCurrentItem = item;
emit currentItemChanged();
mHasNext = false;
mHasPrevious = false;
emit hasNextChanged();
emit hasPrevious();
reset();
while(mMedia->count() > 0){
mMedia->removeMedia(0);
@ -64,13 +61,7 @@ void MusicModel::stopMusic()
mIsPlaying = false;
emit isPlayingChanged();
mHasNext = false;
mHasPrevious = false;
emit hasNextChanged();
emit hasPreviousChanged();
mCurrentMediaItemProgress = 0.0;
emit progressChanged();
reset();
emit stop();
}
@ -104,26 +95,36 @@ VlcMediaList *MusicModel::getMedia()
return mMedia;
}
bool MusicModel::isPlaying()
bool MusicModel::isPlaying() const
{
return mIsPlaying;
}
bool MusicModel::hasNext()
bool MusicModel::hasNext() const
{
return mHasNext;
}
bool MusicModel::hasPrevious()
bool MusicModel::hasPrevious() const
{
return mHasPrevious;
}
double MusicModel::getProgress()
double MusicModel::getProgress() const
{
return mCurrentMediaItemProgress;
}
QString MusicModel::getMediaLength()
{
return timeToString(mCurrentMediaItemLength);
}
QString MusicModel::getTime()
{
return timeToString(mCurrentTime);
}
void MusicModel::onNextMediaSet(VlcMedia *media)
{
mHasNext = true;
@ -141,10 +142,36 @@ void MusicModel::onNextMediaSet(VlcMedia *media)
void MusicModel::onTimeChanged(int time)
{
mCurrentMediaItemProgress = (double) time / mCurrentMediaItemLength;
mCurrentTime = time;
emit progressChanged();
}
void MusicModel::onLengthChanged(int length)
{
mCurrentMediaItemLength= length;
emit mediaLengthChanged();
}
void MusicModel::reset()
{
mHasNext = false;
mHasPrevious = false;
emit hasNextChanged();
emit hasPreviousChanged();
mCurrentMediaItemProgress = 0.0;
mCurrentTime = 0.0;
emit progressChanged();
mCurrentMediaItemLength = 0.0;
emit mediaLengthChanged();
}
QString MusicModel::timeToString(int time)
{
int sec = time/1000;
int min = sec/60;
sec = sec-min*60;
QString secStr = sec < 10 ? "0"+QString::number(sec) : QString::number(sec);
return QString::number(min) + ":" + secStr;
}

View file

@ -15,6 +15,8 @@ class MusicModel : public QObject
Q_PROPERTY(bool pHasPrevious READ hasPrevious NOTIFY hasPreviousChanged)
Q_PROPERTY(bool pIsPlaying READ isPlaying NOTIFY isPlayingChanged)
Q_PROPERTY(double pProgress READ getProgress NOTIFY progressChanged)
Q_PROPERTY(QString pMediaLength READ getMediaLength NOTIFY mediaLengthChanged)
Q_PROPERTY(QString pTime READ getTime NOTIFY progressChanged)
signals:
void navigateTo(NavigationItemModel *item);
@ -28,6 +30,7 @@ signals:
void hasNextChanged();
void isPlayingChanged();
void progressChanged();
void mediaLengthChanged();
public:
MusicModel(VlcInstance* instance, QObject *parent = Q_NULLPTR);
@ -45,11 +48,14 @@ public:
VlcMediaList *getMedia();
bool isPlaying();
bool hasNext();
bool hasPrevious();
bool isPlaying() const;
bool hasNext() const;
bool hasPrevious() const;
double getProgress();
double getProgress() const;
QString getMediaLength();
QString getTime();
public slots:
void onNextMediaSet(VlcMedia* media);
@ -57,10 +63,14 @@ public slots:
void onLengthChanged(int length);
private:
void reset();
QString timeToString(int time);
bool mIsPlaying = false;
bool mHasNext = false;
bool mHasPrevious = false;
int mCurrentMediaItemLength = 0;
int mCurrentTime = 0;
double mCurrentMediaItemProgress = 0;
NavigationItemModel* mCurrentItem = Q_NULLPTR;
VlcMediaList* mMedia = Q_NULLPTR;