#ifndef MUSICMODEL_H #define MUSICMODEL_H #include #include #include 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) 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(); 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(); bool hasNext(); bool hasPrevious(); double getProgress(); public slots: void onNextMediaSet(VlcMedia* media); void onTimeChanged(int time); void onLengthChanged(int length); private: bool mIsPlaying = false; bool mHasNext = false; bool mHasPrevious = false; int mCurrentMediaItemLength = 0; double mCurrentMediaItemProgress = 0; NavigationItemModel* mCurrentItem = Q_NULLPTR; VlcMediaList* mMedia = Q_NULLPTR; VlcInstance* mVlc; }; #endif // MUSICMODEL_H