/** * @RDE_HEADER@ * ExerciseManangement - Exercise Phase Overview Model * $Id$ * $HeadURL$ * $Author$ * Created by Philipp Dassow, SLS1, 2017-04-11 */ #pragma once #include #include #include #include namespace ExerciseManagement { // -------------------------------------------------------- // Exercise Phase Model // -------------------------------------------------------- class ExercisePhaseModel final : public LtsWidgets::LtsAbstractTableModel { Q_OBJECT public: enum Columns { Name, Start, End, Description, ExerciseId }; explicit ExercisePhaseModel(QObject *parent = nullptr); bool initModel(int exerciseId, const std::shared_ptr &dtc); QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override final; protected: bool isFiltered(const ExercisePhase &data, DataModification modType) const override { if (data.exerciseId() != m_exerciseId) return true; return LtsWidgets::LtsAbstractTableModel::isFiltered(data, modType); } private: int m_exerciseId{0}; std::shared_ptr m_exmDtc; LOGGER_T m_logger; friend class ExercisePhaseProxyModel; }; class ExercisePhaseProxyModel final : public LtsWidgets::LtsColumnFilterProxyModel { Q_OBJECT public: using LtsWidgets::LtsColumnFilterProxyModel::LtsColumnFilterProxyModel; void setSourceModel(QAbstractItemModel *sourceModel) override; protected: bool lessThan(const QModelIndex &source_left, const QModelIndex &source_right) const override; private: ExercisePhaseModel *m_sourceModel = nullptr; }; }