From 71f7652a8acb49961e1177e2d76ea4e3d52c2dba Mon Sep 17 00:00:00 2001 From: Anika Raemer Date: Tue, 27 Nov 2018 22:05:56 +0100 Subject: [PATCH] connected vlc to play audio --- LenaPi/controllers/MusicController.cpp | 16 ++++++------ LenaPi/controllers/MusicController.h | 4 +-- LenaPi/models/MusicModel.cpp | 35 ++++++++++++++++++++------ LenaPi/models/MusicModel.h | 8 +++--- 4 files changed, 44 insertions(+), 19 deletions(-) diff --git a/LenaPi/controllers/MusicController.cpp b/LenaPi/controllers/MusicController.cpp index 2e9e9bc..f95fb65 100644 --- a/LenaPi/controllers/MusicController.cpp +++ b/LenaPi/controllers/MusicController.cpp @@ -2,19 +2,20 @@ #include #include -#include +#include 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"; - }); + mPlayer = new VlcMediaListPlayer(mVlc); connect(mModel, &MusicModel::navigateTo, this, &MusicController::navigateTo); + connect(mModel, &MusicModel::play, mPlayer, &VlcMediaListPlayer::play); + connect(mModel, &MusicModel::pause, mPlayer->mediaPlayer(), &VlcMediaPlayer::pause); + connect(mModel, &MusicModel::navigateTo, [this](NavigationItemModel*){ + if(mModel->isPlaying()) mModel->playPause(); + }); } MusicController::~MusicController() @@ -25,7 +26,8 @@ MusicController::~MusicController() void MusicController::initPlayer(NavigationItemModel *item) { mModel->init(item); - mPlayer->open(mModel->getMedia()); + mPlayer->stop(); + mPlayer->setMediaList(mModel->getMedia()); } void MusicController::setContext(QQmlContext *context) diff --git a/LenaPi/controllers/MusicController.h b/LenaPi/controllers/MusicController.h index 4c8d6cc..f0b0416 100644 --- a/LenaPi/controllers/MusicController.h +++ b/LenaPi/controllers/MusicController.h @@ -7,7 +7,7 @@ #include #include -#include +#include class MusicModel; @@ -34,7 +34,7 @@ private: MusicModel* mModel; VlcInstance* mVlc; - VlcMediaPlayer* mPlayer; + VlcMediaListPlayer* mPlayer; }; #endif // MUSICCONTROLLER_H diff --git a/LenaPi/models/MusicModel.cpp b/LenaPi/models/MusicModel.cpp index 6c10bb9..d9132f9 100644 --- a/LenaPi/models/MusicModel.cpp +++ b/LenaPi/models/MusicModel.cpp @@ -1,15 +1,18 @@ #include "MusicModel.h" +#include +#include +#include MusicModel::MusicModel(VlcInstance* instance, QObject *parent) : QObject(parent), - mVlc(instance) + mVlc(instance)//, mMedia(new VlcMediaList(instance)) { } MusicModel::~MusicModel() { - if(mMedia) - mMedia->deleteLater(); + //if(mMedia) + // mMedia->deleteLater(); } void MusicModel::init(NavigationItemModel *item) @@ -17,9 +20,23 @@ void MusicModel::init(NavigationItemModel *item) mCurrentItem = item; emit currentItemChanged(); - if(mMedia) - delete mMedia; - mMedia = new VlcMedia(mCurrentItem->getPath()+"/Pink Panther.mp3", true, mVlc); + /*for(int i = 0; i < mMedia->count(); i++){ + mMedia->removeMedia(i); + } + qDebug() << mMedia->count(); + */ + if(mMedia) delete mMedia; + mMedia = new VlcMediaList(mVlc); + + auto dir = QDir(mCurrentItem->getPath()); + if(!dir.exists()) return; + + auto fileNames = dir.entryList(QDir::Files); + for(auto file:fileNames){ + if(file.endsWith(".flac") || file.endsWith(".mp3")){ + mMedia->addMedia(new VlcMedia(dir.filePath(file), true, mVlc)); + } + } } void MusicModel::navigateBack() @@ -30,6 +47,10 @@ void MusicModel::navigateBack() void MusicModel::playPause() { mIsPlaying = !mIsPlaying; + if(mIsPlaying) + emit play(); + else + emit pause(); } NavigationItemModel *MusicModel::getCurrentItem() @@ -37,7 +58,7 @@ NavigationItemModel *MusicModel::getCurrentItem() return mCurrentItem; } -VlcMedia *MusicModel::getMedia() +VlcMediaList *MusicModel::getMedia() { return mMedia; } diff --git a/LenaPi/models/MusicModel.h b/LenaPi/models/MusicModel.h index 55944d9..9e12763 100644 --- a/LenaPi/models/MusicModel.h +++ b/LenaPi/models/MusicModel.h @@ -4,7 +4,7 @@ #include #include -#include +#include class MusicModel : public QObject { @@ -15,6 +15,8 @@ class MusicModel : public QObject signals: void navigateTo(NavigationItemModel *item); void currentItemChanged(); + void play(); + void pause(); public: MusicModel(VlcInstance* instance, QObject *parent = Q_NULLPTR); @@ -27,14 +29,14 @@ public: NavigationItemModel *getCurrentItem(); - VlcMedia *getMedia(); + VlcMediaList *getMedia(); bool isPlaying(); private: bool mIsPlaying = false; NavigationItemModel* mCurrentItem = Q_NULLPTR; - VlcMedia* mMedia = Q_NULLPTR; + VlcMediaList* mMedia = Q_NULLPTR; VlcInstance* mVlc; };