102 lines
1.9 KiB
C++
102 lines
1.9 KiB
C++
#include "NavigationItemModel.h"
|
|
|
|
#include <QDir>
|
|
#include <QFile>
|
|
|
|
NavigationItemModel::NavigationItemModel(QObject *parent) : QObject(parent),
|
|
mImageSource("qrc:/default_image"),
|
|
mParentItem(qobject_cast<NavigationItemModel*>(parent))
|
|
{
|
|
}
|
|
|
|
QString NavigationItemModel::getImageSource() const
|
|
{
|
|
return mImageSource;
|
|
}
|
|
|
|
QString NavigationItemModel::getPath() const
|
|
{
|
|
return mPath;
|
|
}
|
|
|
|
void NavigationItemModel::onClicked()
|
|
{
|
|
emit clicked();
|
|
}
|
|
|
|
bool NavigationItemModel::setPath(const QString &path)
|
|
{
|
|
auto dir = QDir(path);
|
|
if(!dir.exists()) return false;
|
|
|
|
mPath = path;
|
|
|
|
/// @todo move default image to qrc
|
|
auto source = dir.filePath("image.jpg");
|
|
if(QFile(source).exists())
|
|
mImageSource = "file:///" + source;
|
|
else
|
|
mImageSource = "file:///home/ar/source/LenaPi/pics/benjamin.jpeg";
|
|
|
|
emit imageSourceChanged();
|
|
|
|
return true;
|
|
}
|
|
|
|
bool NavigationItemModel::isCircleDelegate() const
|
|
{
|
|
return mIsCircleDelegate;
|
|
}
|
|
|
|
void NavigationItemModel::setCircleDelegate(bool value)
|
|
{
|
|
if(value != mIsCircleDelegate){
|
|
mIsCircleDelegate = value;
|
|
emit isCircleDelegateChanged();
|
|
}
|
|
}
|
|
|
|
bool NavigationItemModel::isRoot() const
|
|
{
|
|
return !mParentItem;
|
|
}
|
|
|
|
NavigationItemModel *NavigationItemModel::getParentItem()
|
|
{
|
|
return mParentItem;
|
|
}
|
|
|
|
bool NavigationItemModel::hasChildren() const
|
|
{
|
|
return !mChildren.isEmpty();
|
|
}
|
|
|
|
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);
|
|
mChildren.append(item);
|
|
}
|
|
|
|
void NavigationItemModel::clearChildren()
|
|
{
|
|
for(const auto& child : mChildren){
|
|
child->deleteLater();
|
|
}
|
|
mChildren.clear();
|
|
}
|
|
|