/** * @RDE_HEADER@ * AreaModel * $Id$ * $HeadURL$ * $Author$ * Created by Norbert Thoden, NLE, 2020-06-29 */ #pragma once #include "tgt_participant_handler.h" #include #include #include #include #include namespace TargetManagement { // Forward: class ParticipantHandler; // -------------------------------------------------------- // AreaModel // -------------------------------------------------------- class AreaModel final : public LtsWidgets::LtsAbstractTableModel { Q_OBJECT using BaseClass = LtsWidgets::LtsAbstractTableModel; public: enum Columns { Id, Name, // main config Center, Width, Height }; explicit AreaModel(QObject *parent = nullptr); bool initModel(const std::shared_ptr &tgtDtc); QVariant headerData(int section, Qt::Orientation orientation, int role) const override final; QVariant data(const QModelIndex &, int) const override; const QVector &getData() const { return m_vecData; } Q_SIGNALS: void signalAreaNamesChanged(); private Q_SLOTS: void onShootbackAreaChanged(const TargetManagement::ShootbackArea &data, const DataModification modType); void updateColumnFilter(); private: friend class AreaProxyModel; std::shared_ptr m_tgt_dtc; // column filter QSet m_usedNames; LOGGER_T m_logger; }; // -------------------------------------------------------- // AreaProxyModel // -------------------------------------------------------- class AreaProxyModel : public LtsWidgets::LtsColumnFilterProxyModel { Q_OBJECT using BaseClass = LtsWidgets::LtsColumnFilterProxyModel; public: using LtsWidgets::LtsColumnFilterProxyModel::LtsColumnFilterProxyModel; void setSourceModel(QAbstractItemModel *sourceModel) override; protected: bool lessThan(const QModelIndex &source_left, const QModelIndex &source_right) const override; protected: AreaModel *m_sourceModel{nullptr}; }; } //namespace TargetManagement