connected vlc to play audio

This commit is contained in:
Anika Raemer 2018-11-27 22:05:56 +01:00
parent 20094b0cf2
commit 71f7652a8a
4 changed files with 44 additions and 19 deletions

View file

@ -2,19 +2,20 @@
#include <QDebug> #include <QDebug>
#include <models/MusicModel.h> #include <models/MusicModel.h>
#include <VLCQtCore/Audio.h> #include <VLCQtCore/MediaPlayer.h>
MusicController::MusicController(QObject *parent) : QObject(parent) MusicController::MusicController(QObject *parent) : QObject(parent)
{ {
mVlc = new VlcInstance(VlcCommon::args(), this); mVlc = new VlcInstance(VlcCommon::args(), this);
mModel = new MusicModel(mVlc, this); mModel = new MusicModel(mVlc, this);
mPlayer = new VlcMediaPlayer(mVlc); mPlayer = new VlcMediaListPlayer(mVlc);
connect(mPlayer, &VlcMediaPlayer::error, [this](){
qDebug() << "playerError";
});
connect(mModel, &MusicModel::navigateTo, this, &MusicController::navigateTo); 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() MusicController::~MusicController()
@ -25,7 +26,8 @@ MusicController::~MusicController()
void MusicController::initPlayer(NavigationItemModel *item) void MusicController::initPlayer(NavigationItemModel *item)
{ {
mModel->init(item); mModel->init(item);
mPlayer->open(mModel->getMedia()); mPlayer->stop();
mPlayer->setMediaList(mModel->getMedia());
} }
void MusicController::setContext(QQmlContext *context) void MusicController::setContext(QQmlContext *context)

View file

@ -7,7 +7,7 @@
#include <VLCQtCore/Common.h> #include <VLCQtCore/Common.h>
#include <VLCQtCore/Instance.h> #include <VLCQtCore/Instance.h>
#include <VLCQtCore/MediaPlayer.h> #include <VLCQtCore/MediaListPlayer.h>
class MusicModel; class MusicModel;
@ -34,7 +34,7 @@ private:
MusicModel* mModel; MusicModel* mModel;
VlcInstance* mVlc; VlcInstance* mVlc;
VlcMediaPlayer* mPlayer; VlcMediaListPlayer* mPlayer;
}; };
#endif // MUSICCONTROLLER_H #endif // MUSICCONTROLLER_H

View file

@ -1,15 +1,18 @@
#include "MusicModel.h" #include "MusicModel.h"
#include <QDir>
#include <QDebug>
#include <VLCQtCore/Media.h>
MusicModel::MusicModel(VlcInstance* instance, QObject *parent) : QObject(parent), MusicModel::MusicModel(VlcInstance* instance, QObject *parent) : QObject(parent),
mVlc(instance) mVlc(instance)//, mMedia(new VlcMediaList(instance))
{ {
} }
MusicModel::~MusicModel() MusicModel::~MusicModel()
{ {
if(mMedia) //if(mMedia)
mMedia->deleteLater(); // mMedia->deleteLater();
} }
void MusicModel::init(NavigationItemModel *item) void MusicModel::init(NavigationItemModel *item)
@ -17,9 +20,23 @@ void MusicModel::init(NavigationItemModel *item)
mCurrentItem = item; mCurrentItem = item;
emit currentItemChanged(); emit currentItemChanged();
if(mMedia) /*for(int i = 0; i < mMedia->count(); i++){
delete mMedia; mMedia->removeMedia(i);
mMedia = new VlcMedia(mCurrentItem->getPath()+"/Pink Panther.mp3", true, mVlc); }
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() void MusicModel::navigateBack()
@ -30,6 +47,10 @@ void MusicModel::navigateBack()
void MusicModel::playPause() void MusicModel::playPause()
{ {
mIsPlaying = !mIsPlaying; mIsPlaying = !mIsPlaying;
if(mIsPlaying)
emit play();
else
emit pause();
} }
NavigationItemModel *MusicModel::getCurrentItem() NavigationItemModel *MusicModel::getCurrentItem()
@ -37,7 +58,7 @@ NavigationItemModel *MusicModel::getCurrentItem()
return mCurrentItem; return mCurrentItem;
} }
VlcMedia *MusicModel::getMedia() VlcMediaList *MusicModel::getMedia()
{ {
return mMedia; return mMedia;
} }

View file

@ -4,7 +4,7 @@
#include <QObject> #include <QObject>
#include <models/NavigationItemModel.h> #include <models/NavigationItemModel.h>
#include <VLCQtCore/Media.h> #include <VLCQtCore/MediaList.h>
class MusicModel : public QObject class MusicModel : public QObject
{ {
@ -15,6 +15,8 @@ class MusicModel : public QObject
signals: signals:
void navigateTo(NavigationItemModel *item); void navigateTo(NavigationItemModel *item);
void currentItemChanged(); void currentItemChanged();
void play();
void pause();
public: public:
MusicModel(VlcInstance* instance, QObject *parent = Q_NULLPTR); MusicModel(VlcInstance* instance, QObject *parent = Q_NULLPTR);
@ -27,14 +29,14 @@ public:
NavigationItemModel *getCurrentItem(); NavigationItemModel *getCurrentItem();
VlcMedia *getMedia(); VlcMediaList *getMedia();
bool isPlaying(); bool isPlaying();
private: private:
bool mIsPlaying = false; bool mIsPlaying = false;
NavigationItemModel* mCurrentItem = Q_NULLPTR; NavigationItemModel* mCurrentItem = Q_NULLPTR;
VlcMedia* mMedia = Q_NULLPTR; VlcMediaList* mMedia = Q_NULLPTR;
VlcInstance* mVlc; VlcInstance* mVlc;
}; };