lena_pi/LenaPi/models/NavigationItemModel.cpp
2018-11-05 17:34:52 +01:00

93 lines
1.7 KiB
C++

#include "NavigationItemModel.h"
#include <QDir>
#include <QFile>
NavigationItemModel::NavigationItemModel(QObject *parent) : QObject(parent),
mImageSource("qrc:/default_image"),
mParentItem(qobject_cast<NavigationItemModel*>(parent))
{
qRegisterMetaType<NavigationItemModel*>("NavigationItemModel*");
}
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;
emit imageSourceChanged();
}
return true;
}
bool NavigationItemModel::isCircleDelegate() const
{
return hasChildren();
}
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();
}