finished navigation including music player and navigate back
functionality
This commit is contained in:
parent
d6cb29ae7b
commit
6f5c9138a8
12 changed files with 213 additions and 11 deletions
26
LenaPi/controllers/MusicController.cpp
Normal file
26
LenaPi/controllers/MusicController.cpp
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
#include "MusicController.h"
|
||||
|
||||
#include <models/MusicModel.h>
|
||||
|
||||
MusicController::MusicController(QObject *parent) : QObject(parent),
|
||||
mModel(new MusicModel(this))
|
||||
{
|
||||
connect(mModel, &MusicModel::navigateTo, this, &MusicController::navigateTo);
|
||||
}
|
||||
|
||||
void MusicController::initPlayer(NavigationItemModel *item)
|
||||
{
|
||||
mModel->init(item);
|
||||
}
|
||||
|
||||
void MusicController::setContext(QQmlContext *context)
|
||||
{
|
||||
mContext = context;
|
||||
setContextProperties();
|
||||
}
|
||||
|
||||
void MusicController::setContextProperties()
|
||||
{
|
||||
if(!mContext) return;
|
||||
mContext->setContextProperty("musicModel", mModel);
|
||||
}
|
||||
32
LenaPi/controllers/MusicController.h
Normal file
32
LenaPi/controllers/MusicController.h
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
#ifndef MUSICCONTROLLER_H
|
||||
#define MUSICCONTROLLER_H
|
||||
|
||||
#include <QObject>
|
||||
#include <QQmlContext>
|
||||
#include <models/NavigationItemModel.h>
|
||||
|
||||
class MusicModel;
|
||||
|
||||
class MusicController : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
signals:
|
||||
void navigateTo(NavigationItemModel* item);
|
||||
|
||||
public:
|
||||
MusicController(QObject *parent = Q_NULLPTR);
|
||||
|
||||
void initPlayer(NavigationItemModel* item);
|
||||
|
||||
void setContext(QQmlContext* context);
|
||||
|
||||
private:
|
||||
void setContextProperties();
|
||||
|
||||
QQmlContext* mContext;
|
||||
|
||||
MusicModel* mModel;
|
||||
};
|
||||
|
||||
#endif // MUSICCONTROLLER_H
|
||||
|
|
@ -3,15 +3,21 @@
|
|||
#include <QDir>
|
||||
#include <QDebug>
|
||||
|
||||
#include "../models/NavigationItemModel.h"
|
||||
#include "../models/NavigationListModel.h"
|
||||
#include <models/NavigationItemModel.h>
|
||||
#include <models/NavigationListModel.h>
|
||||
#include <models/UiStateModel.h>
|
||||
#include <controllers/MusicController.h>
|
||||
|
||||
///@todo impelement reaction to item's clicked signal; implement back navigation
|
||||
NavigationController::NavigationController(QObject *parent) : QObject(parent),
|
||||
mRootItem(new NavigationItemModel(this)),
|
||||
mNavList(new NavigationListModel(this))
|
||||
mNavList(new NavigationListModel(this)),
|
||||
mUiState(new UiStateModel(this)),
|
||||
mMusicController(new MusicController(this))
|
||||
{
|
||||
|
||||
connect(mMusicController, &MusicController::navigateTo, [this](NavigationItemModel* item) {
|
||||
mUiState->showNavigation();
|
||||
mNavList->navigateTo(item);
|
||||
});
|
||||
}
|
||||
|
||||
void NavigationController::init(const QString &rootPath)
|
||||
|
|
@ -29,11 +35,14 @@ void NavigationController::setContext(QQmlContext *context)
|
|||
{
|
||||
mContext = context;
|
||||
setContextProperties();
|
||||
mMusicController->setContext(mContext);
|
||||
}
|
||||
|
||||
void NavigationController::setContextProperties()
|
||||
{
|
||||
if(!mContext) return;
|
||||
mContext->setContextProperty("navigationList", mNavList);
|
||||
mContext->setContextProperty("uiStateModel", mUiState);
|
||||
}
|
||||
|
||||
void NavigationController::add(const QString &path, NavigationItemModel *parentItem)
|
||||
|
|
@ -63,5 +72,8 @@ void NavigationController::onNavigationRequest()
|
|||
|
||||
if(item->hasChildren())
|
||||
mNavList->setModelItems(item->getChildren());
|
||||
///@todo else {mMusicController->initPlayer(item); mUiStateModel->showMusicPlayer();}
|
||||
else {
|
||||
mMusicController->initPlayer(item);
|
||||
mUiState->showMusicPlayer();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,6 +6,8 @@
|
|||
|
||||
class NavigationItemModel;
|
||||
class NavigationListModel;
|
||||
class UiStateModel;
|
||||
class MusicController;
|
||||
|
||||
class NavigationController : public QObject
|
||||
{
|
||||
|
|
@ -23,6 +25,10 @@ private:
|
|||
|
||||
NavigationItemModel* mRootItem;
|
||||
NavigationListModel* mNavList;
|
||||
|
||||
UiStateModel* mUiState;
|
||||
MusicController* mMusicController;
|
||||
|
||||
QString mRootPath = ".";
|
||||
|
||||
QQmlContext* mContext = Q_NULLPTR;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue