45 lines
960 B
C++
45 lines
960 B
C++
#include "NavigationListModel.h"
|
|
#include "NavigationItemModel.h"
|
|
|
|
|
|
QList<QObject*> NavigationListModel::getModelItems()
|
|
{
|
|
return mItems;
|
|
}
|
|
|
|
void NavigationListModel::setModelItems(const QList<NavigationItemModel*>& list)
|
|
{
|
|
mItems.clear();
|
|
for(const auto& item : list){
|
|
mItems.append(item);
|
|
}
|
|
|
|
if(mItems.isEmpty()){
|
|
mIsBackVisible = false;
|
|
} else{
|
|
mIsBackVisible = !list.at(0)->getParentItem()->isRoot();
|
|
}
|
|
|
|
emit modelItemsChanged();
|
|
}
|
|
|
|
bool NavigationListModel::isBackVisible()
|
|
{
|
|
return mIsBackVisible;
|
|
}
|
|
|
|
void NavigationListModel::navigateTo(NavigationItemModel *item)
|
|
{
|
|
if(!item) return;
|
|
setModelItems(item->getSiblings());
|
|
}
|
|
|
|
void NavigationListModel::navigateBack()
|
|
{
|
|
if(!mIsBackVisible || mItems.isEmpty()) return;
|
|
|
|
auto item = qobject_cast<NavigationItemModel*>(mItems.at(0));
|
|
if(!item || item->getParentItem()->isRoot()) return;
|
|
|
|
navigateTo(item->getParentItem());
|
|
}
|