From a4006ea015e427fd121a5f0afc845d241ef07281 Mon Sep 17 00:00:00 2001 From: Anika Raemer Date: Tue, 30 Oct 2018 17:11:48 +0100 Subject: [PATCH] added VlcMediaPlayer, still trouble with pulseAudio --- LenaPi/LenaPi.pro | 1 + LenaPi/LenaPi.pro.user | 2 +- LenaPi/controllers/MusicController.cpp | 18 ++++++++++++++++-- LenaPi/controllers/MusicController.h | 10 +++++++++- LenaPi/main.cpp | 2 -- LenaPi/models/MusicModel.cpp | 18 +++++++++++++++++- LenaPi/models/MusicModel.h | 8 +++++++- 7 files changed, 51 insertions(+), 8 deletions(-) diff --git a/LenaPi/LenaPi.pro b/LenaPi/LenaPi.pro index a043211..b0eff75 100644 --- a/LenaPi/LenaPi.pro +++ b/LenaPi/LenaPi.pro @@ -2,6 +2,7 @@ TEMPLATE = app QT += qml quick CONFIG += c++11 +LIBS += -lVLCQtCore -lVLCQtQml SOURCES += main.cpp \ models/NavigationListModel.cpp \ diff --git a/LenaPi/LenaPi.pro.user b/LenaPi/LenaPi.pro.user index 4953b64..47a5b61 100644 --- a/LenaPi/LenaPi.pro.user +++ b/LenaPi/LenaPi.pro.user @@ -1,6 +1,6 @@ - + EnvironmentId diff --git a/LenaPi/controllers/MusicController.cpp b/LenaPi/controllers/MusicController.cpp index 1a545b6..fd897cc 100644 --- a/LenaPi/controllers/MusicController.cpp +++ b/LenaPi/controllers/MusicController.cpp @@ -1,16 +1,30 @@ #include "MusicController.h" +#include #include -MusicController::MusicController(QObject *parent) : QObject(parent), - mModel(new MusicModel(this)) +MusicController::MusicController(QObject *parent) : QObject(parent) { + mVlc = new VlcInstance(VlcCommon::args(), this); + mModel = new MusicModel(mVlc, this); + mPlayer = new VlcMediaPlayer(mVlc); + + connect(mPlayer, &VlcMediaPlayer::error, [this](){ + qDebug() << "playerError"; + }); + connect(mModel, &MusicModel::navigateTo, this, &MusicController::navigateTo); } +MusicController::~MusicController() +{ + mPlayer->deleteLater(); +} + void MusicController::initPlayer(NavigationItemModel *item) { mModel->init(item); + mPlayer->open(mModel->getMedia()); } void MusicController::setContext(QQmlContext *context) diff --git a/LenaPi/controllers/MusicController.h b/LenaPi/controllers/MusicController.h index 7e456b0..4c8d6cc 100644 --- a/LenaPi/controllers/MusicController.h +++ b/LenaPi/controllers/MusicController.h @@ -5,6 +5,10 @@ #include #include +#include +#include +#include + class MusicModel; class MusicController : public QObject @@ -16,6 +20,7 @@ signals: public: MusicController(QObject *parent = Q_NULLPTR); + ~MusicController(); void initPlayer(NavigationItemModel* item); @@ -24,9 +29,12 @@ public: private: void setContextProperties(); - QQmlContext* mContext; + QQmlContext* mContext = Q_NULLPTR; MusicModel* mModel; + + VlcInstance* mVlc; + VlcMediaPlayer* mPlayer; }; #endif // MUSICCONTROLLER_H diff --git a/LenaPi/main.cpp b/LenaPi/main.cpp index 4bd9a40..1cbcbff 100644 --- a/LenaPi/main.cpp +++ b/LenaPi/main.cpp @@ -1,12 +1,10 @@ #include #include - #include "controllers/NavigationController.h" int main(int argc, char *argv[]) { QGuiApplication app(argc, argv); - QQmlApplicationEngine engine; /// @todo add config parser to determine root path. diff --git a/LenaPi/models/MusicModel.cpp b/LenaPi/models/MusicModel.cpp index 8dc6652..0311a1d 100644 --- a/LenaPi/models/MusicModel.cpp +++ b/LenaPi/models/MusicModel.cpp @@ -1,14 +1,25 @@ #include "MusicModel.h" -MusicModel::MusicModel(QObject *parent) : QObject(parent) +MusicModel::MusicModel(VlcInstance* instance, QObject *parent) : QObject(parent), + mVlc(instance) { } +MusicModel::~MusicModel() +{ + if(mMedia) + mMedia->deleteLater(); +} + void MusicModel::init(NavigationItemModel *item) { mCurrentItem = item; emit currentItemChanged(); + + if(mMedia) + delete mMedia; + mMedia = new VlcMedia(mCurrentItem->getPath(), true, mVlc); } void MusicModel::navigateBack() @@ -26,6 +37,11 @@ NavigationItemModel *MusicModel::getCurrentItem() return mCurrentItem; } +VlcMedia *MusicModel::getMedia() +{ + return mMedia; +} + bool MusicModel::isPlaying() { return mIsPlaying; diff --git a/LenaPi/models/MusicModel.h b/LenaPi/models/MusicModel.h index 9017625..55944d9 100644 --- a/LenaPi/models/MusicModel.h +++ b/LenaPi/models/MusicModel.h @@ -4,6 +4,7 @@ #include #include +#include class MusicModel : public QObject { @@ -16,7 +17,8 @@ signals: void currentItemChanged(); public: - MusicModel(QObject *parent = Q_NULLPTR); + MusicModel(VlcInstance* instance, QObject *parent = Q_NULLPTR); + ~MusicModel(); void init(NavigationItemModel* item); @@ -25,11 +27,15 @@ public: NavigationItemModel *getCurrentItem(); + VlcMedia *getMedia(); + bool isPlaying(); private: bool mIsPlaying = false; NavigationItemModel* mCurrentItem = Q_NULLPTR; + VlcMedia* mMedia = Q_NULLPTR; + VlcInstance* mVlc; }; #endif // MUSICMODEL_H