832 lines
43 KiB
C++
Executable File
832 lines
43 KiB
C++
Executable File
/**
|
|
**
|
|
** @RDE_HEADER@
|
|
** Implementation of dialog to modify xml symbols
|
|
** $Id$
|
|
** $HeadURL$
|
|
** $Author$
|
|
**
|
|
** -----------------------------------------------------------------------------------------------
|
|
**
|
|
** Hardware-Environment: Intel-PC
|
|
** Software-Environment: Windows 7, Qt 5.4. ArcGIS 10.2.5
|
|
**
|
|
** Language ........: C++ 11
|
|
**
|
|
** -----------------------------------------------------------------------------------------------
|
|
**
|
|
** Author ...........: Jörg Turla, SPD G, Tel. 3132
|
|
**
|
|
** -----------------------------------------------------------------------------------------------
|
|
**
|
|
** Notes .........:
|
|
**
|
|
** 14.12.2017, JT : First edition for use with Qt5
|
|
**
|
|
** -----------------------------------------------------------------------------------------------
|
|
*/
|
|
|
|
#include "symbol_dialog.h"
|
|
|
|
#include <geometry_model.h>
|
|
|
|
#include <Symbology/sidc_codec.h>
|
|
#include <Symbology/symbol_dictionary_types.h>
|
|
|
|
#include <LtsWidgets/lts_combo_box.h>
|
|
|
|
#include <QtCore/QPointer>
|
|
#include <QtCore/QLocale>
|
|
|
|
#include <QtGui/QIntValidator>
|
|
|
|
#include <QtWidgets/QButtonGroup>
|
|
#include <QtWidgets/QCheckBox>
|
|
#include <QtWidgets/QLabel>
|
|
#include <QtWidgets/QLineEdit>
|
|
#include <QtWidgets/QRadioButton>
|
|
|
|
#include <QtWidgets/QHBoxLayout>
|
|
#include <QtWidgets/QVBoxLayout>
|
|
#include <QtWidgets/QFormLayout>
|
|
#include <QtWidgets/QGridLayout>
|
|
|
|
#include <limits>
|
|
|
|
|
|
namespace SymbologyXML
|
|
{
|
|
struct PartyInformation
|
|
{
|
|
int id;
|
|
QString name;
|
|
QColor color;
|
|
AdvancedSymbology::Role role;
|
|
}; // PartyInformation
|
|
|
|
|
|
class SymbolDialog::InternalData
|
|
{
|
|
public:
|
|
|
|
static PartyInformation m_defaultParty;
|
|
|
|
const AdvancedSymbology::SymbolDictionary & m_symbolDict;
|
|
QPointer<SituationMap::GeometryModel> m_geometryModel;
|
|
uint m_symbolId;
|
|
QVector<PartyInformation> m_partyVector;
|
|
|
|
SituationMap::GeometryModel::Node m_currentNode;
|
|
|
|
QLabel * m_laSymbol = nullptr;
|
|
QLabel * m_laAffiliation = nullptr;
|
|
QLabel * m_laMobility = nullptr;
|
|
QLabel * m_laOffsetX = nullptr;
|
|
QLabel * m_laOffsetY = nullptr;
|
|
QLabel * m_laTeam = nullptr;
|
|
QLabel * m_laTeamD = nullptr;
|
|
QLabel * m_laScale = nullptr;
|
|
QLabel * m_laStatus = nullptr;
|
|
QLabel * m_laView = nullptr;
|
|
LtsWidgets::LtsComboBox * m_cbAffiliation = nullptr;
|
|
LtsWidgets::LtsComboBox * m_cbMobility = nullptr;
|
|
QCheckBox * m_cbDir = nullptr;
|
|
QLabel * m_laSymbolID = nullptr;
|
|
QLineEdit * m_leOffsetX = nullptr;
|
|
QLineEdit * m_leOffsetY = nullptr;
|
|
LtsWidgets::LtsComboBox * m_cbTeam = nullptr;
|
|
LtsWidgets::LtsComboBox * m_cbTeamD = nullptr;
|
|
LtsWidgets::LtsComboBox * m_cbStatus = nullptr;
|
|
QLineEdit * m_leDir = nullptr;
|
|
QLineEdit * m_leScale = nullptr;
|
|
QCheckBox * m_cbSymbolState = nullptr;
|
|
QCheckBox * m_cbUncertainty = nullptr;
|
|
QLineEdit * m_leTextW = nullptr;
|
|
QLineEdit * m_leTextXY = nullptr;
|
|
QLineEdit * m_leTextV = nullptr;
|
|
QLineEdit * m_leTextT = nullptr;
|
|
QLineEdit * m_leTextZ = nullptr;
|
|
QLineEdit * m_leTextEF = nullptr;
|
|
QLineEdit * m_leTextG = nullptr;
|
|
QLineEdit * m_leTextH = nullptr;
|
|
QLineEdit * m_leTextM = nullptr;
|
|
QLineEdit * m_leTextJ = nullptr;
|
|
|
|
explicit InternalData( const AdvancedSymbology::SymbolDictionary &symbolDict, SituationMap::GeometryModel * geomModel )
|
|
: m_symbolDict(symbolDict), m_geometryModel(geomModel), m_symbolId(std::numeric_limits<uint>::max())
|
|
{
|
|
} // InternalData(SituationMap::Map *map)
|
|
|
|
|
|
~InternalData() = default;
|
|
|
|
void buildDialog( SymbolDialog * dlg );
|
|
void setLabels();
|
|
|
|
void updatePartyComboBox( QComboBox * cb );
|
|
|
|
static void updateStateComboBox( QComboBox * cb );
|
|
static void updateAffiliationComboBox( QComboBox * cb );
|
|
static void updateMobilityComboBox( QComboBox * cb );
|
|
|
|
}; // SymbolDialog::InternalData
|
|
|
|
PartyInformation SymbolDialog::InternalData::m_defaultParty = {-1,QString(),QColor(Qt::gray),AdvancedSymbology::Role::Unknown};
|
|
|
|
SymbolDialog::SymbolDialog( const AdvancedSymbology::SymbolDictionary &symbolDict, SituationMap::GeometryModel * geomModel, bool autoApply, QWidget *parent)
|
|
: LtsWidgets::LtsDialog(parent,(autoApply) ? LtsWidgets::ButtonCombination::CloseOnly : LtsWidgets::ButtonCombination::OkApplyCancel, true)
|
|
, m_internal( new InternalData(symbolDict,geomModel))
|
|
{
|
|
if (autoApply)
|
|
{
|
|
setUnchangeable();
|
|
m_buttonBox->setAttribute(Qt::WA_DeleteOnClose); // to same as LtsDialog::plan_editor_compatibility
|
|
m_buttonBox->getButton(LtsWidgets::DialogButton::Ok)->setVisible(false);
|
|
m_buttonBox->getButton(LtsWidgets::DialogButton::Apply)->setVisible(false);
|
|
m_buttonBox->getButton(LtsWidgets::DialogButton::Close)->setText(tr("Close"));
|
|
}
|
|
|
|
m_internal->buildDialog( this );
|
|
|
|
QObject::connect( m_internal->m_cbAffiliation, static_cast<void (LtsWidgets::LtsComboBox::*)(int)>(&LtsWidgets::LtsComboBox::activated), this, [this](int idx)
|
|
{
|
|
SymbolTypes::t_affil affil = SymbolTypes::t_affil(m_internal->m_cbAffiliation->itemData(idx).toInt());
|
|
|
|
m_internal->m_cbSymbolState->setDisabled((affil == SymbolTypes::t_affil::PENDING) ||
|
|
(affil == SymbolTypes::t_affil::SUSPECT) ||
|
|
(affil == SymbolTypes::t_affil::ASSUMED_FRIEND));
|
|
|
|
emit changedSymbolAffiliation( affil );
|
|
emit changed();
|
|
} );
|
|
|
|
QObject::connect( m_internal->m_cbMobility, static_cast<void (LtsWidgets::LtsComboBox::*)(int)>(&LtsWidgets::LtsComboBox::activated), this, [this](int idx)
|
|
{
|
|
SymbolTypes::t_mob mob = SymbolTypes::t_mob(m_internal->m_cbMobility->itemData(idx).toInt());
|
|
emit changedSymbolMobility( mob );
|
|
emit changed();
|
|
} );
|
|
|
|
connect( m_internal->m_cbDir, &QCheckBox::stateChanged, this, [this](int)
|
|
{
|
|
m_internal->m_leDir->setEnabled( m_internal->m_cbDir->isChecked() );
|
|
emit changed();
|
|
});
|
|
|
|
QObject::connect( m_internal->m_cbSymbolState, &QCheckBox::clicked, this, [this](bool checked)
|
|
{
|
|
emit changedSymbolState( (checked) ? SymbologyXML::SymbolTypes::t_state::STATE_ANTICIPATED : SymbologyXML::SymbolTypes::t_state::STATE_PRESENT );
|
|
emit changed();
|
|
} );
|
|
|
|
QObject::connect( m_internal->m_cbUncertainty, &QCheckBox::clicked, this, [this](bool checked)
|
|
{
|
|
emit changedSymbolUncertainty( (checked) ? SymbologyXML::SymbolTypes::t_uncertainty::UNCERTAINTY_UNCERTAIN : SymbologyXML::SymbolTypes::t_uncertainty::UNCERTAINTY_CERTAIN );
|
|
emit changed();
|
|
} );
|
|
|
|
QObject::connect( m_internal->m_cbStatus, static_cast<void (LtsWidgets::LtsComboBox::*)(int)>(&LtsWidgets::LtsComboBox::activated), this, [this](int idx)
|
|
{
|
|
SituationMap::GeometryModel::t_vbg_et vbg = SituationMap::GeometryModel::t_vbg_et(m_internal->m_cbStatus->itemData(idx).toInt());
|
|
emit changedSymbolVBG(vbg);
|
|
emit changed();
|
|
} );
|
|
|
|
QObject::connect( m_internal->m_cbTeam, static_cast<void (LtsWidgets::LtsComboBox::*)(int)>(&LtsWidgets::LtsComboBox::activated), this, [this](int idx)
|
|
{
|
|
int partyId = m_internal->m_cbTeam->itemData(idx).toInt();
|
|
emit changedParty(partyId);
|
|
emit changed();
|
|
} );
|
|
|
|
QObject::connect( m_internal->m_cbTeamD, static_cast<void (LtsWidgets::LtsComboBox::*)(int)>(&LtsWidgets::LtsComboBox::activated), this, [this](int idx)
|
|
{
|
|
int partyId = m_internal->m_cbTeamD->itemData(idx).toInt();
|
|
emit changedDamageParty(partyId);
|
|
emit changed();
|
|
} );
|
|
|
|
auto emitChangedOffset = [this](const QString &)
|
|
{
|
|
emit changedOffset( QPoint(m_internal->m_leOffsetX->text().toInt(),m_internal->m_leOffsetY->text().toInt()));
|
|
emit changed();
|
|
};
|
|
connect( m_internal->m_leOffsetX, &QLineEdit::textEdited, this, emitChangedOffset );
|
|
connect( m_internal->m_leOffsetY, &QLineEdit::textEdited, this, emitChangedOffset );
|
|
|
|
connect(m_internal->m_leScale, &QLineEdit::textEdited, this, [this](const QString &scaleTxt) { emit changedScale( scaleTxt.toDouble() );});
|
|
connect(m_internal->m_cbDir, &QCheckBox::clicked, this, [this](bool checked) { emit changedDirection( checked, m_internal->m_leScale->text().toDouble() ); });
|
|
|
|
connect(m_internal->m_leDir, &QLineEdit::textEdited, this, [this](const QString &scaleTxt)
|
|
{
|
|
emit changedDirection( m_internal->m_cbDir->isChecked(), scaleTxt.toDouble() );
|
|
emit changed();
|
|
} );
|
|
|
|
connect( m_internal->m_leTextW , &QLineEdit::textEdited, this, [this](const QString& txt) { emit changedTextW (txt); emit changed(); } );
|
|
connect( m_internal->m_leTextXY, &QLineEdit::textEdited, this, [this](const QString& txt) { emit changedTextXY(txt); emit changed(); } );
|
|
connect( m_internal->m_leTextV , &QLineEdit::textEdited, this, [this](const QString& txt) { emit changedTextV (txt); emit changed(); } );
|
|
connect( m_internal->m_leTextT , &QLineEdit::textEdited, this, [this](const QString& txt) { emit changedTextT (txt); emit changed(); } );
|
|
connect( m_internal->m_leTextZ , &QLineEdit::textEdited, this, [this](const QString& txt) { emit changedTextZ (txt); emit changed(); } );
|
|
connect( m_internal->m_leTextEF, &QLineEdit::textEdited, this, [this](const QString& txt) { emit changedTextEF(txt); emit changed(); } );
|
|
connect( m_internal->m_leTextG , &QLineEdit::textEdited, this, [this](const QString& txt) { emit changedTextG (txt); emit changed(); } );
|
|
connect( m_internal->m_leTextH , &QLineEdit::textEdited, this, [this](const QString& txt) { emit changedTextH (txt); emit changed(); } );
|
|
connect( m_internal->m_leTextM , &QLineEdit::textEdited, this, [this](const QString& txt) { emit changedTextM (txt); emit changed(); } );
|
|
connect( m_internal->m_leTextJ , &QLineEdit::textEdited, this, [this](const QString& txt) { emit changedTextJ (txt); emit changed(); } );
|
|
|
|
connect( this, &SymbolDialog::changed, this, &SymbolDialog::updateSymbolPixmap );
|
|
|
|
} // SymbolDialog::SymbolDialog(SituationMap::Map *map)
|
|
|
|
|
|
SymbolDialog::SymbolDialog( const AdvancedSymbology::SymbolDictionary &symbolDict, bool autoApply, QWidget * parent ) : SymbolDialog(symbolDict,nullptr,autoApply,parent) {;}
|
|
|
|
|
|
SymbolDialog::~SymbolDialog() { delete m_internal; }
|
|
|
|
SymbolTypes::t_affil SymbolDialog::symbolAffiliation() const { return SymbolTypes::t_affil(m_internal->m_cbAffiliation->currentData().toInt()); }
|
|
SymbolTypes::t_mob SymbolDialog::symbolMobility() const { return SymbolTypes::t_mob(m_internal->m_cbMobility->currentData().toInt());}
|
|
|
|
SymbolTypes::t_state SymbolDialog::symbolState() const { return (m_internal->m_cbSymbolState->isChecked()) ? SymbologyXML::SymbolTypes::t_state::STATE_ANTICIPATED : SymbologyXML::SymbolTypes::t_state::STATE_PRESENT; }
|
|
SymbolTypes::t_uncertainty SymbolDialog::symbolUncertainty() const { return (m_internal->m_cbUncertainty->isChecked()) ? SymbologyXML::SymbolTypes::t_uncertainty::UNCERTAINTY_UNCERTAIN : SymbologyXML::SymbolTypes::t_uncertainty::UNCERTAINTY_CERTAIN; }
|
|
SituationMap::GeometryModel::t_vbg_et SymbolDialog::symbolVBG() const { return SituationMap::GeometryModel::t_vbg_et(m_internal->m_cbStatus->currentData().toInt()); }
|
|
|
|
int SymbolDialog::partyId() const { return m_internal->m_partyVector.value(m_internal->m_cbTeam->currentIndex(),m_internal->m_defaultParty).id; }
|
|
QColor SymbolDialog::partyColor() const { return m_internal->m_partyVector.value(m_internal->m_cbTeam->currentIndex(),m_internal->m_defaultParty).color; }
|
|
QString SymbolDialog::partyName() const { return m_internal->m_partyVector.value(m_internal->m_cbTeam->currentIndex(),m_internal->m_defaultParty).name; }
|
|
AdvancedSymbology::Role SymbolDialog::partyRole() const { return m_internal->m_partyVector.value(m_internal->m_cbTeam->currentIndex(), m_internal->m_defaultParty).role; }
|
|
|
|
int SymbolDialog::damagedPartyId() const { return m_internal->m_partyVector.value(m_internal->m_cbTeamD->currentIndex(),m_internal->m_defaultParty).id; }
|
|
QColor SymbolDialog::damagedPartyColor() const { return m_internal->m_partyVector.value(m_internal->m_cbTeamD->currentIndex(),m_internal->m_defaultParty).color; }
|
|
QString SymbolDialog::damagedPartyName() const { return m_internal->m_partyVector.value(m_internal->m_cbTeamD->currentIndex(),m_internal->m_defaultParty).name; }
|
|
|
|
QPoint SymbolDialog::pixelOffset() const { return QPoint(m_internal->m_leOffsetX->text().toInt(),m_internal->m_leOffsetY->text().toInt()); }
|
|
double SymbolDialog::scale() const { return m_internal->m_leScale->text().toDouble(); }
|
|
|
|
bool SymbolDialog::directionValid() const { return m_internal->m_cbDir->isChecked(); }
|
|
int SymbolDialog::directionDegree() const { return m_internal->m_leDir->text().toInt(); }
|
|
|
|
QString SymbolDialog::textW() const { return m_internal->m_leTextW->text(); }
|
|
QString SymbolDialog::textXY() const { return m_internal->m_leTextXY->text(); }
|
|
QString SymbolDialog::textV() const { return m_internal->m_leTextW->text(); }
|
|
QString SymbolDialog::textT() const { return m_internal->m_leTextW->text(); }
|
|
QString SymbolDialog::textZ() const { return m_internal->m_leTextW->text(); }
|
|
QString SymbolDialog::textEF() const { return m_internal->m_leTextW->text(); }
|
|
QString SymbolDialog::textG() const { return m_internal->m_leTextW->text(); }
|
|
QString SymbolDialog::textH() const { return m_internal->m_leTextW->text(); }
|
|
QString SymbolDialog::textM() const { return m_internal->m_leTextW->text(); }
|
|
QString SymbolDialog::textJ() const { return m_internal->m_leTextW->text(); }
|
|
|
|
void SymbolDialog::setSymbolAffiliation(SymbolTypes::t_affil affil) { m_internal->m_cbAffiliation->setCurrentIndex(m_internal->m_cbAffiliation->findData(affil)); }
|
|
void SymbolDialog::setSymbolMobility(SymbolTypes::t_mob mob) { m_internal->m_cbMobility->setCurrentIndex(m_internal->m_cbMobility->findData(mob)); }
|
|
void SymbolDialog::setSymbolState(SymbolTypes::t_state state) { m_internal->m_cbSymbolState->setChecked( SymbologyXML::SymbolTypes::t_state::STATE_ANTICIPATED == state ); }
|
|
void SymbolDialog::setSymbolUncertainty(SymbolTypes::t_uncertainty uncertainty) { m_internal->m_cbUncertainty->setChecked(SymbologyXML::SymbolTypes::t_uncertainty::UNCERTAINTY_UNCERTAIN == uncertainty ); }
|
|
void SymbolDialog::setSymbolVBG(SituationMap::GeometryModel::t_vbg_et vbg) { m_internal->m_cbStatus->setCurrentIndex(m_internal->m_cbStatus->findData(int(vbg))); }
|
|
void SymbolDialog::setPartyId(int id ) { m_internal->m_cbTeam->setCurrentIndex(m_internal->m_cbTeam->findData(id)); }
|
|
void SymbolDialog::setDamagedPartyId(int id) { m_internal->m_cbTeamD->setCurrentIndex(m_internal->m_cbTeamD->findData(id)); }
|
|
|
|
void SymbolDialog::setPixelOffset( const QPoint &offset )
|
|
{
|
|
m_internal->m_leOffsetX->setText( QString::number(offset.x()) );
|
|
m_internal->m_leOffsetY->setText( QString::number(offset.y()) );
|
|
}
|
|
|
|
void SymbolDialog::setScale(double scale) { QLocale c; m_internal->m_leScale->setText( c.toString(scale) );}
|
|
void SymbolDialog::setDirectionValid( bool ok ) { m_internal->m_cbDir->setChecked(ok); }
|
|
void SymbolDialog::setDirectionDegree( int angle ) { m_internal->m_leDir->setText(QString::number(angle)); }
|
|
|
|
void SymbolDialog::updateSymbolPixmap()
|
|
{
|
|
AdvancedSymbology::SymbolResultWatcher *symbolGuard = new AdvancedSymbology::SymbolResultWatcher(this);
|
|
connect(symbolGuard, &AdvancedSymbology::SymbolResultWatcher::resultReady, this, [this, symbolGuard]()
|
|
{
|
|
QSharedPointer<AdvancedSymbology::SymbolResult> symbolResult = symbolGuard->symbolResult();
|
|
if (symbolResult)
|
|
{
|
|
m_internal->m_laView->setPixmap( QPixmap::fromImage(symbolResult->symbolImage().image()).scaled(symbolPixmapSize(),Qt::IgnoreAspectRatio,Qt::SmoothTransformation) );
|
|
}
|
|
symbolGuard->deleteLater();
|
|
});
|
|
|
|
SymbolTypes::t_state state = m_internal->m_cbSymbolState->isChecked() ? SymbolTypes::t_state::STATE_ANTICIPATED : SymbolTypes::t_state::STATE_PRESENT;
|
|
SymbolTypes::t_uncertainty uncertainty = m_internal->m_cbUncertainty->isChecked() ? SymbolTypes::t_uncertainty::UNCERTAINTY_UNCERTAIN : SymbolTypes::t_uncertainty::UNCERTAINTY_CERTAIN;
|
|
|
|
SymbolTypes::t_affil affil = symbolAffiliation();
|
|
SymbolTypes::t_mob mob = symbolMobility();
|
|
|
|
if (SymbolTypes::t_affil::AFFIL_UNDEFINED == affil)
|
|
{
|
|
AdvancedSymbology::Role role = partyRole();
|
|
|
|
affil = SymbologyXML::Symbol::roleToAffiliation(role);
|
|
}
|
|
|
|
AdvancedSymbology::SymbolDataToRender symDataToRender;
|
|
|
|
symDataToRender.sidc = AdvancedSymbology::SidcCodec::encodeCivilXmlSymbolId(m_internal->m_symbolId,state,uncertainty,affil,mob);
|
|
symDataToRender.fillColor = partyColor();
|
|
symDataToRender.injuryColor = damagedPartyColor();
|
|
symDataToRender.injury = AdvancedSymbology::Injury::NoInjury;
|
|
|
|
switch (symbolVBG())
|
|
{
|
|
case SituationMap::GeometryModel::t_vbg_et::ANNAEHENDER_TREFFER :
|
|
case SituationMap::GeometryModel::t_vbg_et::TREFFER_OHNE_WIRKUNG :
|
|
case SituationMap::GeometryModel::t_vbg_et::EINSATZBEREIT : symDataToRender.injury = AdvancedSymbology::Injury::NoInjury; break;
|
|
|
|
case SituationMap::GeometryModel::t_vbg_et::AUSFALL_WAFFENANLAGE :
|
|
case SituationMap::GeometryModel::t_vbg_et::AUSFALL_WAFFENANLAGE_SICHTB : symDataToRender.injury = AdvancedSymbology::Injury::WeaponKill; break;
|
|
|
|
case SituationMap::GeometryModel::t_vbg_et::BEWEGUNGSUNFAEHIG :
|
|
case SituationMap::GeometryModel::t_vbg_et::BEWEGUNGSUNFAEHIG_SICHTB : symDataToRender.injury = AdvancedSymbology::Injury::MobilityKill; break;
|
|
|
|
case SituationMap::GeometryModel::t_vbg_et::LEICHTER_TREFFER :
|
|
case SituationMap::GeometryModel::t_vbg_et::MITTLERER_TREFFER :
|
|
case SituationMap::GeometryModel::t_vbg_et::SCHWERER_TREFFER : symDataToRender.injury = AdvancedSymbology::Injury::Hit; break;
|
|
case SituationMap::GeometryModel::t_vbg_et::TOTALAUSFALL : symDataToRender.injury = AdvancedSymbology::Injury::TotalKill; break;
|
|
case SituationMap::GeometryModel::t_vbg_et::ZEITLICHER_AUSFALL : symDataToRender.injury = AdvancedSymbology::Injury::TotalKill; break;
|
|
} // switch (symbolVBG())
|
|
|
|
symbolGuard->setSymbolResult( m_internal->m_symbolDict.fetchSymbol(symDataToRender));
|
|
} // void SymbolDialog::updateSymbolPixmap()
|
|
|
|
|
|
|
|
void SymbolDialog::setNode(int symbolId, const SituationMap::GeometryModel::Node &node)
|
|
{
|
|
m_internal->m_symbolId = uint(symbolId);
|
|
|
|
m_internal->m_laSymbolID->setText( QString::number(m_internal->m_symbolId) );
|
|
|
|
if (nullptr == m_internal->m_geometryModel)
|
|
{
|
|
m_internal->m_currentNode = SituationMap::GeometryModel::Node(); // set invalid node
|
|
return;
|
|
}
|
|
|
|
SymbolTypes::t_affil affil = SymbolTypes::t_affil( m_internal->m_geometryModel->getAttribute(node,SituationMap::GeometryModel::Attribute::Affiliation).toInt() );
|
|
m_internal->m_cbAffiliation->setCurrentIndex(m_internal->m_cbAffiliation->findData(affil));
|
|
|
|
SymbolTypes::t_mob mob = SymbolTypes::t_mob( m_internal->m_geometryModel->getAttribute(node,SituationMap::GeometryModel::Attribute::Mobility).toInt() );
|
|
m_internal->m_cbMobility->setCurrentIndex(m_internal->m_cbMobility->findData(mob));
|
|
|
|
m_internal->m_leOffsetX->setText(m_internal->m_geometryModel->getAttribute(node,SituationMap::GeometryModel::Attribute::SymbolOffsetX).toString() );
|
|
m_internal->m_leOffsetY->setText(m_internal->m_geometryModel->getAttribute(node,SituationMap::GeometryModel::Attribute::SymbolOffsetY).toString() );
|
|
m_internal->m_leDir->setText( m_internal->m_geometryModel->getAttribute(node,SituationMap::GeometryModel::Attribute::SymbolDirection).toString() );
|
|
m_internal->m_leScale->setText( m_internal->m_geometryModel->getAttribute(node,SituationMap::GeometryModel::Attribute::SymbolExplicitScale).toString() );
|
|
|
|
m_internal->m_leTextEF->setText( m_internal->m_geometryModel->getAttribute(node,SituationMap::GeometryModel::Attribute::Text_EF).toString() );
|
|
m_internal->m_leTextG ->setText( m_internal->m_geometryModel->getAttribute(node,SituationMap::GeometryModel::Attribute::Text_G).toString() );
|
|
m_internal->m_leTextH ->setText( m_internal->m_geometryModel->getAttribute(node,SituationMap::GeometryModel::Attribute::Text_H).toString() );
|
|
m_internal->m_leTextJ ->setText( m_internal->m_geometryModel->getAttribute(node,SituationMap::GeometryModel::Attribute::Text_KLNPJ).toString() );
|
|
m_internal->m_leTextM ->setText( m_internal->m_geometryModel->getAttribute(node,SituationMap::GeometryModel::Attribute::Text_M).toString() );
|
|
m_internal->m_leTextT ->setText( m_internal->m_geometryModel->getAttribute(node,SituationMap::GeometryModel::Attribute::Text_T).toString() );
|
|
m_internal->m_leTextV ->setText( m_internal->m_geometryModel->getAttribute(node,SituationMap::GeometryModel::Attribute::Text_V).toString() );
|
|
m_internal->m_leTextW ->setText( m_internal->m_geometryModel->getAttribute(node,SituationMap::GeometryModel::Attribute::Text_W).toString() );
|
|
m_internal->m_leTextXY->setText( m_internal->m_geometryModel->getAttribute(node,SituationMap::GeometryModel::Attribute::Text_XY).toString() );
|
|
m_internal->m_leTextZ ->setText( m_internal->m_geometryModel->getAttribute(node,SituationMap::GeometryModel::Attribute::Text_Z).toString() );
|
|
|
|
m_internal->m_cbTeam->setCurrentIndex(m_internal->m_cbTeam->findData( m_internal->m_geometryModel->getAttribute(node,SituationMap::GeometryModel::Attribute::ForceId)));
|
|
m_internal->m_cbTeamD->setCurrentIndex(m_internal->m_cbTeamD->findData( m_internal->m_geometryModel->getAttribute(node,SituationMap::GeometryModel::Attribute::DamageForceId)));
|
|
|
|
SituationMap::GeometryModel::t_vbg_et vbg = SituationMap::GeometryModel::t_vbg_et(m_internal->m_geometryModel->getAttribute(node,SituationMap::GeometryModel::Attribute::att_vbg_et).toInt());
|
|
m_internal->m_cbStatus->setCurrentIndex(m_internal->m_cbStatus->findData(int(vbg)));
|
|
|
|
SymbologyXML::SymbolTypes::t_state state = SymbologyXML::SymbolTypes::t_state( m_internal->m_geometryModel->getAttribute(node,SituationMap::GeometryModel::Attribute::SymbolState).toInt() );
|
|
m_internal->m_cbSymbolState->setChecked( SymbologyXML::SymbolTypes::t_state::STATE_ANTICIPATED == state );
|
|
|
|
SymbologyXML::SymbolTypes::t_uncertainty uncertainty = SymbologyXML::SymbolTypes::t_uncertainty( m_internal->m_geometryModel->getAttribute(node,SituationMap::GeometryModel::Attribute::SymbolUncertainty).toInt() );
|
|
m_internal->m_cbUncertainty->setChecked(SymbologyXML::SymbolTypes::t_uncertainty::UNCERTAINTY_UNCERTAIN == uncertainty );
|
|
|
|
/*
|
|
bool
|
|
m_internal->m_geometryModel->getAttribute(node,SituationMap::GeometryModel::Attribute::AbcProtection);
|
|
*/
|
|
|
|
m_internal->m_currentNode = node;
|
|
|
|
m_internal->m_laView->setPixmap(QPixmap::fromImage(AdvancedSymbology::SymbolDictionary::temporaryImage()));
|
|
|
|
updateSymbolPixmap();
|
|
|
|
} // void SymbolDialog::setNodeint symbolId, const SituationMap::GeometryModel::Node &node)
|
|
|
|
|
|
bool SymbolDialog::applyToNode(const SituationMap::GeometryModel::Node &node) const
|
|
{
|
|
if ((nullptr == m_internal->m_geometryModel) || (!node.isValid())) return false;
|
|
|
|
m_internal->m_geometryModel->setPrimitiveAttribute(node,SituationMap::GeometryModel::Attribute::SymbolOffsetX,pixelOffset().x());
|
|
m_internal->m_geometryModel->setPrimitiveAttribute(node,SituationMap::GeometryModel::Attribute::SymbolOffsetY,pixelOffset().y());
|
|
|
|
if (directionValid())
|
|
{
|
|
m_internal->m_geometryModel->setPrimitiveAttribute(node,SituationMap::GeometryModel::Attribute::SymbolDirection,directionDegree());
|
|
}
|
|
else
|
|
{
|
|
m_internal->m_geometryModel->setPrimitiveAttribute(node,SituationMap::GeometryModel::Attribute::SymbolDirection,0.0);
|
|
}
|
|
|
|
m_internal->m_geometryModel->setPrimitiveAttribute(node,SituationMap::GeometryModel::Attribute::SymbolExplicitScale,scale());
|
|
|
|
m_internal->m_geometryModel->setPrimitiveAttribute(node,SituationMap::GeometryModel::Attribute::Text_EF,textEF());
|
|
m_internal->m_geometryModel->setPrimitiveAttribute(node,SituationMap::GeometryModel::Attribute::Text_G,textG());
|
|
m_internal->m_geometryModel->setPrimitiveAttribute(node,SituationMap::GeometryModel::Attribute::Text_H,textH());
|
|
m_internal->m_geometryModel->setPrimitiveAttribute(node,SituationMap::GeometryModel::Attribute::Text_KLNPJ,textJ());
|
|
m_internal->m_geometryModel->setPrimitiveAttribute(node,SituationMap::GeometryModel::Attribute::Text_M,textM());
|
|
m_internal->m_geometryModel->setPrimitiveAttribute(node,SituationMap::GeometryModel::Attribute::Text_T,textT());
|
|
m_internal->m_geometryModel->setPrimitiveAttribute(node,SituationMap::GeometryModel::Attribute::Text_V,textV());
|
|
m_internal->m_geometryModel->setPrimitiveAttribute(node,SituationMap::GeometryModel::Attribute::Text_W,textW());
|
|
m_internal->m_geometryModel->setPrimitiveAttribute(node,SituationMap::GeometryModel::Attribute::Text_XY,textXY());
|
|
m_internal->m_geometryModel->setPrimitiveAttribute(node,SituationMap::GeometryModel::Attribute::Text_Z,textZ());
|
|
|
|
m_internal->m_geometryModel->setPrimitiveAttribute(node,SituationMap::GeometryModel::Attribute::ForceId,partyId());
|
|
m_internal->m_geometryModel->setPrimitiveAttribute(node,SituationMap::GeometryModel::Attribute::DamageForceId,damagedPartyId());
|
|
|
|
m_internal->m_geometryModel->setPrimitiveAttribute(node,SituationMap::GeometryModel::Attribute::att_vbg_et,int(symbolVBG()));
|
|
m_internal->m_geometryModel->setPrimitiveAttribute(node,SituationMap::GeometryModel::Attribute::SymbolState,int(symbolState()));
|
|
m_internal->m_geometryModel->setPrimitiveAttribute(node,SituationMap::GeometryModel::Attribute::SymbolUncertainty,int(symbolUncertainty()));
|
|
m_internal->m_geometryModel->setPrimitiveAttribute(node,SituationMap::GeometryModel::Attribute::Affiliation,int(symbolAffiliation()));
|
|
m_internal->m_geometryModel->setPrimitiveAttribute(node,SituationMap::GeometryModel::Attribute::Mobility,int(symbolMobility()));
|
|
|
|
return true;
|
|
} // void SymbolDialog::applyToNode(const SituationMap::GeometryModel::Node &node) const
|
|
|
|
|
|
bool SymbolDialog::apply()
|
|
{
|
|
bool canCloseDialog = applyToNode( m_internal->m_currentNode );
|
|
|
|
emit applyChanges(this,canCloseDialog);
|
|
|
|
return canCloseDialog;
|
|
} // bool SymbolDialog::apply()
|
|
|
|
|
|
void SymbolDialog::aboutToClose()
|
|
{
|
|
emit signalAboutToClose();
|
|
} // void SymbolDialog::aboutToClose()
|
|
|
|
|
|
void SymbolDialog::updateParties( const QVector<int> &partyIds
|
|
, const QVector<QColor> &partyColors
|
|
, const QVector<QString> &partyNames
|
|
, const QVector<AdvancedSymbology::Role> &partyRoles )
|
|
{
|
|
m_internal->m_partyVector.clear();
|
|
m_internal->m_partyVector.reserve(partyIds.size());
|
|
|
|
for (int i = 0; i < partyIds.size(); ++i)
|
|
{
|
|
PartyInformation pInfo;
|
|
|
|
pInfo.id = partyIds[i];
|
|
pInfo.color = partyColors[i];
|
|
pInfo.name = partyNames[i];
|
|
pInfo.role = partyRoles[i];
|
|
m_internal->m_partyVector << pInfo;
|
|
}
|
|
|
|
m_internal->updatePartyComboBox( m_internal->m_cbTeam );
|
|
m_internal->updatePartyComboBox( m_internal->m_cbTeamD );
|
|
|
|
} // void SymbolDialog::updateParties(const QVector<int> &partyIds, const QVector<QColor> &partyColors, const QVector<QString> &partyNames)
|
|
|
|
|
|
void SymbolDialog::retranslate()
|
|
{
|
|
// lupdate doesn't like translate(tr("foo")) ...
|
|
const QString txt(tr("Symbol Modification"));
|
|
translate(txt);
|
|
|
|
m_internal->setLabels();
|
|
} // void SymbolDialog::retranslate()
|
|
|
|
|
|
void SymbolDialog::InternalData::buildDialog(SymbolDialog * dlg)
|
|
{
|
|
QVBoxLayout * layout = new QVBoxLayout(dlg);
|
|
QHBoxLayout * layoutHeader = new QHBoxLayout();
|
|
QHBoxLayout * layoutSymbol = new QHBoxLayout();
|
|
|
|
layout->addStretch(2);
|
|
|
|
layout->addLayout( layoutHeader );
|
|
{
|
|
m_laSymbol = new QLabel(dlg);
|
|
m_laSymbolID = new QLabel( QStringLiteral("???????"), dlg );
|
|
m_laTeam = new QLabel(dlg);
|
|
|
|
layoutHeader->addStretch(2);
|
|
layoutHeader->addWidget( m_laSymbol );
|
|
layoutHeader->addWidget( m_laSymbolID );
|
|
layoutHeader->addStretch(2);
|
|
QFont labelFont = m_laSymbol->font();
|
|
labelFont.setPointSizeF(labelFont.pointSizeF()*1.5);
|
|
labelFont.setBold(true);
|
|
m_laSymbol->setFont(labelFont);
|
|
m_laSymbolID->setFont(labelFont);
|
|
}
|
|
|
|
layout->addSpacing(10);
|
|
QFrame * separator = new QFrame(dlg);
|
|
separator->setFrameStyle(QFrame::HLine | QFrame::Plain);
|
|
layout->addWidget(separator);
|
|
layout->addSpacing(10);
|
|
|
|
layout->addLayout( layoutSymbol );
|
|
{
|
|
QVBoxLayout * layoutAttr = new QVBoxLayout();
|
|
QGridLayout * layoutLeftText = new QGridLayout();
|
|
QVBoxLayout * layoutSymbolView = new QVBoxLayout();
|
|
QGridLayout * layoutRightText = new QGridLayout();
|
|
|
|
layoutSymbol->addStretch(2);
|
|
|
|
layoutSymbol->addSpacing( 20 );
|
|
layoutSymbol->addLayout(layoutAttr);
|
|
{
|
|
QHBoxLayout * layoutCertainty = new QHBoxLayout();
|
|
|
|
layoutAttr->addLayout(layoutCertainty);
|
|
{
|
|
m_cbSymbolState = new QCheckBox(dlg);
|
|
m_cbUncertainty = new QCheckBox(dlg);
|
|
|
|
|
|
layoutCertainty->addWidget( m_cbSymbolState );
|
|
layoutCertainty->addStretch( 2 );
|
|
layoutCertainty->addWidget( m_cbUncertainty );
|
|
}
|
|
layoutSymbol->addSpacing( 20 );
|
|
|
|
QFormLayout * layoutAttrForm = new QFormLayout();
|
|
|
|
layoutAttr->addLayout(layoutAttrForm);
|
|
{
|
|
m_laAffiliation = new QLabel(dlg);
|
|
m_cbAffiliation = new LtsWidgets::LtsComboBox(dlg);
|
|
|
|
m_laMobility = new QLabel(dlg);
|
|
m_cbMobility = new LtsWidgets::LtsComboBox(dlg);
|
|
|
|
m_laOffsetX = new QLabel(dlg);
|
|
m_leOffsetX = new QLineEdit(dlg);
|
|
m_leOffsetX->setToolTip(tr("Offset X"));
|
|
|
|
m_laOffsetY = new QLabel(dlg);
|
|
m_leOffsetY = new QLineEdit(dlg);
|
|
m_leOffsetY->setToolTip(tr("Offset Y"));
|
|
|
|
m_cbDir = new QCheckBox(dlg);
|
|
m_leDir = new QLineEdit(dlg);
|
|
|
|
m_laScale = new QLabel(dlg);
|
|
m_leScale = new QLineEdit(dlg);
|
|
|
|
m_laTeam = new QLabel(dlg);
|
|
m_cbTeam = new LtsWidgets::LtsComboBox(dlg);
|
|
|
|
m_laStatus = new QLabel(dlg);
|
|
m_cbStatus = new LtsWidgets::LtsComboBox(dlg);
|
|
|
|
m_laTeamD = new QLabel(dlg);
|
|
m_cbTeamD = new LtsWidgets::LtsComboBox(dlg);
|
|
|
|
layoutAttrForm->addRow( m_laAffiliation, m_cbAffiliation );
|
|
layoutAttrForm->addRow( m_laMobility , m_cbMobility );
|
|
layoutAttrForm->addRow( m_laStatus , m_cbStatus );
|
|
layoutAttrForm->addRow( m_laTeam , m_cbTeam );
|
|
layoutAttrForm->addRow( m_laTeamD , m_cbTeamD );
|
|
|
|
/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
* What's the object to move the symbol away from it's center or rotate it?
|
|
* For the first hide widget placing ....
|
|
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
|
|
#ifdef NEEDLESS_WIDGETS
|
|
|
|
layoutAttrForm->addRow( m_laOffsetX , m_leOffsetX );
|
|
layoutAttrForm->addRow( m_laOffsetY , m_leOffsetY );
|
|
layoutAttrForm->addRow( m_cbDir , m_leDir );
|
|
|
|
#else
|
|
|
|
m_laOffsetX->setVisible(false);
|
|
m_leOffsetX->setVisible(false);
|
|
|
|
m_laOffsetY->setVisible(false);
|
|
m_leOffsetY->setVisible(false);
|
|
|
|
m_cbDir->setVisible(false);
|
|
m_leDir->setVisible(false);
|
|
|
|
#endif
|
|
|
|
layoutAttrForm->addRow( m_laScale , m_leScale );
|
|
|
|
m_leOffsetX->setValidator( new QIntValidator(m_leOffsetX));
|
|
m_leOffsetY->setValidator( new QIntValidator(m_leOffsetY));
|
|
m_leDir ->setValidator( new QIntValidator( -360, 360, m_leDir));
|
|
|
|
m_cbDir->setChecked(false);
|
|
m_leDir->setEnabled(false);
|
|
|
|
m_leScale->setValidator( new QDoubleValidator(m_leScale));
|
|
}
|
|
layoutAttrForm->setLabelAlignment(Qt::AlignRight);
|
|
}
|
|
|
|
layoutSymbol->addStretch(2);
|
|
|
|
layoutSymbol->addLayout( layoutLeftText );
|
|
{
|
|
m_leTextW = new QLineEdit(dlg);
|
|
m_leTextW->setToolTip(tr("W"));
|
|
m_leTextXY = new QLineEdit(dlg);
|
|
m_leTextXY->setToolTip(tr("XY"));
|
|
m_leTextV = new QLineEdit(dlg);
|
|
m_leTextV->setToolTip(tr("V"));
|
|
m_leTextT = new QLineEdit(dlg);
|
|
m_leTextT->setToolTip(tr("T"));
|
|
m_leTextZ = new QLineEdit(dlg);
|
|
m_leTextZ->setToolTip(tr("Z"));
|
|
|
|
layoutLeftText->setRowStretch(0,0);
|
|
layoutLeftText->setRowStretch(1,0);
|
|
layoutLeftText->setRowStretch(2,0);
|
|
layoutLeftText->setRowStretch(3,0);
|
|
layoutLeftText->setRowStretch(4,0);
|
|
|
|
layoutLeftText->setColumnStretch(0,0);
|
|
layoutLeftText->setColumnStretch(1,2);
|
|
|
|
layoutLeftText->addWidget( new QLabel(QStringLiteral("W")) , 0 , 0, Qt::Alignment::enum_type::AlignRight );
|
|
layoutLeftText->addWidget( new QLabel(QStringLiteral("X|Y")), 1 , 0, Qt::Alignment::enum_type::AlignRight );
|
|
layoutLeftText->addWidget( new QLabel(QStringLiteral("V")) , 2 , 0, Qt::Alignment::enum_type::AlignRight );
|
|
layoutLeftText->addWidget( new QLabel(QStringLiteral("T")) , 3 , 0, Qt::Alignment::enum_type::AlignRight );
|
|
layoutLeftText->addWidget( new QLabel(QStringLiteral("Z")) , 4 , 0, Qt::Alignment::enum_type::AlignRight);
|
|
|
|
layoutLeftText->addWidget( m_leTextW , 0 , 1, Qt::Alignment::enum_type::AlignLeft );
|
|
layoutLeftText->addWidget( m_leTextXY, 1 , 1, Qt::Alignment::enum_type::AlignLeft );
|
|
layoutLeftText->addWidget( m_leTextV , 2 , 1, Qt::Alignment::enum_type::AlignLeft );
|
|
layoutLeftText->addWidget( m_leTextT , 3 , 1, Qt::Alignment::enum_type::AlignLeft );
|
|
layoutLeftText->addWidget( m_leTextZ , 4 , 1, Qt::Alignment::enum_type::AlignLeft );
|
|
}
|
|
|
|
layoutSymbol->addLayout( layoutSymbolView );
|
|
{
|
|
QPixmap symbolPixmap(symbolPixmapSize());
|
|
|
|
symbolPixmap.fill(QColor(Qt::gray));
|
|
|
|
m_laView = new QLabel(dlg);
|
|
m_laView->setPixmap( symbolPixmap );
|
|
layoutSymbolView->addStretch(2);
|
|
layoutSymbolView->addWidget(m_laView);
|
|
layoutSymbolView->addStretch(2);
|
|
}
|
|
|
|
layoutSymbol->addLayout( layoutRightText );
|
|
{
|
|
m_leTextEF = new QLineEdit(dlg);
|
|
m_leTextEF->setToolTip(tr("E|F"));
|
|
m_leTextG = new QLineEdit(dlg);
|
|
m_leTextG->setToolTip(tr("G"));
|
|
m_leTextH = new QLineEdit(dlg);
|
|
m_leTextH->setToolTip(tr("H"));
|
|
m_leTextM = new QLineEdit(dlg);
|
|
m_leTextM->setToolTip(tr("M"));
|
|
m_leTextJ = new QLineEdit(dlg);
|
|
m_leTextJ->setToolTip(tr("J|K|L|N|P"));
|
|
|
|
layoutRightText->setRowStretch(0,0);
|
|
layoutRightText->setRowStretch(1,0);
|
|
layoutRightText->setRowStretch(2,0);
|
|
layoutRightText->setRowStretch(3,0);
|
|
layoutRightText->setRowStretch(4,0);
|
|
|
|
layoutRightText->setColumnStretch(0,2);
|
|
layoutRightText->setColumnStretch(1,0);
|
|
|
|
layoutRightText->addWidget( m_leTextEF, 0 , 0, Qt::Alignment::enum_type::AlignLeft );
|
|
layoutRightText->addWidget( m_leTextG , 1 , 0, Qt::Alignment::enum_type::AlignLeft );
|
|
layoutRightText->addWidget( m_leTextH , 2 , 0, Qt::Alignment::enum_type::AlignLeft );
|
|
layoutRightText->addWidget( m_leTextM , 3 , 0, Qt::Alignment::enum_type::AlignLeft );
|
|
layoutRightText->addWidget( m_leTextJ , 4 , 0, Qt::Alignment::enum_type::AlignLeft );
|
|
|
|
layoutRightText->addWidget( new QLabel(QStringLiteral("E|F")) , 0 , 1, Qt::Alignment::enum_type::AlignLeft );
|
|
layoutRightText->addWidget( new QLabel(QStringLiteral("G")) , 1 , 1, Qt::Alignment::enum_type::AlignLeft );
|
|
layoutRightText->addWidget( new QLabel(QStringLiteral("H")) , 2 , 1, Qt::Alignment::enum_type::AlignLeft );
|
|
layoutRightText->addWidget( new QLabel(QStringLiteral("M")) , 3 , 1, Qt::Alignment::enum_type::AlignLeft );
|
|
layoutRightText->addWidget( new QLabel(QStringLiteral("J|K|L|N|P")) , 4 , 1, Qt::Alignment::enum_type::AlignLeft);
|
|
}
|
|
|
|
layoutSymbol->addStretch(2);
|
|
}
|
|
|
|
setLabels();
|
|
|
|
} // void SymbolDialog::InternalData::buildDialog(SymbolDialog * dlg)
|
|
|
|
|
|
void SymbolDialog::InternalData::setLabels()
|
|
{
|
|
m_laSymbol -> setText(tr("Symbol"));
|
|
m_laAffiliation -> setText(tr("Affiliation:"));
|
|
m_laMobility -> setText(tr("Mobility:"));
|
|
m_laOffsetX -> setText(tr("Offset [Pixel] X:"));
|
|
m_laOffsetY -> setText(tr("Offset [Pixel] Y:"));
|
|
m_laTeam -> setText(tr("Symbol Color Party:"));
|
|
m_laTeamD -> setText(tr("Status Color Party:"));
|
|
m_laStatus -> setText(tr("Status:"));
|
|
m_laScale -> setText(tr("Scale:"));
|
|
m_cbSymbolState -> setText(tr("Planned"));
|
|
m_cbUncertainty -> setText(tr("Uncertainty"));
|
|
m_cbDir -> setText(tr("Direction [degree]:"));
|
|
|
|
updateStateComboBox( m_cbStatus );
|
|
updateAffiliationComboBox( m_cbAffiliation );
|
|
updateMobilityComboBox( m_cbMobility );
|
|
|
|
} // void SymbolDialog::InternalData::setLabels(SymbolDialog * dlg)
|
|
|
|
|
|
void SymbolDialog::InternalData::updateStateComboBox(QComboBox *cb)
|
|
{
|
|
cb->clear();
|
|
|
|
cb->addItem( tr("Ready for Operation") , SymbolTypes::vbg_et::EINSATZBEREIT );
|
|
cb->addItem( tr("Light Hit") , SymbolTypes::vbg_et::LEICHTER_TREFFER );
|
|
cb->addItem( tr("Medium Hit") , SymbolTypes::vbg_et::MITTLERER_TREFFER );
|
|
cb->addItem( tr("Fatal Hit") , SymbolTypes::vbg_et::SCHWERER_TREFFER );
|
|
cb->addItem( tr("Immobilised") , SymbolTypes::vbg_et::BEWEGUNGSUNFAEHIG );
|
|
cb->addItem( tr("Immobilised in View") , SymbolTypes::vbg_et::BEWEGUNGSUNFAEHIG_SICHTB );
|
|
cb->addItem( tr("Malfunction Weapons") , SymbolTypes::vbg_et::AUSFALL_WAFFENANLAGE );
|
|
cb->addItem( tr("Malfunction Weapons in View"), SymbolTypes::vbg_et::AUSFALL_WAFFENANLAGE_SICHTB );
|
|
cb->addItem( tr("Complete Failure") , SymbolTypes::vbg_et::TOTALAUSFALL );
|
|
cb->addItem( tr("Temporary Failure") , SymbolTypes::vbg_et::ZEITLICHER_AUSFALL );
|
|
cb->addItem( tr("Future Hit") , SymbolTypes::vbg_et::ANNAEHENDER_TREFFER );
|
|
cb->addItem( tr("Inefficacious Hit") , SymbolTypes::vbg_et::TREFFER_OHNE_WIRKUNG );
|
|
|
|
} // void SymbolDialog::InternalData::updateStateComboBox(QComboBox *cb)
|
|
|
|
|
|
void SymbolDialog::InternalData::updateAffiliationComboBox(QComboBox * cb)
|
|
{
|
|
cb->clear();
|
|
|
|
cb->addItem( tr("Undefined") , SymbolTypes::t_affil::AFFIL_UNDEFINED );
|
|
cb->addItem( tr("Unknown") , SymbolTypes::t_affil::UNKNOWN );
|
|
cb->addItem( tr("Friend") , SymbolTypes::t_affil::FRIEND );
|
|
cb->addItem( tr("Neutral") , SymbolTypes::t_affil::NEUTRAL );
|
|
cb->addItem( tr("Enemy") , SymbolTypes::t_affil::ENEMY );
|
|
cb->addItem( tr("Pending") , SymbolTypes::t_affil::PENDING );
|
|
cb->addItem( tr("Assumed Friend") , SymbolTypes::t_affil::ASSUMED_FRIEND );
|
|
cb->addItem( tr("Suspect") , SymbolTypes::t_affil:: SUSPECT );
|
|
|
|
} // void SymbolDialog::InternalData::updateAffiliationComboBox(QComboBox * cb)
|
|
|
|
|
|
void SymbolDialog::InternalData::updateMobilityComboBox(QComboBox * cb)
|
|
{
|
|
cb->clear();
|
|
|
|
cb->addItem( tr("Undefined") , SymbolTypes::t_mob::MOB_UNDEFINED );
|
|
cb->addItem( tr("Airborne") , SymbolTypes::t_mob::MOB_AIRBORNE );
|
|
cb->addItem( tr("Amphibious") , SymbolTypes::t_mob::MOB_AMPHIBIOUS );
|
|
cb->addItem( tr("Barge") , SymbolTypes::t_mob::MOB_BARGE );
|
|
cb->addItem( tr("Bicycle Equipped") , SymbolTypes::t_mob::MOB_BICYCLE_EQUIPPED );
|
|
cb->addItem( tr("Over Snow") , SymbolTypes::t_mob::MOB_OVER_SNOW );
|
|
cb->addItem( tr("Pack Animals") , SymbolTypes::t_mob::MOB_PACK_ANIMALS );
|
|
cb->addItem( tr("Semi Trailer") , SymbolTypes::t_mob::MOB_SEMI_TRAILER );
|
|
cb->addItem( tr("Sled") , SymbolTypes::t_mob::MOB_SLED );
|
|
cb->addItem( tr("Tracked") , SymbolTypes::t_mob::MOB_TRACKED );
|
|
cb->addItem( tr("Trailer") , SymbolTypes::t_mob::MOB_TRAILER );
|
|
cb->addItem( tr("Train") , SymbolTypes::t_mob::MOB_TRAIN );
|
|
cb->addItem( tr("Wheel") , SymbolTypes::t_mob::MOB_WHEEL );
|
|
cb->addItem( tr("Wheeled and Tracked") , SymbolTypes::t_mob::MOB_WHEELED_AND_TRACKED );
|
|
cb->addItem( tr("Wheel all Terrain") , SymbolTypes::t_mob::MOB_WHEEL_ALL_TERRAIN );
|
|
|
|
} // void SymbolDialog::InternalData::updateAffiliationComboBox(QComboBox * cb)
|
|
|
|
|
|
void SymbolDialog::InternalData::updatePartyComboBox(QComboBox *cb)
|
|
{
|
|
cb->clear();
|
|
|
|
for (const auto &pInfo : qAsConst(m_partyVector))
|
|
{
|
|
QPixmap colorIcon(30,30);
|
|
|
|
colorIcon.fill(pInfo.color);
|
|
cb->addItem(colorIcon, pInfo.name, pInfo.id);
|
|
}
|
|
} // void SymbolDialog::InternalData::updatePartyComboBox(QComboBox * cb)
|
|
|
|
|
|
|
|
} // namespace SymbologyXML
|
|
|