
#ifndef TREEITEM_H
#define TREEITEM_H

#include <QVariant>
#include <QVector>
#include <QIcon>

class TreeItem
{
public:
    explicit TreeItem(const QVector<QVariant> &data, TreeItem *parent = nullptr);
    ~TreeItem();

    TreeItem *child(int number);
    int childCount() const;
    int columnCount() const;
    QVariant data(int column) const;
    bool insertChildren(int position, int count, int columns);
    bool insertColumns(int position, int columns);
    TreeItem *parent();
    bool removeChildren(int position, int count);
    bool removeColumns(int position, int columns);
    int childNumber() const;
    bool setData(int column, const QVariant &value);

    void clear();
    void addChildren(TreeItem* item);

    QVariant getIcon(int column)
    {
        return QIcon(":/images/logo_256.png");
    }


    bool isChecked() const { return _checked; }
    void setChecked(bool check) { _checked = check; }
    bool checkable(int column) const
    {
        return true;
    }
//    bool TreeItem::checkable(int column) const
//    {
//        if (column != COLUMN_NAME) // 除第一列外，其他列不允许勾选
//        {
//            return false;
//        }
//        if(_type == PERSON) // 第一列中只允许"人口"勾选
//        {
//            return true;
//        }
//        return false;
//    }

    void setAttributes(QVariantMap attr);
    QVariantMap attributes();

private:
    QVector<TreeItem*> childItems;
    QVector<QVariant> itemData;
    TreeItem *parentItem;
    bool _checked;
    QVariantMap mAttributes;
};


#endif // TREEITEM_H
