lena_pi/LenaPi/controllers/MusicController.cpp
Anika Raemer 8a8abd6c76 added EnergySaver intended to handle shutdown.
Moved timer from MouseEventSpy to EnergySaver.
Connected MouseEventSpy and MusicController to EnergySaver.
2019-04-04 12:21:41 +02:00

59 lines
1.9 KiB
C++

#include "MusicController.h"
#include <QDebug>
#include <models/MusicModel.h>
#include <VLCQtCore/MediaPlayer.h>
#include "EnergySaver.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);
connect(mPlayer->mediaPlayer(), &VlcMediaPlayer::timeChanged, EnergySaver::instance(), &EnergySaver::restartTimer);
}
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);
}