added VlcMediaPlayer, still trouble with pulseAudio

This commit is contained in:
Anika Raemer 2018-10-30 17:11:48 +01:00
parent 6f5c9138a8
commit a4006ea015
7 changed files with 51 additions and 8 deletions

View file

@ -2,6 +2,7 @@ TEMPLATE = app
QT += qml quick QT += qml quick
CONFIG += c++11 CONFIG += c++11
LIBS += -lVLCQtCore -lVLCQtQml
SOURCES += main.cpp \ SOURCES += main.cpp \
models/NavigationListModel.cpp \ models/NavigationListModel.cpp \

View file

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE QtCreatorProject> <!DOCTYPE QtCreatorProject>
<!-- Written by QtCreator 4.2.0, 2018-10-19T13:26:21. --> <!-- Written by QtCreator 4.2.0, 2018-10-24T21:05:48. -->
<qtcreator> <qtcreator>
<data> <data>
<variable>EnvironmentId</variable> <variable>EnvironmentId</variable>

View file

@ -1,16 +1,30 @@
#include "MusicController.h" #include "MusicController.h"
#include <QDebug>
#include <models/MusicModel.h> #include <models/MusicModel.h>
MusicController::MusicController(QObject *parent) : QObject(parent), MusicController::MusicController(QObject *parent) : QObject(parent)
mModel(new MusicModel(this))
{ {
mVlc = new VlcInstance(VlcCommon::args(), this);
mModel = new MusicModel(mVlc, this);
mPlayer = new VlcMediaPlayer(mVlc);
connect(mPlayer, &VlcMediaPlayer::error, [this](){
qDebug() << "playerError";
});
connect(mModel, &MusicModel::navigateTo, this, &MusicController::navigateTo); connect(mModel, &MusicModel::navigateTo, this, &MusicController::navigateTo);
} }
MusicController::~MusicController()
{
mPlayer->deleteLater();
}
void MusicController::initPlayer(NavigationItemModel *item) void MusicController::initPlayer(NavigationItemModel *item)
{ {
mModel->init(item); mModel->init(item);
mPlayer->open(mModel->getMedia());
} }
void MusicController::setContext(QQmlContext *context) void MusicController::setContext(QQmlContext *context)

View file

@ -5,6 +5,10 @@
#include <QQmlContext> #include <QQmlContext>
#include <models/NavigationItemModel.h> #include <models/NavigationItemModel.h>
#include <VLCQtCore/Common.h>
#include <VLCQtCore/Instance.h>
#include <VLCQtCore/MediaPlayer.h>
class MusicModel; class MusicModel;
class MusicController : public QObject class MusicController : public QObject
@ -16,6 +20,7 @@ signals:
public: public:
MusicController(QObject *parent = Q_NULLPTR); MusicController(QObject *parent = Q_NULLPTR);
~MusicController();
void initPlayer(NavigationItemModel* item); void initPlayer(NavigationItemModel* item);
@ -24,9 +29,12 @@ public:
private: private:
void setContextProperties(); void setContextProperties();
QQmlContext* mContext; QQmlContext* mContext = Q_NULLPTR;
MusicModel* mModel; MusicModel* mModel;
VlcInstance* mVlc;
VlcMediaPlayer* mPlayer;
}; };
#endif // MUSICCONTROLLER_H #endif // MUSICCONTROLLER_H

View file

@ -1,12 +1,10 @@
#include <QGuiApplication> #include <QGuiApplication>
#include <QQmlApplicationEngine> #include <QQmlApplicationEngine>
#include "controllers/NavigationController.h" #include "controllers/NavigationController.h"
int main(int argc, char *argv[]) int main(int argc, char *argv[])
{ {
QGuiApplication app(argc, argv); QGuiApplication app(argc, argv);
QQmlApplicationEngine engine; QQmlApplicationEngine engine;
/// @todo add config parser to determine root path. /// @todo add config parser to determine root path.

View file

@ -1,14 +1,25 @@
#include "MusicModel.h" #include "MusicModel.h"
MusicModel::MusicModel(QObject *parent) : QObject(parent) MusicModel::MusicModel(VlcInstance* instance, QObject *parent) : QObject(parent),
mVlc(instance)
{ {
} }
MusicModel::~MusicModel()
{
if(mMedia)
mMedia->deleteLater();
}
void MusicModel::init(NavigationItemModel *item) void MusicModel::init(NavigationItemModel *item)
{ {
mCurrentItem = item; mCurrentItem = item;
emit currentItemChanged(); emit currentItemChanged();
if(mMedia)
delete mMedia;
mMedia = new VlcMedia(mCurrentItem->getPath(), true, mVlc);
} }
void MusicModel::navigateBack() void MusicModel::navigateBack()
@ -26,6 +37,11 @@ NavigationItemModel *MusicModel::getCurrentItem()
return mCurrentItem; return mCurrentItem;
} }
VlcMedia *MusicModel::getMedia()
{
return mMedia;
}
bool MusicModel::isPlaying() bool MusicModel::isPlaying()
{ {
return mIsPlaying; return mIsPlaying;

View file

@ -4,6 +4,7 @@
#include <QObject> #include <QObject>
#include <models/NavigationItemModel.h> #include <models/NavigationItemModel.h>
#include <VLCQtCore/Media.h>
class MusicModel : public QObject class MusicModel : public QObject
{ {
@ -16,7 +17,8 @@ signals:
void currentItemChanged(); void currentItemChanged();
public: public:
MusicModel(QObject *parent = Q_NULLPTR); MusicModel(VlcInstance* instance, QObject *parent = Q_NULLPTR);
~MusicModel();
void init(NavigationItemModel* item); void init(NavigationItemModel* item);
@ -25,11 +27,15 @@ public:
NavigationItemModel *getCurrentItem(); NavigationItemModel *getCurrentItem();
VlcMedia *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;
VlcInstance* mVlc;
}; };
#endif // MUSICMODEL_H #endif // MUSICMODEL_H