#ifndef CONTAINERS_VIEW_H #define CONTAINERS_VIEW_H #include "ui_containers_view.h" #include #include #include #include #include "piqt.h" #include "piintrospection_containers_p.h" class ContainersModel: public QAbstractItemModel { Q_OBJECT public: ContainersModel(); void update(const PIMap & td, const PIMap & tn); void clear(); int rowCount(const QModelIndex & parent = QModelIndex()) const override; int columnCount(const QModelIndex & parent = QModelIndex()) const override; QModelIndex parent(const QModelIndex & child) const override {return QModelIndex();} QModelIndex index(int row, int column, const QModelIndex & parent = QModelIndex()) const override; bool hasChildren(const QModelIndex & parent = QModelIndex()) const override; QVariant headerData(int section, Qt::Orientation orientation, int role) const override; QVariant data(const QModelIndex & index, int role) const override; Qt::ItemFlags flags(const QModelIndex & index) const override; protected: PIMap typedata, prev_typedata; PIMap typenames; PIVector typeids; PIVector all, prev_all; bool mode_changes; public slots: void setChangesMode(bool yes); }; class ContainersDelegate: public QStyledItemDelegate { Q_OBJECT public: ContainersDelegate(QAbstractItemModel * m) {model = m;} void paint(QPainter *painter, const QStyleOptionViewItem & option, const QModelIndex &index) const override; QAbstractItemModel * model; }; class ContainersView: public QWidget, private Ui::ContainersView { Q_OBJECT public: ContainersView(QWidget * parent = 0); ~ContainersView(); void showContainers(const PIMap & data, const PIMap & typenames); void clear(); protected: void changeEvent(QEvent * e); ContainersModel * model; private slots: public slots: }; #endif // CONTAINERS_VIEW_H