added backnavigation and qrc
This commit is contained in:
parent
0b9e8fa067
commit
a32fd01e81
15 changed files with 138 additions and 55 deletions
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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());
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue