/** * @RDE_HEADER@ * HMI Plugin for AreaEffectSimulation - Contaminations Overview Dialog Model * $Id$ * $HeadURL$ * $Author$ * * Created by Malte Diers, SLSE, 2017-02-20 */ #pragma once #include #include #include #include #include namespace LtsSession { class LtsSession; } namespace ProjectDataManagement { namespace Interface { class Dtc; } } namespace AreaEffectSimulation { class ChargeAdministrationModel : public LtsWidgets::LtsAbstractTableModel { Q_OBJECT public: enum Columns { ColId, ColTypeId, ColChanged, ColTypeName, ColStock, ColPlanned, ColAvailable, ColUsed, ColGearClass }; explicit ChargeAdministrationModel(QObject *parent = nullptr); bool initModel(LtsSession::LtsSession *session, QVector &reqs); QVariant data(const QModelIndex &, int role = Qt::DisplayRole) const override final; ProjectDataManagement::ChargeType chargeType(int id) const { return m_chargeTypeMap.value(id); } private slots: void onChargeAdministrationChanged(const AreaEffectSimulation::ChargeAdministration &data, DataModification modType); private: bool isDummy(const ProjectDataManagement::ChargeType &ct); private: std::shared_ptr m_aesDtc; std::shared_ptr m_pdmDtc; QMap m_chargeTypeMap; LOGGER_T m_logger; friend class ChargeAdministrationSortFilterProxyModel; }; class ChargeAdministrationSortFilterProxyModel final : public LtsWidgets::LtsColumnFilterProxyModel { Q_OBJECT public: using LtsWidgets::LtsColumnFilterProxyModel::LtsColumnFilterProxyModel; void setSourceModel(QAbstractItemModel *model) override; int party() const; public slots: void setParty(int party); protected: bool filterAcceptsRow(int source_row, const QModelIndex &source_parent) const override; private: ChargeAdministrationModel *m_sourceModel = nullptr; int m_party = 0; }; } //namespace AreaEffectSimulation