56 lines
1.8 KiB
C++
56 lines
1.8 KiB
C++
#include "MusicController.h"
|
|
|
|
#include <QDebug>
|
|
#include <models/MusicModel.h>
|
|
#include <VLCQtCore/MediaPlayer.h>
|
|
|
|
MusicController::MusicController(QObject *parent) : QObject(parent)
|
|
{
|
|
mVlc = new VlcInstance(VlcCommon::args(), this);
|
|
mModel = new MusicModel(mVlc, this);
|
|
mPlayer = new VlcMediaListPlayer(mVlc);
|
|
|
|
connect(mModel, &MusicModel::navigateTo, this, &MusicController::navigateTo);
|
|
connect(mModel, &MusicModel::navigateTo, [this](NavigationItemModel*){
|
|
if(mModel->isPlaying()) mModel->playPause();
|
|
});
|
|
|
|
connect(mModel, &MusicModel::play, mPlayer, &VlcMediaListPlayer::play);
|
|
connect(mModel, &MusicModel::stop, mPlayer, &VlcMediaListPlayer::stop);
|
|
connect(mModel, &MusicModel::previous, mPlayer, &VlcMediaListPlayer::previous);
|
|
connect(mModel, &MusicModel::next, mPlayer, &VlcMediaListPlayer::next);
|
|
connect(mModel, &MusicModel::pause, mPlayer->mediaPlayer(), &VlcMediaPlayer::pause);
|
|
|
|
connect(mPlayer, SIGNAL(nextItemSet(VlcMedia*)), mModel, SLOT(onNextMediaSet(VlcMedia*)));
|
|
connect(mPlayer->mediaPlayer(), &VlcMediaPlayer::lengthChanged, mModel, &MusicModel::onLengthChanged);
|
|
connect(mPlayer->mediaPlayer(), &VlcMediaPlayer::timeChanged, mModel, &MusicModel::onTimeChanged);
|
|
}
|
|
|
|
MusicController::~MusicController()
|
|
{
|
|
mPlayer->deleteLater();
|
|
}
|
|
|
|
void MusicController::initPlayer(NavigationItemModel *item)
|
|
{
|
|
if(item != mModel->getCurrentItem()){
|
|
mPlayer->stop();
|
|
mModel->init(item);
|
|
}
|
|
if(!mIsMediaListSet){
|
|
mPlayer->setMediaList(mModel->getMedia());
|
|
mIsMediaListSet = true;
|
|
}
|
|
}
|
|
|
|
void MusicController::setContext(QQmlContext *context)
|
|
{
|
|
mContext = context;
|
|
setContextProperties();
|
|
}
|
|
|
|
void MusicController::setContextProperties()
|
|
{
|
|
if(!mContext) return;
|
|
mContext->setContextProperty("musicModel", mModel);
|
|
}
|