pgLab/pglab/NamespaceItemModel.h

42 lines
1.2 KiB
C
Raw Normal View History

#ifndef NAMESPACEITEMMODEL_H
#define NAMESPACEITEMMODEL_H
#include <QAbstractItemModel>
#include "PgNamespace.h"
#include <vector>
2017-12-29 09:48:33 +01:00
#include <iterator>
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<const PgNamespaceContainer> 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<std::shared_ptr<NamespaceItemModel_impl::GroupNode>>;
GroupVec groups;
};
#endif // NAMESPACEITEMMODEL_H