lena_pi/LenaPi/controllers/MusicController.cpp
Anika Raemer a29e8d7a64 navigation behaviour update:
when navigating from a selected item and choosing it again without
choosing a different item in between start from where left instead of
beginning
2018-12-05 11:29:55 +01:00

51 lines
1.5 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::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(mModel, &MusicModel::navigateTo, [this](NavigationItemModel*){
if(mModel->isPlaying()) mModel->playPause();
});
}
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);
}