added backnavigation and qrc

This commit is contained in:
Anika Raemer 2018-10-19 22:01:14 +02:00
parent 0b9e8fa067
commit a32fd01e81
15 changed files with 138 additions and 55 deletions

View file

@ -3,9 +3,10 @@
#include <QDir>
#include <QFile>
NavigationItemModel::NavigationItemModel(QObject *parent) : QObject(parent)
NavigationItemModel::NavigationItemModel(QObject *parent) : QObject(parent),
mImageSource("qrc:/default_image"),
mParentItem(qobject_cast<NavigationItemModel*>(parent))
{
///@todo init imageSource with defaul image from qrc
}
QString NavigationItemModel::getImageSource() const
@ -57,7 +58,7 @@ void NavigationItemModel::setCircleDelegate(bool value)
bool NavigationItemModel::isRoot() const
{
return mParentItem;
return !mParentItem;
}
NavigationItemModel *NavigationItemModel::getParentItem()
@ -75,6 +76,16 @@ QList<NavigationItemModel *> NavigationItemModel::getChildren()
return mChildren;
}
QList<NavigationItemModel *> NavigationItemModel::getSiblings()
{
if(isRoot()){
return QList<NavigationItemModel*>();
} else{
return mParentItem->getChildren();
}
}
void NavigationItemModel::appendChild(NavigationItemModel *item)
{
item->setParent(this);

View file

@ -32,6 +32,8 @@ public:
bool hasChildren() const;
QList<NavigationItemModel *> getChildren();
QList<NavigationItemModel *> getSiblings();
void appendChild(NavigationItemModel* item);
void clearChildren();
@ -43,7 +45,7 @@ private:
bool mIsCircleDelegate = false;
QList<NavigationItemModel*> mChildren = QList<NavigationItemModel*>();
NavigationItemModel* mParentItem = nullptr;
NavigationItemModel* mParentItem;
};
#endif // NAVIGATIONITEMMODEL_H

View file

@ -18,5 +18,27 @@ void NavigationListModel::setModelItems(QList<NavigationItemModel *> list)
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::navigateBack()
{
if(!mIsBackVisible || mItems.isEmpty()) return;
auto item = qobject_cast<NavigationItemModel*>(mItems.at(0));
if(!item || item->getParentItem()->isRoot()) return;
setModelItems(item->getParentItem()->getSiblings());
}

View file

@ -9,6 +9,7 @@ class NavigationListModel : public QObject
{
Q_OBJECT
Q_PROPERTY(QList<QObject*> pModelItems READ getModelItems NOTIFY modelItemsChanged)
Q_PROPERTY(bool pIsBackVisible READ isBackVisible NOTIFY modelItemsChanged)
signals:
void modelItemsChanged();
@ -19,8 +20,13 @@ public:
QList<QObject*> getModelItems();
void setModelItems(QList<NavigationItemModel*> list);
bool isBackVisible();
Q_INVOKABLE void navigateBack();
private:
QList<QObject*> mItems;
bool mIsBackVisible = false;
};
#endif // NAVIGATIONLISTMODEL_H