105 lines
3.6 KiB
C++
Executable File
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
|