/** * @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 namespace ParticipantManagement { ParticipantsMountedTableModel::ParticipantsMountedTableModel(QObject *parent) : LtsWidgets::LtsAbstractTableModel({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 &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(); } }