yacreader/YACReaderLibrary/db/folder_item.cpp
Luis Ángel San Martín 5aa02a19bb clang-format
2021-10-18 21:56:52 +02:00

101 lines
2.0 KiB
C++
Raw Blame History

#include <QStringList>
#include "folder_item.h"
#include "qnaturalsorting.h"
FolderItem::FolderItem(const QList<QVariant> &data, FolderItem *parent)
{
parentItem = parent;
itemData = data;
}
FolderItem::~FolderItem()
{
qDeleteAll(childItems);
}
void FolderItem::appendChild(FolderItem *item)
{
item->parentItem = this;
if (childItems.isEmpty())
childItems.append(item);
else {
FolderItem *last = childItems.back();
QString nameLast = last->data(1).toString(); // TODO usar info name si est<73> disponible, sino el nombre del fichero.....
QString nameCurrent = item->data(1).toString();
QList<FolderItem *>::iterator i;
i = childItems.end();
i--;
while (naturalSortLessThanCI(nameCurrent, nameLast) && i != childItems.begin()) {
i--;
nameLast = (*i)->data(1).toString();
}
if (!naturalSortLessThanCI(nameCurrent, nameLast)) // si se ha encontrado un elemento menor que current, se inserta justo despu<70>s
childItems.insert(++i, item);
else
childItems.insert(i, item);
}
// childItems.append(item);
}
FolderItem *FolderItem::child(int row)
{
return childItems.value(row);
}
int FolderItem::childCount() const
{
return childItems.count();
}
int FolderItem::columnCount() const
{
return itemData.count();
}
QVariant FolderItem::data(int column) const
{
return itemData.value(column);
}
void FolderItem::setData(int column, const QVariant &value)
{
itemData[column] = value;
}
void FolderItem::removeChild(int childIndex)
{
childItems.removeAt(childIndex);
}
void FolderItem::clearChildren()
{
qDeleteAll(childItems);
childItems.clear();
}
QList<FolderItem *> FolderItem::children()
{
return childItems;
}
FolderItem *FolderItem::parent()
{
return parentItem;
}
int FolderItem::row() const
{
if (parentItem)
return parentItem->childItems.indexOf(const_cast<FolderItem *>(this));
return 0;
}
QList<QVariant> FolderItem::getData() const
{
return itemData;
}