/** * @RDE_HEADER@ * HMI Plugin for ParticipantManagement - Template Edit Model * $Id: participant_template_edit_model.h 49756 2020-02-04 08:46:35Z ehrlicher $ * $HeadURL: svn://192.168.133.21/TDS/branches/product/features/3dws_devel/Lts/Plugins/ParticipantManagement/Gui/ParticipantTemplates/participant_template_edit_model.h $ * $Author: ehrlicher $ * Created by Patric Karwat, SLSE, 2016-10-05 */ #pragma once #include #include #include namespace AdvancedSymbology { class ForeignDataInterface; class SymbolResult; } namespace LtsSession { class LtsSessionDataDds; } namespace ParticipantManagement { class FiringUnitValidator; //---------------------------------------------------------------------------- class PPMCOMMON_EXPORT ParticipantTemplateEditModel final : public ParticipantIconModelBase { Q_OBJECT public: enum Columns { ColDesignator, ColIdentifier, ColTypeClass, ColType, ColEquipmentNumber, ColTemplateId }; ParticipantTemplateEditModel(QObject *parent, const std::shared_ptr &ppmDtc, const std::shared_ptr &asbIfc, int rootId); QVariant data(const QModelIndex &index, int role) const override; int columnCount(const QModelIndex &parent) const override; Qt::ItemFlags flags(const QModelIndex &index) const override; bool canDropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent) const override; Qt::DropActions supportedDropActions() const override { return Qt::MoveAction; } Qt::DropActions supportedDragActions() const override { return Qt::MoveAction; } std::vector templateData(bool bOnlyModified = true) const; std::vector templateDataAsCopy(const QModelIndex &idx = QModelIndex()) const; void dataCommitted(); // the modified data returned by getTemplateData() was successfully commited into db QSet usedEquipmentNumbers() const; TemplateData getTemplateData(const QModelIndex &index) const; public slots: bool onInsertRow(const QModelIndex &parent, TemplateData templateData); bool onUpdateRow(const QModelIndex &index, const TemplateData &templateData); bool onDeleteRow(const QModelIndex &idx, bool isFirstItem = true); bool onInsertTemplate(int rootId, const QModelIndex &parentIndex, bool asCopy); signals: void internalDataChanged(); private: std::vector templateData(const QModelIndex &idx, bool bAsNewTemplate, bool bOnlyModified) const; void init(); std::vector getChildrenOf(NGLTreeItem *item, int parentId, int hierarchyNumber, bool bOnlyModified, int &highestModId) const; void insertChildrenOf(int parentId, NGLTreeItem *parent, const QModelIndex &parentIdx, const QHash> &parentId2id, const QHash &tmap); NGLTreeItem *createItem(const QVariant &data, const QIcon &icon) const override; QSet usedEquipmentNumbers(NGLTreeItem *item) const; private: int m_rootTemplateId; QVector m_dataToDelete; FiringUnitValidator *m_firingUnitValidator; }; } //namespace ParticipantManagement Q_DECLARE_METATYPE(ParticipantManagement::TemplateData)