#ifndef INDEXMODEL_H #define INDEXMODEL_H #include #include "PgClass.h" #include "PgIndex.h" #include #include class PgDatabaseCatalog; class IndexModel: public QAbstractTableModel { Q_OBJECT public: using QAbstractTableModel::QAbstractTableModel; enum e_Columns : int { TypeCol, /// primary/unique/normal NameCol, /// ColumnsCol, /// ConditionCol, colCount }; QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const override; void setData(std::shared_ptr cat, const PgClass &table); // Basic functionality: int rowCount(const QModelIndex &parent = QModelIndex()) const override; int columnCount(const QModelIndex &parent = QModelIndex()) const override; virtual QVariant data(const QModelIndex &index, int role) const override; PgIndex getIndex(int row) const { return m_indexes[row]; } protected: Oid getType(int column) const; QVariant getData(const QModelIndex &index) const; private: std::shared_ptr m_catalog; PgClass m_table; using t_Indexes = std::vector; t_Indexes m_indexes; }; #endif // INDEXMODEL_H