finished navigation including music player and navigate back

functionality
This commit is contained in:
Anika Raemer 2018-10-23 21:26:29 +02:00
parent d6cb29ae7b
commit 6f5c9138a8
12 changed files with 213 additions and 11 deletions

View 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);
}

View 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

View file

@ -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();
}
}

View file

@ -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;