Files
qt5-legatus-legacy/Lts/Plugins/ParticipantManagement/Gui/ParticipantOrgChart/participant_org_chart.h
T
2026-08-13 18:33:10 +02:00

126 lines
3.5 KiB
C++
Executable File

/**
* @RDE_HEADER@
* HMI Plugin for ParticipantManagement - Participant OrgChart Dialog
* $Id$
* $HeadURL$
* $Author$
* Created by Patric Karwat, SLSE, 2017-04-07
*/
#pragma once
#include <participant_org_chart_helper.h>
#include <QWidget>
#include <QtWebChannel/QWebChannel>
//PPM
#include <Plugins/ParticipantManagement/Gui/Common/ppmcommon_export.h>
#include <Services/ParticipantManagement/ppm_dtc.h>
#include <ParticipantManagement/logger.h>
//asb
#include <Plugins/AdvancedSymbology/asb_data_plugin_interface.h>
// Qt
#include <QPointer>
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<int, QString> m_dataToChange;
QTimer *m_updateTimer;
};
//----------------------------------------------------------------------------
class LtsParticipantsOrgChart : public QWidget
{
Q_OBJECT
public:
explicit LtsParticipantsOrgChart(QWidget *parent);
~LtsParticipantsOrgChart();
bool init(const std::shared_ptr<ParticipantManagement::Interface::Dtc> &dtc,
const std::shared_ptr<AdvancedSymbology::ForeignDataInterface> &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<ParticipantOrgChart_MimeDataHelper> m_participantOrgChart_MimeDataHelper;
QMap<int, QSharedPointer<ParticipantOrgChart_MimeDataHelper>> m_participantOrgChart_MimeDataHelperMap;
std::shared_ptr<ParticipantManagement::Interface::Dtc> m_dtc;
std::shared_ptr<AdvancedSymbology::ForeignDataInterface> m_asbItc;
Ui::LtsParticipantsOrgChart *m_ui;
LOGGER_T m_logger;
};
}