#pragma once #include "../PrintableModel.h" #include "CheckableTest.h" #include #include class CheckableTestModel : public QAbstractTableModel, protected PrintableModel { Q_OBJECT protected: CheckableTests m_tests; public: CheckableTestModel(QObject *parent); int rowCount(const QModelIndex &parent = QModelIndex()) const override; int columnCount(const QModelIndex &parent = QModelIndex()) const override; QVariant data( const QModelIndex &index, int role = Qt::DisplayRole) const override; Qt::ItemFlags flags(const QModelIndex &index) const override; bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole) override; QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const override; unsigned int getPoints() const; void printTo(QTextCursor &cursor) const override; protected: virtual bool isValidIndex(const QModelIndex &index) const; virtual std::string getName() const = 0; virtual void printTableTo(QTextCursor &cursor) const; virtual void printSummaryTo(QTextCursor &cursor) const; private: CheckableItems &getItems(const QModelIndex &index); const CheckableItems &getItems(const QModelIndex &index) const; CheckableItem &getItem(const QModelIndex &index); const CheckableItem &getItem(const QModelIndex &index) const; };