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

137 lines
5.0 KiB
C++
Executable File

/**
* @RDE_HEADER@
* HMI Plugin for ParticipantManagement - Participant Edit Item Dialog
* $Id$
* $HeadURL$
* $Author$
* Created by Patric Karwat, SLSE, 2016-10-17
*/
#pragma once
#include "participant_edit_item_widget_base.h"
#include <ParticipantManagement/Gui/Common/ppmcommon_export.h>
#include <LtsWidgets/lts_frameless_dialog.h>
#include <LtsWidgets/lts_dialog.h>
#include "participant_firing_unit_validator.h"
namespace LtsWidgets
{
class LtsDialogButtonBox;
}
namespace ParticipantManagement
{
class ParticipantEditItemWidget final : public ParticipantEditItemWidgetBase
{
Q_OBJECT
public:
explicit ParticipantEditItemWidget(bool asSupportService,
LtsSession::LtsSession *session,
QWidget *parent = nullptr);
bool init(const QModelIndex &workingIndex,
int partyId,
const std::shared_ptr<ParticipantManagement::Interface::Dtc> &dtc,
const std::shared_ptr<ParticipantManagement::ForeignGuiComboboxInterface> &ppmGuiCbxIfc,
const std::shared_ptr<AdvancedSymbology::ForeignDataInterface> &asb,
const ParticipantData &data,
bool isOrgChart = false,
const bool addItem = false,
const QVector<int> &usedEquipmentNumbers = QVector<int>());
void setFiringUnitRestrictions(ParticipantEditModel *model,
bool isEdit,
const FiringUnitValidator::FiringUnitRestrictions &restrictions,
FiringUnitValidator *firingUnitValidator,
const int &unitGearClassType);
void setIsAdler(bool isAdler) { m_isAdler = isAdler; }
protected:
void setData() override;
void setDesignatorData() override;
public:
void onAddItem() override;
bool onEditItem() override;
bool collectParticipantData(ParticipantManagement::ParticipantData &data);
protected Q_SLOTS:
void onTbAssignmentClicked();
void setAssignmentButton();
void onEqNoChanged();
protected:
int editTypeId() const override { return m_editData.typeId(); }
int currentPartyId() const override { return m_editData.partyId() > 1 ? m_editData.partyId() : m_partyId; }
private:
ParticipantManagement::ParticipantAssignState getAssignmentState() const;
Q_SIGNALS:
void addItem(const QModelIndex &parent, const ParticipantData &newData);
void updateItem(const QModelIndex &parent, const ParticipantData &editData);
private:
QModelIndex m_workingIndex;
ParticipantManagement::ParticipantAssignState m_currentAssignState;
int m_partyId;
bool m_isOrgChart;
bool m_isAdler {false};
ParticipantData m_editData;
QVector<int32_t> m_alreadyAddedEquipmentNumbers;
};
class PPMCOMMON_EXPORT ParticipantEditItem final : public LtsWidgets::LtsFramelessDialog
{
Q_OBJECT
public:
ParticipantEditItem(bool asSupportService, LtsSession::LtsSession *session, QWidget *parent = nullptr);
bool init(const QModelIndex &workingIndex, int partyId,
const std::shared_ptr<ParticipantManagement::Interface::Dtc> &dtc,
const std::shared_ptr<ParticipantManagement::ForeignGuiComboboxInterface> &ppmGuiCbxIfc,
const std::shared_ptr<AdvancedSymbology::ForeignDataInterface> &asb,
const ParticipantData &data = ParticipantData(),
const bool addItem = false,
const QVector<int> &usedEquipmentNumbers = QVector<int>());
void setIsAdler(bool isAdler) { m_editItemWidget->setIsAdler(isAdler); }
void setFiringUnitRestrictions(ParticipantEditModel *model,
bool isEdit,
const FiringUnitValidator::FiringUnitRestrictions &restrictions,
FiringUnitValidator *firingUnitValidator,
const int unitGearClassType);
Q_SIGNALS:
void addItem(const QModelIndex &parent, const ParticipantData &newData);
void updateItem(const QModelIndex &parent, const ParticipantData &editData);
private:
ParticipantEditItemWidget *m_editItemWidget;
LtsWidgets::LtsDialogButtonBox *m_buttonBox;
};
class PPMCOMMON_EXPORT ParticipantEditItemTab final : public LtsWidgets::LtsDialog
{
Q_OBJECT
public:
ParticipantEditItemTab(bool asSupportService, LtsSession::LtsSession *session, QWidget *parent = nullptr);
bool init(const std::shared_ptr<ParticipantManagement::Interface::Dtc> &dtc,
const std::shared_ptr<ParticipantManagement::ForeignGuiComboboxInterface> &ppmGuiCbxIfc,
const std::shared_ptr<AdvancedSymbology::ForeignDataInterface> &asb,
const ParticipantData &data = ParticipantData(), bool isOrgChart = false);
Q_SIGNALS:
void addItem(int &row, const QModelIndex &parent, const ParticipantData &newData, bool asCopy);
void updateItem(const QModelIndex &parent, const ParticipantData &editData);
private:
void retranslate() override;
bool apply() override;
private:
ParticipantEditItemWidget *m_editItemWidget;
};
} // namespace ParticipantManagement