/** * @RDE_HEADER@ * HMI Plugin for ParticipantManagement - Participant OrgChart Dialog * $Id$ * $HeadURL$ * $Author$ * Created by Patric Karwat, SLSE, 2017-04-07 */ #pragma once #include #include #include //PPM #include #include #include //asb #include // Qt #include namespace Ui { class LtsParticipantsOrgChart; } namespace ParticipantManagement { class WebNofitifier : public QObject { Q_OBJECT public: explicit WebNofitifier(QObject *parent = nullptr); Q_PROPERTY(QString jsonString READ jsonString WRITE setJsonString NOTIFY jsonStringChanged) // Q_PROPERTY(QString updateString MEMBER m_updateString NOTIFY updateStringChanged) Q_PROPERTY(QString updateString READ jsonString WRITE setJsonString NOTIFY updateStringChanged) Q_INVOKABLE void startEdit(const QString &data); Q_INVOKABLE void startDelete(const QString &data); Q_INVOKABLE void startDBClick(int id); Q_INVOKABLE void doMoveChanged(); Q_INVOKABLE void gotHierarchy(const QString &data); void setJsonString(const QString &string); QString jsonString() { return m_currentJsonString; } void getWholeHierarchy(); public Q_SLOTS: void onSetUpdateString(int ddsId, const QJsonObject &updateString); void onTimerTick(); signals: void jsonStringChanged(const QString &newJson); void updateStringChanged(const QString &updateJson); void edit(const QString &data); void remove(const QString &data); void dbClick(int); void movedParticipant(); void getHierarchy(); void newHierarchy(const QString &data); private : QString m_currentJsonString; QString m_updateString; QMap m_dataToChange; QTimer *m_updateTimer; }; //---------------------------------------------------------------------------- class LtsParticipantsOrgChart : public QWidget { Q_OBJECT public: explicit LtsParticipantsOrgChart(QWidget *parent); ~LtsParticipantsOrgChart(); bool init(const std::shared_ptr &dtc, const std::shared_ptr &asbIfc, bool useSymData = true, bool isMenuEnabled = false, bool isDragEnabled = false); void loadParty(int partyId); bool loadTemplate(int templateRootId); void updateParticipant(int participantId); void sendToOrgChart(int participantId, const QJsonObject &json); void getWholeHierarchy(); private slots: void onParticipantOrgChart_MimeDataHelperFinished(); void onSingleParticipantOrgChart_MimeDataHelperFinished(); signals: void startEdit(const QString &); void startDelete(const QString &); void startDBClick(int); void gotNewHierarchy(const QString &); void movedParticipant(); void sendUpdateString(int, const QJsonObject &); private: int m_partyId; bool m_useSymData; bool m_isMenuEnabled; bool m_isDragEnabled; QString m_scriptString; QString m_dataSource; QString m_html; QWebChannel *m_channel; WebNofitifier *m_notifier; QPointer m_participantOrgChart_MimeDataHelper; QMap> m_participantOrgChart_MimeDataHelperMap; std::shared_ptr m_dtc; std::shared_ptr m_asbItc; Ui::LtsParticipantsOrgChart *m_ui; LOGGER_T m_logger; }; }