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

105 lines
3.6 KiB
C++
Executable File

/**
* @RDE_HEADER@
* Model for TlnInfo Table
* $Id$
* $HeadURL$
* $Author$
* Created by Astrid Mueller, SGAS, 2017-07-10
*/
#pragma once
#include <LtsWidgets/lts_abstract_table_model.h>
#include <LtsSession/lts_session.h>
#include <Plugins/ParticipantManagement/ppm_data_plugin_interface.h>
#include <Plugins/ParticipantManagement/ppm_gui_combobox_plugin_interface.h>
namespace ParticipantManagement
{
struct ParticipantInfo
{
qint64 biteSampleTime = 0;
qint64 positionSampleTime = 0;
ProjectDataManagement::VulnerabilityState vulnerabilityState;
ParticipantManagement::TypeClass typeClass;
int participantId = 0;
int partyId = 0;
int equipmentNumber = 0;
QString positionString;
QString designator;
QString tacticalIdentifier;
QString biteResult;
bool isManipulated = false;
bool isOutdated = false;
int id() const { return participantId; }
};
// --------------------------------------------------------
// ParticipantInfoTableModel
// --------------------------------------------------------
class ParticipantInfoTableModel final : public LtsWidgets::LtsAbstractTableModel<ParticipantInfo>
{
Q_OBJECT
public:
enum Columns
{
EquipmentNumber,
TacticalStatus,
Designator,
TacticalIdentifier,
Position,
BiteResult
};
explicit ParticipantInfoTableModel(QObject *parent = nullptr);
~ParticipantInfoTableModel();
bool initModel(LtsSession::LtsSession *session,
const std::shared_ptr<ParticipantManagement::Interface::Dtc> &ppmDtc,
bool bWithPositionandBiteResult);
QVariant data(const QModelIndex &index, int role) const override;
bool removeItems(const QVector<int> &selectedIds);
void initializeDataView();
public Q_SLOTS:
void updateDataView(const QSet<int> &participantIds);
protected Q_SLOTS:
void onParticipantChanged(const ParticipantManagement::DynamicParticipantData &data,
DataModification modType);
void onPositionChanged(const ParticipantManagement::ParticipantPosition &position,
DataModification modType);
void onBiteChanged(const ParticipantManagement::Bite &bite,
DataModification modType);
void onPartitionTimeChanged(qint64 newPartitionTime);
void onPartyChanged(const ParticipantManagement::Party &party,
DataModification modType);
void onTimeoutCheck();
private:
ParticipantInfo setInfoData(const ParticipantManagement::Participant &part) const;
void fillParticipantContent(ParticipantInfo &info,
const DynamicParticipantData &data) const;
void fillParticipantContent(ParticipantInfo &info,
const Participant &part) const;
void updatePosition(ParticipantInfo &info,
const ParticipantManagement::ParticipantPosition &position) const;
bool isOutdated(qint64 sampleTime) const;
QString biteStringFromBite(const ParticipantManagement::Bite &bite) const;
static QString vulnerabilityStateString(const ParticipantInfo &data);
LtsSession::LtsSession *m_session;
std::shared_ptr<ParticipantManagement::Interface::Dtc> m_ppmDtc;
std::shared_ptr<ParticipantManagement::ForeignGuiComboboxInterface> m_ppmGuiCbxIfc;
qint64 m_partitionTime;
QTimer *m_timeoutCheckTimer;
QHash<int, QIcon> m_partyIcons;
bool m_bWithPositionandBiteResult;
NGL::INGLLogger &m_logger;
};
} //namespace ParticipantManagement