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

82 lines
2.3 KiB
C++
Executable File

/**
* @RDE_HEADER@
* Model for mounted participants table
* $Id$
* $HeadURL$
* $Author$
* Created by Dassow Philipp, SLEA, 2017-08-29
*/
#include "participants_mounted_table_model.h"
#include <ParticipantManagement/ppm_translation.h>
namespace ParticipantManagement {
ParticipantsMountedTableModel::ParticipantsMountedTableModel(QObject *parent)
: LtsWidgets::LtsAbstractTableModel<Participant>({tr("Equipment Number"),
tr("Party"),
tr("Designator"),
tr("Tact. Identifier")}, parent)
, m_carrierId(0)
, m_dtc(nullptr)
{
}
bool ParticipantsMountedTableModel::initModel(int32_t carrierId,
const std::shared_ptr<Interface::Dtc> &dtc)
{
m_carrierId = carrierId;
m_dtc = dtc;
if (!m_dtc || !m_carrierId)
return false;
connect(m_dtc.get(), &ParticipantManagement::Interface::Dtc::participantPositionChanged,
this, &ParticipantsMountedTableModel::onPositionChanged,
Qt::UniqueConnection);
reInitModel();
return true;
}
void ParticipantsMountedTableModel::reInitModel()
{
clear();
ParticipantPosition pos = m_dtc->participantPosition(m_carrierId);
if (pos.mountedParticipants().is_set())
for (size_t idx = 0; idx < pos.mountedParticipants().get().size(); ++idx)
insertRow(m_dtc->participant(pos.mountedParticipants().get().at(idx)));
}
QVariant ParticipantsMountedTableModel::data(const QModelIndex &index, int role) const
{
if (role != Qt::DisplayRole || !indexIsValid(index))
return QVariant();
const Participant &participant = m_vecData.at(index.row());
switch (index.column())
{
case 0:
return participant.equipmentNumber().is_set()?participant.equipmentNumber().get():0;
case 1:
return ParticipantManagement::trPartyName(m_dtc->party(participant.partyId()).name());
case 2:
return QString::fromStdString(participant.designator());
case 3:
return QString::fromStdString(participant.tacticalIdentifier());
default:
break;
}
return QVariant();
}
void ParticipantsMountedTableModel::onPositionChanged(const ParticipantPosition &data, DataModification modType)
{
if (modType != DataModification::eRemoved)
if (data.participantId() == m_carrierId)
reInitModel();
}
}