85 lines
2.3 KiB
C++
85 lines
2.3 KiB
C++
#ifndef MUSICMODEL_H
|
|
#define MUSICMODEL_H
|
|
|
|
#include <QObject>
|
|
|
|
#include <models/NavigationItemModel.h>
|
|
#include <VLCQtCore/MediaList.h>
|
|
|
|
class MusicModel : public QObject
|
|
{
|
|
Q_OBJECT
|
|
|
|
Q_PROPERTY(QObject* pCurrentItem READ getCurrentItem NOTIFY currentItemChanged)
|
|
Q_PROPERTY(bool pHasNext READ hasNext NOTIFY hasNextChanged)
|
|
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)
|
|
Q_PROPERTY(QString pMediaTitle READ getMediaTitle NOTIFY mediaTitleChanged)
|
|
|
|
signals:
|
|
void navigateTo(NavigationItemModel *item);
|
|
void currentItemChanged();
|
|
void play();
|
|
void pause();
|
|
void stop();
|
|
void previous();
|
|
void next();
|
|
void hasPreviousChanged();
|
|
void hasNextChanged();
|
|
void isPlayingChanged();
|
|
void progressChanged();
|
|
void mediaLengthChanged();
|
|
void mediaTitleChanged();
|
|
|
|
public:
|
|
MusicModel(VlcInstance* instance, QObject *parent = Q_NULLPTR);
|
|
~MusicModel();
|
|
|
|
void init(NavigationItemModel* item);
|
|
|
|
Q_INVOKABLE void navigateBack();
|
|
Q_INVOKABLE void playPause();
|
|
Q_INVOKABLE void stopMusic();
|
|
Q_INVOKABLE void playNext();
|
|
Q_INVOKABLE void playPrevious();
|
|
|
|
NavigationItemModel *getCurrentItem();
|
|
|
|
VlcMediaList *getMedia();
|
|
|
|
bool isPlaying() const;
|
|
bool hasNext() const;
|
|
bool hasPrevious() const;
|
|
|
|
double getProgress() const;
|
|
|
|
QString getMediaTitle() const;
|
|
QString getMediaLength();
|
|
QString getTime();
|
|
|
|
public slots:
|
|
void onNextMediaSet(VlcMedia* media);
|
|
void onTimeChanged(int time);
|
|
void onLengthChanged(int length);
|
|
|
|
private:
|
|
void reset();
|
|
QString timeToString(int time);
|
|
void setMediaTitle(VlcMedia* media);
|
|
|
|
bool mIsPlaying = false;
|
|
bool mHasNext = false;
|
|
bool mHasPrevious = false;
|
|
int mCurrentMediaItemLength = 0;
|
|
int mCurrentTime = 0;
|
|
double mCurrentMediaItemProgress = 0;
|
|
QString mMediaTitle = QString("");
|
|
NavigationItemModel* mCurrentItem = Q_NULLPTR;
|
|
VlcMediaList* mMedia = Q_NULLPTR;
|
|
VlcInstance* mVlc;
|
|
};
|
|
|
|
#endif // MUSICMODEL_H
|