#ifndef NAMESPACEITEMMODEL_H #define NAMESPACEITEMMODEL_H #include #include "catalog/PgNamespace.h" #include #include namespace NamespaceItemModel_impl { class Node; class LeafNode; class GroupNode; } class PgNamespaceContainer; class NamespaceItemModel: public QAbstractItemModel { public: NamespaceItemModel(QObject *parent = 0); void init(std::shared_ptr ns); virtual QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const override; virtual QModelIndex parent(const QModelIndex &index) const override; virtual int rowCount(const QModelIndex &parent = QModelIndex()) const override; virtual int columnCount(const QModelIndex &parent = QModelIndex()) const override; virtual QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override; virtual bool setData(const QModelIndex &index, const QVariant &value, int role) override; virtual Qt::ItemFlags flags(const QModelIndex &index) const override; private: using GroupVec = std::vector>; GroupVec groups; }; #endif // NAMESPACEITEMMODEL_H