1299 lines
55 KiB
C++
Executable File
1299 lines
55 KiB
C++
Executable File
/**
|
|
*
|
|
* @RDE_HEADER@
|
|
* symbol_modification_wdiget for sidc configuration
|
|
* $Id$
|
|
* $HeadURL$
|
|
* $Author$
|
|
* Created by Karwat, SLSE, 2017-09-07
|
|
*/
|
|
|
|
|
|
#include "symbol_modification_widget.h"
|
|
|
|
#include "field_table_model.h"
|
|
|
|
#include <Map/party_id_to_color_functor.h>
|
|
|
|
#include <Symbology/symbol_dictionary.h>
|
|
#include <Symbology/sidc_definitions.h>
|
|
#include <Symbology/sidc_builder.h>
|
|
|
|
// Lts
|
|
#include <LtsWidgets/lts_combo_box.h>
|
|
|
|
// Qt
|
|
#include <QtCore/QAbstractItemModel>
|
|
#include <QtCore/QPointer>
|
|
|
|
#include <QtWidgets/QFormLayout>
|
|
#include <QtWidgets/QHBoxLayout>
|
|
#include <QtWidgets/QVBoxLayout>
|
|
|
|
#include <QtWidgets/QCheckBox>
|
|
#include <QtWidgets/QColorDialog>
|
|
#include <QtWidgets/QLabel>
|
|
#include <QtWidgets/QLineEdit>
|
|
#include <QtWidgets/QPushButton>
|
|
#include <QtWidgets/QStackedWidget>
|
|
#include <QtWidgets/QToolButton>
|
|
#include <QtWidgets/QTableView>
|
|
#include <QtWidgets/QTabWidget>
|
|
#include <QtWidgets/QHeaderView>
|
|
|
|
|
|
namespace AdvancedSymbology
|
|
{
|
|
namespace Gui
|
|
{
|
|
|
|
class SidcWithIcon : public QWidget
|
|
{
|
|
|
|
public:
|
|
|
|
explicit SidcWithIcon(QWidget *parent = nullptr) : QWidget(parent)
|
|
{
|
|
QHBoxLayout *layout = new QHBoxLayout(this);
|
|
// layout->setContentsMargins(0,0,0,0);
|
|
// layout->setSpacing(0);
|
|
|
|
|
|
m_lbImage = new QLabel(this);
|
|
// m_lbImage->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Maximum);
|
|
// m_lbImage->setMaximumSize(QSize(100,100));
|
|
layout->addWidget(m_lbImage);
|
|
|
|
m_lbText = new QLabel(this);
|
|
// m_lbText->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Maximum);
|
|
// m_lbImage->setMaximumSize(QSize(100,100));
|
|
layout->addWidget(m_lbText);
|
|
|
|
setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
|
|
// setMaximumHeight(100);
|
|
// setMaximumWidth(300);
|
|
} // SidcWithIcon(QWidget* parent = nullptr)
|
|
|
|
void setImage(const QImage &img) { m_lbImage->setPixmap(QPixmap::fromImage(img).scaledToHeight(100)); }
|
|
|
|
void setText(const QString &text) { m_lbText->setText(text); }
|
|
|
|
private:
|
|
|
|
QLabel *m_lbImage;
|
|
QLabel *m_lbText;
|
|
|
|
}; // SidcWithIcon
|
|
|
|
|
|
|
|
|
|
//---------------------------------
|
|
// EnumComboBox
|
|
//---------------------------------
|
|
|
|
using MyComboBox = LtsWidgets::LtsComboBox;
|
|
|
|
|
|
template <typename T> class EnumComboBox : public MyComboBox
|
|
{
|
|
|
|
public:
|
|
|
|
explicit EnumComboBox(QWidget *parent = nullptr) : MyComboBox(parent) {;}
|
|
|
|
void insertNumberedItem(int idx, T value)
|
|
{
|
|
insertNumberedItem(idx, AdvancedSymbology::SidcDefinitions::toPixmap(value), AdvancedSymbology::SidcDefinitions::toString(value), static_cast<int>(value));
|
|
} // void insertNumberedItem( int idx, T value )
|
|
|
|
|
|
void insertNumberedItem(int idx, const QString &text, int value)
|
|
{
|
|
MyComboBox::insertItem(idx, QStringLiteral("%1 %2").arg(value).arg(text), value);
|
|
} // void insertNumberedItem( int idx, const QString & text, int value )
|
|
|
|
|
|
void insertNumberedItem(int idx, const QPixmap & pixmap, const QString &text, int value)
|
|
{
|
|
MyComboBox::insertItem(idx, pixmap, QStringLiteral("%1 %2").arg(value).arg(text), value);
|
|
} // void insertNumberedItem( int idx, const QString & text, int value )
|
|
|
|
|
|
void insertItems(const QVector<T> &items)
|
|
{
|
|
MyComboBox::clear();
|
|
|
|
int idx = 0;
|
|
for (const auto &item : items)
|
|
insertNumberedItem(idx++, item);
|
|
if (MyComboBox::count() > 0)
|
|
setCurrentIndex(0);
|
|
} // void insertItems( const QVector<T> & items )
|
|
|
|
|
|
T currentValue() const { return static_cast<T>(currentData().toInt()); }
|
|
int currentValueAsInt() const { return currentData().toInt(); }
|
|
|
|
|
|
bool setCurrent(const T &newCurrentValue)
|
|
{
|
|
QVariant newCurVar(static_cast<int>(newCurrentValue));
|
|
MyComboBox::setCurrentIndex(findData(newCurVar));
|
|
return true;
|
|
} // bool setCurrent( const T & newCurrentValue )
|
|
|
|
signals:
|
|
|
|
void changed(T newValue);
|
|
|
|
protected Q_SLOTS:
|
|
|
|
void onCurrentIndexChanged(int) { emit changed(currentValue()); }
|
|
|
|
}; // template <typename T> class EnumComboBox
|
|
|
|
|
|
|
|
|
|
|
|
class SymbolModificationWidget::Internal
|
|
{
|
|
public:
|
|
|
|
QPointer<SituationMap::Map> m_map;
|
|
|
|
AdvancedSymbology::SidcDefinitions m_sidcDefinitions;
|
|
AdvancedSymbology::SidcBuilder m_sidcBuilder;
|
|
AdvancedSymbology::SymbolDictionary &m_dict;
|
|
AdvancedSymbology::SymbologyType m_symbologyType;
|
|
|
|
bool m_isParticipant;
|
|
|
|
QString m_originalSidc;
|
|
QString m_lastModifiedSidc;
|
|
QString m_baseSymbolCode;
|
|
QString m_modifiedSidc;
|
|
|
|
QTabWidget *m_tabWidget;
|
|
QStackedWidget *m_tabSidcEdit;
|
|
QWidget *m_tabFieldEdit;
|
|
QWidget *m_tabPreview;
|
|
|
|
EnumComboBox<AdvancedSymbology::SidcDefinitions::Context> *m_cbContext_MIL2525D;
|
|
EnumComboBox<AdvancedSymbology::SidcDefinitions::Identity> *m_cbIdentity_MIL2525D;
|
|
EnumComboBox<AdvancedSymbology::SidcDefinitions::SymbolSet> *m_cbSymbolSet_MIL2525D;
|
|
EnumComboBox<AdvancedSymbology::SidcDefinitions::Status> *m_cbStatus_MIL2525D;
|
|
EnumComboBox<AdvancedSymbology::SidcDefinitions::HQTFDummy> *m_cbHQTFDummy_MIL2525D;
|
|
|
|
EnumComboBox<AdvancedSymbology::SidcDefinitions::AmplifierGroup> *m_cbAmplifierGroup_MIL2525D;
|
|
EnumComboBox<int> *m_cbAmplifierDescriptor_MIL2525D;
|
|
EnumComboBox<unsigned int> *m_cbSector1Modifier_MIL2525D;
|
|
EnumComboBox<unsigned int> *m_cbSector2Modifier_MIL2525D;
|
|
|
|
EnumComboBox<AdvancedSymbology::SidcDefinitions::Identity> *m_cbIdentity_APP6;
|
|
MyComboBox *m_cbSize_APP6;
|
|
MyComboBox *m_cbSizeHQ_APP6;
|
|
MyComboBox *m_cbSizeTF_APP6;
|
|
MyComboBox *m_cbSizeFDHQ_APP6;
|
|
MyComboBox *m_cbSizeFDTF_APP6;
|
|
MyComboBox *m_cbSizeFD_APP6;
|
|
MyComboBox *m_cbMobility_APP6;
|
|
MyComboBox *m_cbStatus_APP6;
|
|
MyComboBox *m_cbOrderOfBattle_APP6;
|
|
|
|
MyComboBox *m_cbFieldTitle;
|
|
QLineEdit *m_leFieldValue;
|
|
QTableView *m_fieldTable;
|
|
FieldTableModel *m_fieldTableModel;
|
|
|
|
|
|
explicit Internal(SituationMap::Map *map, SymbolDictionary &symbolDictionary)
|
|
: m_map(map)
|
|
, m_sidcDefinitions((map) ? & map->symbolDictionary() : & symbolDictionary)
|
|
, m_sidcBuilder((map) ? & map->symbolDictionary() : & symbolDictionary)
|
|
, m_dict(symbolDictionary)
|
|
, m_symbologyType(AdvancedSymbology::SymbologyType::None)
|
|
, m_isParticipant(false)
|
|
, m_originalSidc()
|
|
, m_lastModifiedSidc()
|
|
, m_baseSymbolCode()
|
|
, m_modifiedSidc()
|
|
, m_tabWidget(nullptr)
|
|
, m_tabSidcEdit(nullptr)
|
|
, m_tabFieldEdit(nullptr)
|
|
, m_tabPreview(nullptr)
|
|
, m_cbContext_MIL2525D(nullptr)
|
|
, m_cbIdentity_MIL2525D(nullptr)
|
|
, m_cbSymbolSet_MIL2525D(nullptr)
|
|
, m_cbStatus_MIL2525D(nullptr)
|
|
, m_cbHQTFDummy_MIL2525D(nullptr)
|
|
, m_cbAmplifierGroup_MIL2525D(nullptr)
|
|
, m_cbAmplifierDescriptor_MIL2525D(nullptr)
|
|
, m_cbSector1Modifier_MIL2525D(nullptr)
|
|
, m_cbSector2Modifier_MIL2525D(nullptr)
|
|
, m_cbIdentity_APP6(nullptr)
|
|
, m_cbSize_APP6(nullptr)
|
|
, m_cbSizeHQ_APP6(nullptr)
|
|
, m_cbSizeTF_APP6(nullptr)
|
|
, m_cbSizeFDHQ_APP6(nullptr)
|
|
, m_cbSizeFDTF_APP6(nullptr)
|
|
, m_cbSizeFD_APP6(nullptr)
|
|
, m_cbMobility_APP6(nullptr)
|
|
, m_cbStatus_APP6(nullptr)
|
|
, m_cbOrderOfBattle_APP6(nullptr)
|
|
, m_cbFieldTitle(nullptr)
|
|
, m_leFieldValue(nullptr)
|
|
, m_fieldTable(nullptr)
|
|
, m_fieldTableModel(nullptr)
|
|
{
|
|
} // explicit Internal()
|
|
|
|
~Internal() = default;
|
|
|
|
|
|
}; // SymbolModificationWidget::Internal
|
|
|
|
|
|
enum class SymbologyTypeStackIndex
|
|
{
|
|
APP6 = 0,
|
|
MIL2525D = 1
|
|
}; // SymbologyTypeStackIndex
|
|
|
|
|
|
//---------------------------------
|
|
// SymbolModificationWidget
|
|
//---------------------------------
|
|
SymbolModificationWidget::SymbolModificationWidget(SituationMap::Map *map, bool isParticipant, SymbolDictionary &symbolDictionary, QWidget *parent)
|
|
: QWidget(parent)
|
|
, m_internal(new Internal(map, symbolDictionary))
|
|
{
|
|
m_internal->m_isParticipant = isParticipant;
|
|
|
|
QVBoxLayout *layout = new QVBoxLayout(this);
|
|
QHBoxLayout *layoutCtrl = new QHBoxLayout();
|
|
|
|
m_internal->m_tabWidget = new QTabWidget(this);
|
|
|
|
m_internal->m_tabSidcEdit = new QStackedWidget(m_internal->m_tabWidget);
|
|
m_internal->m_tabFieldEdit = new QWidget(m_internal->m_tabWidget);
|
|
m_internal->m_tabPreview = new QWidget(m_internal->m_tabWidget);
|
|
|
|
m_internal->m_tabWidget->setTabsClosable(false);
|
|
m_internal->m_tabWidget->setMovable(false);
|
|
m_internal->m_tabWidget->setTabBarAutoHide(true);
|
|
|
|
m_internal->m_tabSidcEdit -> setObjectName(QStringLiteral("SymbolModificationWidgetSymbolSidcEdit"));
|
|
m_internal->m_tabFieldEdit-> setObjectName(QStringLiteral("SymbolModificationWidgetSymbolFieldEdit"));
|
|
m_internal->m_tabPreview -> setObjectName(QStringLiteral("SymbolModificationWidgetSymbolPreview"));
|
|
|
|
m_internal->m_tabSidcEdit -> setEnabled(false);
|
|
m_internal->m_tabFieldEdit -> setEnabled(false);
|
|
m_internal->m_tabPreview -> setEnabled(false);
|
|
|
|
m_internal->m_tabSidcEdit -> hide();
|
|
m_internal->m_tabFieldEdit -> hide();
|
|
m_internal->m_tabPreview -> hide();
|
|
|
|
layout->setContentsMargins(10, 10, 10, 10);
|
|
layout->addSpacing(10);
|
|
layout->addWidget(m_internal->m_tabWidget);
|
|
layout->addSpacing(10);
|
|
layout->addLayout(layoutCtrl);
|
|
|
|
// d->m_preview = new QVBoxLayout();
|
|
// d->m_preview->setObjectName(QLatin1String("previewCol"));
|
|
// layout->addLayout(d->m_preview, 0, 0);
|
|
|
|
/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
|
|
|
|
QWidget * sidcEditAPP6 = new QWidget(m_internal->m_tabSidcEdit);
|
|
QWidget * sidcEditMIL2525D = new QWidget(m_internal->m_tabSidcEdit);
|
|
|
|
|
|
m_internal->m_tabSidcEdit->addWidget(sidcEditAPP6); // SymbologyTypeStackIndex::APP6
|
|
m_internal->m_tabSidcEdit->addWidget(sidcEditMIL2525D); // SymbologyTypeStackIndex::MIL2525D
|
|
|
|
buildSidcModifierTab_APP6(sidcEditAPP6);
|
|
buildSidcModifierTab_MIL2525D( sidcEditMIL2525D );
|
|
|
|
|
|
buildFieldModifierTab(m_internal->m_tabFieldEdit);
|
|
|
|
|
|
buildPreview(m_internal->m_tabPreview);
|
|
|
|
|
|
} // SymbolModificationWidget::SymbolModificationWidget
|
|
|
|
void SymbolModificationWidget::retranslate()
|
|
{
|
|
// FIXME: UI Retranslation does not work with the entire Plan Editor, as there are no UIs ...
|
|
//translate(m_ui, tr("??"));
|
|
}
|
|
|
|
void SymbolModificationWidget::buildSidcModifierTab_MIL2525D(QWidget *widget)
|
|
{
|
|
QHBoxLayout *layout = new QHBoxLayout(widget);
|
|
QFormLayout *layoutEditLeft = new QFormLayout();
|
|
QFormLayout *layoutEditRight = new QFormLayout();
|
|
|
|
layout->addStretch(2);
|
|
layout->addLayout(layoutEditLeft);
|
|
layout->addStretch(2);
|
|
QFrame *separator = new QFrame(widget);
|
|
separator->setFrameStyle(QFrame::HLine | QFrame::Plain);
|
|
layout->addWidget(separator);
|
|
layout->addStretch(2);
|
|
layout->addLayout(layoutEditRight);
|
|
layout->addStretch(2);
|
|
|
|
// Context
|
|
m_internal->m_cbContext_MIL2525D = new EnumComboBox<AdvancedSymbology::SidcDefinitions::Context>(widget);
|
|
m_internal->m_cbContext_MIL2525D->insertItems(AdvancedSymbology::SidcDefinitions::contexts());
|
|
|
|
connect(m_internal->m_cbContext_MIL2525D
|
|
, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged)
|
|
, this
|
|
, &SymbolModificationWidget::onContextChanged);
|
|
|
|
// Identity
|
|
m_internal->m_cbIdentity_MIL2525D = new EnumComboBox<AdvancedSymbology::SidcDefinitions::Identity>(widget);
|
|
m_internal->m_cbIdentity_MIL2525D->insertItems(AdvancedSymbology::SidcDefinitions::identities());
|
|
|
|
connect(m_internal->m_cbIdentity_MIL2525D
|
|
, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged)
|
|
, this
|
|
, &SymbolModificationWidget::onIdentityChanged);
|
|
|
|
// Status
|
|
m_internal->m_cbStatus_MIL2525D = new EnumComboBox<AdvancedSymbology::SidcDefinitions::Status>(widget);
|
|
m_internal->m_cbStatus_MIL2525D->insertItems(AdvancedSymbology::SidcDefinitions::statuss());
|
|
|
|
connect(m_internal->m_cbStatus_MIL2525D
|
|
, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged)
|
|
, this
|
|
, &SymbolModificationWidget::onStatusChanged);
|
|
|
|
// HQTFDummy
|
|
m_internal->m_cbHQTFDummy_MIL2525D = new EnumComboBox<AdvancedSymbology::SidcDefinitions::HQTFDummy>(widget);
|
|
m_internal->m_cbHQTFDummy_MIL2525D->insertItems(AdvancedSymbology::SidcDefinitions::hQTFDummy());
|
|
|
|
connect(m_internal->m_cbHQTFDummy_MIL2525D
|
|
, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged)
|
|
, this
|
|
, &SymbolModificationWidget::onHQTFDummyChanged);
|
|
|
|
layoutEditLeft->setHorizontalSpacing(10);
|
|
layoutEditLeft->setLabelAlignment(Qt::AlignRight);
|
|
|
|
layoutEditLeft->addRow(tr("Context"), m_internal->m_cbContext_MIL2525D);
|
|
layoutEditLeft->addRow(tr("Identity"), m_internal->m_cbIdentity_MIL2525D);
|
|
layoutEditLeft->addRow(tr("Status"), m_internal->m_cbStatus_MIL2525D);
|
|
layoutEditLeft->addRow(tr("HqTfDummy"), m_internal->m_cbHQTFDummy_MIL2525D);
|
|
|
|
// AmplifierGroup
|
|
m_internal->m_cbAmplifierGroup_MIL2525D = new EnumComboBox<AdvancedSymbology::SidcDefinitions::AmplifierGroup>(widget);
|
|
m_internal->m_cbAmplifierGroup_MIL2525D->insertItems(AdvancedSymbology::SidcDefinitions::amplifierGroups());
|
|
|
|
connect(m_internal->m_cbAmplifierGroup_MIL2525D
|
|
, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged)
|
|
, this
|
|
, &SymbolModificationWidget::onAmplifierGroupChanged, Qt::DirectConnection); // as soon as possible!!!
|
|
|
|
// AmplifierDescriptor
|
|
m_internal->m_cbAmplifierDescriptor_MIL2525D = new EnumComboBox<int>(widget);
|
|
// to fill->use slot of primary ComboBox:
|
|
onAmplifierGroupChanged();
|
|
|
|
connect(m_internal->m_cbAmplifierDescriptor_MIL2525D
|
|
, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged)
|
|
, this
|
|
, &SymbolModificationWidget::onAmplifierDesriptorChanged);
|
|
|
|
// Sector1Modifier
|
|
m_internal->m_cbSector1Modifier_MIL2525D = new EnumComboBox<unsigned int>(widget);
|
|
connect(m_internal->m_cbSector1Modifier_MIL2525D
|
|
, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged)
|
|
, this
|
|
, &SymbolModificationWidget::onSector1ModifierChanged);
|
|
|
|
// Sector2Modifier
|
|
m_internal->m_cbSector2Modifier_MIL2525D = new EnumComboBox<unsigned int>(widget);
|
|
connect(m_internal->m_cbSector2Modifier_MIL2525D
|
|
, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged)
|
|
, this
|
|
, &SymbolModificationWidget::onSector2ModifierChanged);
|
|
|
|
|
|
layoutEditRight->setHorizontalSpacing(10);
|
|
layoutEditRight->setLabelAlignment(Qt::AlignRight);
|
|
|
|
layoutEditRight->addRow(tr("AmplifierGroup"), m_internal->m_cbAmplifierGroup_MIL2525D);
|
|
layoutEditRight->addRow(tr("AmplifierDescriptor"), m_internal->m_cbAmplifierDescriptor_MIL2525D);
|
|
separator = new QFrame(widget);
|
|
separator->setFrameStyle(QFrame::HLine | QFrame::Plain);
|
|
layoutEditRight->addRow(separator);
|
|
layoutEditRight->addRow( tr("Sector 1 Modifier"), m_internal->m_cbSector1Modifier_MIL2525D );
|
|
layoutEditRight->addRow( tr("Sector 2 Modifier"), m_internal->m_cbSector2Modifier_MIL2525D );
|
|
|
|
} // void SymbolModificationWidget::buildSidcModifierTab_MIL2525D( QWidget * widget )
|
|
|
|
|
|
void SymbolModificationWidget::buildSidcModifierTab_APP6(QWidget * widget)
|
|
{
|
|
QFormLayout *layout = new QFormLayout(widget);
|
|
|
|
// Identity
|
|
m_internal->m_cbIdentity_APP6 = new EnumComboBox<AdvancedSymbology::SidcDefinitions::Identity>(widget);
|
|
m_internal->m_cbIdentity_APP6->insertItems(AdvancedSymbology::SidcDefinitions::identities());
|
|
|
|
m_internal->m_cbStatus_APP6 = new MyComboBox(widget);
|
|
m_internal->m_cbOrderOfBattle_APP6 = new MyComboBox(widget);
|
|
m_internal->m_cbSize_APP6 = new MyComboBox(widget);
|
|
m_internal->m_cbSizeHQ_APP6 = new MyComboBox(widget);
|
|
m_internal->m_cbSizeTF_APP6 = new MyComboBox(widget);
|
|
m_internal->m_cbSizeFDHQ_APP6 = new MyComboBox(widget);
|
|
m_internal->m_cbSizeFDTF_APP6 = new MyComboBox(widget);
|
|
m_internal->m_cbSizeFD_APP6 = new MyComboBox(widget);
|
|
m_internal->m_cbMobility_APP6 = new MyComboBox(widget);
|
|
|
|
// Size/Mobility
|
|
// Zwei abhaengige ComboBoxen
|
|
m_internal->m_cbStatus_APP6->addItem(tr("Anticipated/Planned"), QVariant(QLatin1Char('A')));
|
|
m_internal->m_cbStatus_APP6->addItem(tr("Present") , QVariant(QLatin1Char('P')));
|
|
|
|
m_internal->m_cbOrderOfBattle_APP6->addItem(tr("None") , QVariant(QLatin1Char('*')));
|
|
m_internal->m_cbOrderOfBattle_APP6->addItem(tr("Air OB") , QVariant(QLatin1Char('A')));
|
|
m_internal->m_cbOrderOfBattle_APP6->addItem(tr("Electronic OB") , QVariant(QLatin1Char('E')));
|
|
m_internal->m_cbOrderOfBattle_APP6->addItem(tr("Civilian OB") , QVariant(QLatin1Char('C')));
|
|
m_internal->m_cbOrderOfBattle_APP6->addItem(tr("Ground OB") , QVariant(QLatin1Char('G')));
|
|
m_internal->m_cbOrderOfBattle_APP6->addItem(tr("Maritime OB") , QVariant(QLatin1Char('M')));
|
|
m_internal->m_cbOrderOfBattle_APP6->addItem(tr("Strategic Force Related"), QVariant(QLatin1Char('S')));
|
|
m_internal->m_cbOrderOfBattle_APP6->addItem(tr("Control Markings") , QVariant(QLatin1Char('X')));
|
|
|
|
m_internal->m_cbSize_APP6->addItem(tr("None") , QStringLiteral("--"));
|
|
m_internal->m_cbSize_APP6->addItem(tr("Team/Crew") , QStringLiteral("_A"));
|
|
m_internal->m_cbSize_APP6->addItem(tr("Squad") , QStringLiteral("_B"));
|
|
m_internal->m_cbSize_APP6->addItem(tr("Platoon") , QStringLiteral("_C"));
|
|
m_internal->m_cbSize_APP6->addItem(tr("Company") , QStringLiteral("_D"));
|
|
m_internal->m_cbSize_APP6->addItem(tr("Battalion") , QStringLiteral("_E"));
|
|
m_internal->m_cbSize_APP6->addItem(tr("Regiment/Group") , QStringLiteral("_F"));
|
|
m_internal->m_cbSize_APP6->addItem(tr("Brigade") , QStringLiteral("_H"));
|
|
m_internal->m_cbSize_APP6->addItem(tr("Division") , QStringLiteral("_I"));
|
|
m_internal->m_cbSize_APP6->addItem(tr("Corps/Mef") , QStringLiteral("_J"));
|
|
m_internal->m_cbSize_APP6->addItem(tr("Army") , QStringLiteral("_K"));
|
|
m_internal->m_cbSize_APP6->addItem(tr("Army Group/Front"), QStringLiteral("_L"));
|
|
m_internal->m_cbSize_APP6->addItem(tr("Region") , QStringLiteral("-M"));
|
|
|
|
m_internal->m_cbSizeHQ_APP6->addItem(tr("None") , QStringLiteral("--"));
|
|
m_internal->m_cbSizeHQ_APP6->addItem(tr("Headquarters (HQ)"), QStringLiteral("A-"));
|
|
m_internal->m_cbSizeHQ_APP6->addItem(tr("HQ Team/Crew") , QStringLiteral("AA"));
|
|
m_internal->m_cbSizeHQ_APP6->addItem(tr("HQ Squad") , QStringLiteral("AB"));
|
|
m_internal->m_cbSizeHQ_APP6->addItem(tr("HQ Section") , QStringLiteral("AC"));
|
|
m_internal->m_cbSizeHQ_APP6->addItem(tr("HQ Platoon") , QStringLiteral("AD"));
|
|
m_internal->m_cbSizeHQ_APP6->addItem(tr("HQ Company") , QStringLiteral("AE"));
|
|
m_internal->m_cbSizeHQ_APP6->addItem(tr("HQ Battalion") , QStringLiteral("AF"));
|
|
m_internal->m_cbSizeHQ_APP6->addItem(tr("HQ Regiment/Group"), QStringLiteral("AG"));
|
|
m_internal->m_cbSizeHQ_APP6->addItem(tr("HQ Brigade") , QStringLiteral("AH"));
|
|
m_internal->m_cbSizeHQ_APP6->addItem(tr("HQ Division") , QStringLiteral("AI"));
|
|
m_internal->m_cbSizeHQ_APP6->addItem(tr("HQ Corp/MEF") , QStringLiteral("AJ"));
|
|
m_internal->m_cbSizeHQ_APP6->addItem(tr("HQ Army") , QStringLiteral("AK"));
|
|
m_internal->m_cbSizeHQ_APP6->addItem(tr("HQ Region") , QStringLiteral("AM"));
|
|
|
|
m_internal->m_cbSizeTF_APP6->addItem(tr("None") , QStringLiteral("--"));
|
|
m_internal->m_cbSizeTF_APP6->addItem(tr("Task Force (TF) HQ"), QStringLiteral("B-"));
|
|
m_internal->m_cbSizeTF_APP6->addItem(tr("TF Team/Crew") , QStringLiteral("BA"));
|
|
m_internal->m_cbSizeTF_APP6->addItem(tr("TF Squad") , QStringLiteral("BB"));
|
|
m_internal->m_cbSizeTF_APP6->addItem(tr("TF Section") , QStringLiteral("BC"));
|
|
m_internal->m_cbSizeTF_APP6->addItem(tr("TF Platoon") , QStringLiteral("BD"));
|
|
m_internal->m_cbSizeTF_APP6->addItem(tr("TF Company") , QStringLiteral("BE"));
|
|
m_internal->m_cbSizeTF_APP6->addItem(tr("TF Battalion") , QStringLiteral("BF"));
|
|
m_internal->m_cbSizeTF_APP6->addItem(tr("TF Regiment/Group") , QStringLiteral("BG"));
|
|
m_internal->m_cbSizeTF_APP6->addItem(tr("TF Brigade") , QStringLiteral("BH"));
|
|
m_internal->m_cbSizeTF_APP6->addItem(tr("TF Division") , QStringLiteral("BI"));
|
|
m_internal->m_cbSizeTF_APP6->addItem(tr("TF Corp/MEF") , QStringLiteral("BJ"));
|
|
m_internal->m_cbSizeTF_APP6->addItem(tr("TF Army") , QStringLiteral("BK"));
|
|
m_internal->m_cbSizeTF_APP6->addItem(tr("TF Region") , QStringLiteral("BM"));
|
|
|
|
m_internal->m_cbSizeFDHQ_APP6->addItem(tr("None") , QStringLiteral("--"));
|
|
m_internal->m_cbSizeFDHQ_APP6->addItem(tr("Feint Dummy (FD) HQ") , QStringLiteral("C-"));
|
|
m_internal->m_cbSizeFDHQ_APP6->addItem(tr("FD HQ Team/Crew") , QStringLiteral("CA"));
|
|
m_internal->m_cbSizeFDHQ_APP6->addItem(tr("FD HQ Squad") , QStringLiteral("CB"));
|
|
m_internal->m_cbSizeFDHQ_APP6->addItem(tr("FD HQ Section") , QStringLiteral("CC"));
|
|
m_internal->m_cbSizeFDHQ_APP6->addItem(tr("FD HQ Platoon)") , QStringLiteral("CD"));
|
|
m_internal->m_cbSizeFDHQ_APP6->addItem(tr("FD HQ Company") , QStringLiteral("CE"));
|
|
m_internal->m_cbSizeFDHQ_APP6->addItem(tr("FD HQ Battalion") , QStringLiteral("CF"));
|
|
m_internal->m_cbSizeFDHQ_APP6->addItem(tr("FD HQ Regiment/Group"), QStringLiteral("CG"));
|
|
m_internal->m_cbSizeFDHQ_APP6->addItem(tr("FD HQ Brigade") , QStringLiteral("CH"));
|
|
m_internal->m_cbSizeFDHQ_APP6->addItem(tr("FD HQ Division") , QStringLiteral("CI"));
|
|
m_internal->m_cbSizeFDHQ_APP6->addItem(tr("FD HQ Corp/MEF") , QStringLiteral("CJ"));
|
|
m_internal->m_cbSizeFDHQ_APP6->addItem(tr("FD HQ Army") , QStringLiteral("CK"));
|
|
m_internal->m_cbSizeFDHQ_APP6->addItem(tr("FD HQ Region") , QStringLiteral("CM"));
|
|
|
|
m_internal->m_cbSizeFDTF_APP6->addItem(tr("None") , QStringLiteral("--"));
|
|
m_internal->m_cbSizeFDTF_APP6->addItem(tr("Feint Dummy (FD/TF) HQ") , QStringLiteral("D-"));
|
|
m_internal->m_cbSizeFDTF_APP6->addItem(tr("FD/TF HQ Team/Crew") , QStringLiteral("DA"));
|
|
m_internal->m_cbSizeFDTF_APP6->addItem(tr("FD/TF HQ Squad") , QStringLiteral("DB"));
|
|
m_internal->m_cbSizeFDTF_APP6->addItem(tr("FD/TF HQ Section") , QStringLiteral("DC"));
|
|
m_internal->m_cbSizeFDTF_APP6->addItem(tr("FD/TF HQ Platoon)") , QStringLiteral("DD"));
|
|
m_internal->m_cbSizeFDTF_APP6->addItem(tr("FD/TF HQ Company") , QStringLiteral("DE"));
|
|
m_internal->m_cbSizeFDTF_APP6->addItem(tr("FD/TF HQ Battalion") , QStringLiteral("DF"));
|
|
m_internal->m_cbSizeFDTF_APP6->addItem(tr("FD/TF HQ Regiment/Group"), QStringLiteral("DG"));
|
|
m_internal->m_cbSizeFDTF_APP6->addItem(tr("FD/TF HQ Brigade") , QStringLiteral("DH"));
|
|
m_internal->m_cbSizeFDTF_APP6->addItem(tr("FD/TF HQ Division") , QStringLiteral("DI"));
|
|
m_internal->m_cbSizeFDTF_APP6->addItem(tr("FD/TF HQ Corp/MEF") , QStringLiteral("DJ"));
|
|
m_internal->m_cbSizeFDTF_APP6->addItem(tr("FD/TF HQ Army") , QStringLiteral("DK"));
|
|
m_internal->m_cbSizeFDTF_APP6->addItem(tr("FD/TF HQ Region") , QStringLiteral("DM"));
|
|
|
|
|
|
m_internal->m_cbSizeFD_APP6->addItem(tr("None") , QStringLiteral("--"));
|
|
m_internal->m_cbSizeFD_APP6->addItem(tr("Feint Dummy (FD)") , QStringLiteral("F-"));
|
|
m_internal->m_cbSizeFD_APP6->addItem(tr("FD Team/Crew") , QStringLiteral("FA"));
|
|
m_internal->m_cbSizeFD_APP6->addItem(tr("FD Squad") , QStringLiteral("FB"));
|
|
m_internal->m_cbSizeFD_APP6->addItem(tr("FD Section") , QStringLiteral("FC"));
|
|
m_internal->m_cbSizeFD_APP6->addItem(tr("FD Platoon)") , QStringLiteral("FD"));
|
|
m_internal->m_cbSizeFD_APP6->addItem(tr("FD Company") , QStringLiteral("FE"));
|
|
m_internal->m_cbSizeFD_APP6->addItem(tr("FD Battalion") , QStringLiteral("FF"));
|
|
m_internal->m_cbSizeFD_APP6->addItem(tr("FD Regiment/Group"), QStringLiteral("FG"));
|
|
m_internal->m_cbSizeFD_APP6->addItem(tr("FD Brigade") , QStringLiteral("FH"));
|
|
m_internal->m_cbSizeFD_APP6->addItem(tr("FD Division") , QStringLiteral("FI"));
|
|
m_internal->m_cbSizeFD_APP6->addItem(tr("FD Corp/MEF") , QStringLiteral("FJ"));
|
|
m_internal->m_cbSizeFD_APP6->addItem(tr("FD Army") , QStringLiteral("FK"));
|
|
m_internal->m_cbSizeFD_APP6->addItem(tr("FD Region") , QStringLiteral("FM"));
|
|
|
|
|
|
m_internal->m_cbMobility_APP6->addItem(tr("None") , QStringLiteral("--"));
|
|
m_internal->m_cbMobility_APP6->addItem(tr("Mobility Equipment") , QStringLiteral("M-"));
|
|
m_internal->m_cbMobility_APP6->addItem(tr("Mobility Fixed Wing") , QStringLiteral("MF"));
|
|
m_internal->m_cbMobility_APP6->addItem(tr("Mobility Helicopter") , QStringLiteral("MH"));
|
|
m_internal->m_cbMobility_APP6->addItem(tr("Mobility Missile") , QStringLiteral("MM"));
|
|
m_internal->m_cbMobility_APP6->addItem(tr("Mobility Wheeled / Limited Cross Country") , QStringLiteral("MO"));
|
|
m_internal->m_cbMobility_APP6->addItem(tr("Mobility Cross Country") , QStringLiteral("MP"));
|
|
m_internal->m_cbMobility_APP6->addItem(tr("Mobility Wheeled and Tracked Combination") , QStringLiteral("MR"));
|
|
m_internal->m_cbMobility_APP6->addItem(tr("Mobility Towed") , QStringLiteral("MS"));
|
|
m_internal->m_cbMobility_APP6->addItem(tr("Mobility Rail") , QStringLiteral("MT"));
|
|
m_internal->m_cbMobility_APP6->addItem(tr("Mobility Space") , QStringLiteral("S-"));
|
|
|
|
layout->addRow(tr("APP6 Affiliation") , m_internal->m_cbIdentity_APP6);
|
|
layout->addRow(tr("APP6 Size") , m_internal->m_cbSize_APP6);
|
|
layout->addRow(tr("APP6 Headquarters (HQ)") , m_internal->m_cbSizeHQ_APP6);
|
|
layout->addRow(tr("APP6 Task Force (TF) HQ") , m_internal->m_cbSizeTF_APP6);
|
|
layout->addRow(tr("APP6 Feint Dummy (FD) HQ") , m_internal->m_cbSizeFDHQ_APP6);
|
|
layout->addRow(tr("APP6 Feint Dummy (FD/TF) HQ"), m_internal->m_cbSizeFDTF_APP6);
|
|
layout->addRow(tr("APP6 Feint Dummy (FD)") , m_internal->m_cbSizeFD_APP6);
|
|
layout->addRow(tr("Mobility") , m_internal->m_cbMobility_APP6);
|
|
layout->addRow(tr("APP6 Status") , m_internal->m_cbStatus_APP6);
|
|
layout->addRow(tr("APP6 Order Of Battle") , m_internal->m_cbOrderOfBattle_APP6);
|
|
|
|
connect( m_internal->m_cbIdentity_APP6, static_cast<void (QComboBox::*)(int)>(&QComboBox::activated), this, [this](int)
|
|
{
|
|
if (!m_internal->m_tabWidget->isEnabled()) return;
|
|
|
|
m_internal->m_lastModifiedSidc = modifiedSidc();
|
|
|
|
QChar code = QLatin1Char('*');
|
|
|
|
switch (m_internal->m_cbIdentity_APP6->currentValue())
|
|
{
|
|
case SidcDefinitions::Identity::Pending : code = QLatin1Char('P'); break;
|
|
case SidcDefinitions::Identity::Unknown : code = QLatin1Char('U'); break;
|
|
case SidcDefinitions::Identity::AssumedFriend : code = QLatin1Char('A'); break;
|
|
case SidcDefinitions::Identity::Friend : code = QLatin1Char('F'); break;
|
|
case SidcDefinitions::Identity::Neutral : code = QLatin1Char('N'); break;
|
|
case SidcDefinitions::Identity::SuspectJoker : code = QLatin1Char('S'); break;
|
|
case SidcDefinitions::Identity::HostileFaker : code = QLatin1Char('H'); break;
|
|
}
|
|
|
|
QString rawSidc = SidcCodec::decodeRawSidc(modifiedSidc());
|
|
rawSidc[1] = code;
|
|
m_internal->m_modifiedSidc = SidcCodec::encodeComplete(SymbologyType::APP6B, rawSidc);
|
|
|
|
emitChanged();
|
|
});
|
|
|
|
|
|
connect(m_internal->m_cbSize_APP6 , static_cast<void (QComboBox::*)(int)>(&QComboBox::activated), this, &SymbolModificationWidget::onChangeApp6SizeMobility);
|
|
connect(m_internal->m_cbSizeHQ_APP6 , static_cast<void (QComboBox::*)(int)>(&QComboBox::activated), this, &SymbolModificationWidget::onChangeApp6SizeMobility);
|
|
connect(m_internal->m_cbSizeTF_APP6 , static_cast<void (QComboBox::*)(int)>(&QComboBox::activated), this, &SymbolModificationWidget::onChangeApp6SizeMobility);
|
|
connect(m_internal->m_cbSizeFDHQ_APP6, static_cast<void (QComboBox::*)(int)>(&QComboBox::activated), this, &SymbolModificationWidget::onChangeApp6SizeMobility);
|
|
connect(m_internal->m_cbSizeFDTF_APP6, static_cast<void (QComboBox::*)(int)>(&QComboBox::activated), this, &SymbolModificationWidget::onChangeApp6SizeMobility);
|
|
connect(m_internal->m_cbSizeFD_APP6 , static_cast<void (QComboBox::*)(int)>(&QComboBox::activated), this, &SymbolModificationWidget::onChangeApp6SizeMobility);
|
|
connect(m_internal->m_cbMobility_APP6, static_cast<void (QComboBox::*)(int)>(&QComboBox::activated), this, &SymbolModificationWidget::onChangeApp6SizeMobility);
|
|
|
|
|
|
connect(m_internal->m_cbStatus_APP6, static_cast<void (QComboBox::*)(int)>(&QComboBox::activated), this, [this]()
|
|
{
|
|
if (!m_internal->m_tabWidget->isEnabled()) return;
|
|
|
|
m_internal->m_lastModifiedSidc = modifiedSidc();
|
|
|
|
QChar code = m_internal->m_cbStatus_APP6->currentData().toChar();
|
|
|
|
QString rawSidc = SidcCodec::decodeRawSidc(modifiedSidc());
|
|
rawSidc[3] = code;
|
|
m_internal->m_modifiedSidc = SidcCodec::encodeComplete(SymbologyType::APP6B, rawSidc);
|
|
|
|
emitChanged();
|
|
});
|
|
|
|
connect(m_internal->m_cbOrderOfBattle_APP6, static_cast<void (QComboBox::*)(int)>(&QComboBox::activated), this, [this]()
|
|
{
|
|
if (!m_internal->m_tabWidget->isEnabled()) return;
|
|
|
|
m_internal->m_lastModifiedSidc = modifiedSidc();
|
|
|
|
QChar code = m_internal->m_cbOrderOfBattle_APP6->currentData().toChar();
|
|
|
|
QString rawSidc = SidcCodec::decodeRawSidc(modifiedSidc());
|
|
rawSidc[14] = code;
|
|
m_internal->m_modifiedSidc = SidcCodec::encodeComplete(SymbologyType::APP6B, rawSidc);
|
|
|
|
emitChanged();
|
|
});
|
|
} // void SymbolModificationWidget::buildSidcModifierTab_APP6(QWidget * widget)
|
|
|
|
|
|
void SymbolModificationWidget::buildFieldModifierTab(QWidget *widget)
|
|
{
|
|
QVBoxLayout *layout = new QVBoxLayout(widget);
|
|
QHBoxLayout *layoutFieldEdit = new QHBoxLayout();
|
|
|
|
m_internal->m_cbFieldTitle = new MyComboBox(widget);
|
|
m_internal->m_leFieldValue = new QLineEdit(widget);
|
|
QPushButton *pbAdd = new QPushButton( QIcon(QStringLiteral("icon:add.svg")), QString(), widget );
|
|
QPushButton *pbDel = new QPushButton( QIcon(QStringLiteral("icon:remove.svg")), QString(), widget );
|
|
|
|
layoutFieldEdit->addWidget(new QLabel(tr("Field"), widget));
|
|
layoutFieldEdit->addWidget(m_internal->m_cbFieldTitle, 2);
|
|
layoutFieldEdit->addWidget(new QLabel(tr("Value"), widget));
|
|
layoutFieldEdit->addWidget(m_internal->m_leFieldValue, 3);
|
|
layoutFieldEdit->addWidget(pbAdd);
|
|
layoutFieldEdit->addWidget(pbDel);
|
|
|
|
m_internal->m_fieldTableModel = new FieldTableModel(widget);
|
|
|
|
m_internal->m_fieldTable = new QTableView(widget);
|
|
m_internal->m_fieldTable->setSelectionBehavior(QAbstractItemView::SelectionBehavior::SelectRows);
|
|
m_internal->m_fieldTable->setSelectionMode(QAbstractItemView::SelectionMode::SingleSelection);
|
|
m_internal->m_fieldTable->setModel(m_internal->m_fieldTableModel);
|
|
m_internal->m_fieldTable->setAlternatingRowColors(true);
|
|
m_internal->m_fieldTable->setShowGrid(false);
|
|
|
|
QHeaderView *header = m_internal->m_fieldTable->horizontalHeader();
|
|
|
|
header->setSectionResizeMode(0, QHeaderView::ResizeMode::Stretch);
|
|
header->setSectionResizeMode(1, QHeaderView::ResizeMode::Stretch);
|
|
|
|
layout->addLayout(layoutFieldEdit);
|
|
layout->addWidget(m_internal->m_fieldTable, 2);
|
|
|
|
connect(pbAdd, &QPushButton::clicked, this, &SymbolModificationWidget::onFieldAttributeAdd);
|
|
connect(pbDel, &QPushButton::clicked, this, &SymbolModificationWidget::onFieldAttributeRemove);
|
|
|
|
connect(m_internal->m_leFieldValue, &QLineEdit::returnPressed, this, [this]() { onFieldAttributeAdd(true); });
|
|
connect(m_internal->m_fieldTable, &QTableView::clicked, this, &SymbolModificationWidget::onFieldItemActived);
|
|
connect(m_internal->m_fieldTable, &QTableView::activated, this, &SymbolModificationWidget::onFieldItemActived);
|
|
|
|
connect(m_internal->m_cbFieldTitle, static_cast<void (QComboBox::*)(const QString &)>(&QComboBox::activated), this, &SymbolModificationWidget::onSetFieldTitle);
|
|
|
|
} // void SymbolModificationWidget::buildFieldModifierTab( QWidget * widget )
|
|
|
|
|
|
void SymbolModificationWidget::emitChanged()
|
|
{
|
|
emit changed();
|
|
} // void SymbolModificationWidget::emitChanged()
|
|
|
|
|
|
void SymbolModificationWidget::buildPreview(QWidget *widget)
|
|
{
|
|
delete m_previewTab;
|
|
|
|
m_previewTab = new PreviewTab(widget);
|
|
|
|
m_previewTab->lbBaseSymbolName->setAlignment(Qt::AlignCenter);
|
|
|
|
m_previewTab->lbSidcOutImg->setAlignment(Qt::AlignCenter);
|
|
m_previewTab->lbSidcInImg ->setAlignment(Qt::AlignCenter);
|
|
|
|
m_previewTab->layout->addWidget(m_previewTab->lbBaseSymbolName);
|
|
m_previewTab->layout->addLayout(m_previewTab->layoutPreview, 2);
|
|
m_previewTab->layout->addLayout(m_previewTab->layoutPreview);
|
|
|
|
m_previewTab->layoutPreview->setHorizontalSpacing(10);
|
|
m_previewTab->layoutPreview->setVerticalSpacing(10);
|
|
m_previewTab->layoutPreview->setLabelAlignment(Qt::AlignRight);
|
|
|
|
m_previewTab->layoutPreview->addRow(tr("Base Symbol Code"), m_previewTab->lbBaseSymbolId);
|
|
|
|
|
|
QFrame *separator = new QFrame(widget);
|
|
separator->setFrameStyle(QFrame::HLine | QFrame::Plain);
|
|
m_previewTab->layoutPreview->addRow(separator);
|
|
m_previewTab->layoutPreview->addRow(tr("Modified SIDC"), m_previewTab->lbSidcOutTxt);
|
|
m_previewTab->layoutPreview->addWidget(m_previewTab->lbSidcOutImg);
|
|
|
|
separator = new QFrame(widget);
|
|
separator->setFrameStyle(QFrame::HLine | QFrame::Plain);
|
|
m_previewTab->layoutPreview->addRow(separator);
|
|
m_previewTab->layoutPreview->addRow(tr("Original SIDC"), m_previewTab->lbSidcInTxt);
|
|
m_previewTab->layoutPreview->addWidget(m_previewTab->lbSidcInImg);
|
|
|
|
connect(this, &SymbolModificationWidget::changed,
|
|
this, &SymbolModificationWidget::updatePreviewTab);
|
|
|
|
} // void SymbolModificationWidget::buildPreview(QWidget * widget)
|
|
|
|
void SymbolModificationWidget::updatePreviewTab()
|
|
{
|
|
if (!m_previewTab)
|
|
return;
|
|
|
|
const QString &originalSidc = this->originalSidc();
|
|
const QString &modifiedSidc = this->modifiedSidc();
|
|
|
|
if (originalSidc.isEmpty())
|
|
return;
|
|
|
|
m_previewTab->lbBaseSymbolId ->setText(SidcCodec::decodeRawSidc(m_internal->m_baseSymbolCode));
|
|
m_previewTab->lbBaseSymbolName->setText(this->symbolName());
|
|
|
|
m_previewTab->lbSidcInTxt ->setText(SidcCodec::decodeRawSidc(originalSidc));
|
|
m_previewTab->lbSidcOutTxt->setText(SidcCodec::decodeRawSidc(modifiedSidc));
|
|
|
|
setSymbolPixmap(m_previewTab->lbSidcInImg, originalSidc);
|
|
if (originalSidc == modifiedSidc)
|
|
m_previewTab->lbSidcOutImg->setPixmap(QPixmap());
|
|
else
|
|
setSymbolPixmap(m_previewTab->lbSidcOutImg, modifiedSidc);
|
|
}
|
|
|
|
SymbolModificationWidget::~SymbolModificationWidget()
|
|
{
|
|
delete m_internal;
|
|
m_internal = nullptr;
|
|
}
|
|
|
|
|
|
static void fillUpComboBox(const AdvancedSymbology::SymbolDictionary &dict, const QString &baseSymbolCode, unsigned int sector, QComboBox *cb)
|
|
{
|
|
cb->clear();
|
|
|
|
cb->addItem(QIcon(), QStringLiteral("0 Not Applicable"), 0);
|
|
const QList<AdvancedSymbology::ModifierData> &modifierList = dict.symbolModifierList(baseSymbolCode, sector);
|
|
for (const auto &modifier : modifierList)
|
|
{
|
|
const QString &modName = QString::number(modifier.m_modifierValue) + QLatin1Char(' ') + modifier.m_modifierName;
|
|
cb->addItem(QIcon(modifier.m_modifierIcon), modName, modifier.m_modifierValue);
|
|
}
|
|
} // static void fillUpComboBox(const QString & baseSymbolCode, unsigned int sector, QComboBox * cb)
|
|
|
|
|
|
SymbologyType SymbolModificationWidget::symbologyType() const
|
|
{
|
|
return m_internal->m_symbologyType;
|
|
} // SymbologyType SymbolModificationWidget::symbologyType() const
|
|
|
|
|
|
bool SymbolModificationWidget::setSidc(const QString &sidc)
|
|
{
|
|
if (sidc.isEmpty())
|
|
return false;
|
|
|
|
const AdvancedSymbology::SymbolDictionary &dict = m_internal->m_dict;
|
|
|
|
if (!m_internal->m_sidcBuilder.setSidc(sidc))
|
|
{
|
|
m_internal->m_tabWidget->setEnabled(false);
|
|
return false;
|
|
}
|
|
|
|
m_internal->m_symbologyType = SidcCodec::decodeSymbologyType(sidc);
|
|
|
|
switch (m_internal->m_symbologyType)
|
|
{
|
|
case SymbologyType::None : return false;
|
|
|
|
case SymbologyType::APP6B : m_internal->m_tabSidcEdit->setCurrentIndex(static_cast<int>(SymbologyTypeStackIndex::APP6)); break;
|
|
|
|
case SymbologyType::APP6D :
|
|
case SymbologyType::MIL2525C :
|
|
case SymbologyType::MIL2525D : m_internal->m_tabSidcEdit->setCurrentIndex(static_cast<int>(SymbologyTypeStackIndex::MIL2525D)); break;
|
|
}
|
|
|
|
|
|
m_internal->m_tabWidget->setEnabled(true);
|
|
|
|
m_internal->m_originalSidc = m_internal->m_sidcBuilder.toSidc();
|
|
m_internal->m_lastModifiedSidc = m_internal->m_sidcBuilder.toSidc();
|
|
m_internal->m_modifiedSidc = m_internal->m_sidcBuilder.toSidc();
|
|
|
|
if (SidcCodec::isCivil(sidc))
|
|
{
|
|
m_internal->m_tabSidcEdit ->setEnabled(false);
|
|
m_internal->m_tabFieldEdit->setEnabled(false);
|
|
m_internal->m_tabPreview ->setEnabled(false);
|
|
|
|
m_internal->m_tabSidcEdit ->hide();
|
|
m_internal->m_tabFieldEdit->hide();
|
|
m_internal->m_tabPreview ->hide();
|
|
|
|
m_internal->m_tabWidget->removeTab(m_internal->m_tabWidget->indexOf(m_internal->m_tabSidcEdit));
|
|
m_internal->m_tabWidget->removeTab(m_internal->m_tabWidget->indexOf(m_internal->m_tabFieldEdit));
|
|
m_internal->m_tabWidget->removeTab(m_internal->m_tabWidget->indexOf(m_internal->m_tabPreview));
|
|
|
|
return false; // ToDo: implement buildParticipantTab and return true here
|
|
}
|
|
|
|
m_internal->m_tabWidget->addTab(m_internal->m_tabSidcEdit, tr("Sector A and B Attributes"));
|
|
|
|
m_internal->m_tabSidcEdit ->setEnabled(true);
|
|
m_internal->m_tabFieldEdit->setEnabled(true);
|
|
|
|
if (m_internal->m_isParticipant)
|
|
{
|
|
m_internal->m_tabWidget->removeTab(m_internal->m_tabWidget->indexOf(m_internal->m_tabFieldEdit));
|
|
|
|
m_internal->m_tabFieldEdit->setEnabled(false);
|
|
m_internal->m_tabFieldEdit->hide();
|
|
}
|
|
else
|
|
{
|
|
m_internal->m_tabWidget->addTab(m_internal->m_tabFieldEdit, tr("Field Modifier"));
|
|
m_internal->m_tabFieldEdit->setEnabled(true);
|
|
}
|
|
|
|
#ifdef LTS_DEBUG
|
|
m_internal->m_tabWidget->addTab(m_internal->m_tabPreview, tr("Preview"));
|
|
m_internal->m_tabPreview->setEnabled(true);
|
|
#endif
|
|
|
|
const QString &baseSymbolCode = AdvancedSymbology::SidcBuilderBase::concreteSidcToBaseSymbolCode(sidc);
|
|
const QString &baseSymbolKey = SidcCodec::decodeRawSidc(baseSymbolCode);
|
|
|
|
|
|
fillUpComboBox(dict, baseSymbolKey, 1, m_internal->m_cbSector1Modifier_MIL2525D);
|
|
fillUpComboBox(dict, baseSymbolKey, 2, m_internal->m_cbSector2Modifier_MIL2525D);
|
|
|
|
m_internal->m_cbSector1Modifier_MIL2525D->setEnabled((m_internal->m_cbSector1Modifier_MIL2525D->count() > 0));
|
|
m_internal->m_cbSector2Modifier_MIL2525D->setEnabled((m_internal->m_cbSector2Modifier_MIL2525D->count() > 0));
|
|
|
|
m_internal->m_baseSymbolCode = baseSymbolCode;
|
|
|
|
if (!analyze(m_internal->m_symbologyType,sidc))
|
|
return false;
|
|
|
|
const AdvancedSymbology::SymbolProperties &symbolProps = dict.symbolProperties(baseSymbolCode);
|
|
|
|
if (symbolProps.geometryType() != AdvancedSymbology::GeometryType::Point)
|
|
{
|
|
const QString &widgetName = m_internal->m_tabPreview->objectName();
|
|
m_internal->m_tabPreview->setStyleSheet(QLatin1String("QWidget#") + widgetName + QLatin1String(" { background-color: lightgrey }"));
|
|
}
|
|
else
|
|
m_internal->m_tabPreview->setStyleSheet(QString());
|
|
|
|
QStringList fieldKeys = dict.symbologyAttributeKeyList();
|
|
|
|
fieldKeys.sort();
|
|
|
|
m_internal->m_cbFieldTitle->clear();
|
|
for (const auto &fieldKey : qAsConst(fieldKeys))
|
|
m_internal->m_cbFieldTitle->addItem(fieldKey);
|
|
|
|
if (m_internal->m_tabWidget->isEnabled())
|
|
emitChanged();
|
|
|
|
return true;
|
|
} // bool SymbolModificationWidget::setSidc( const QString & sidc )
|
|
|
|
|
|
const QMap<QString, QVariant> SymbolModificationWidget::fieldAttributes()
|
|
{
|
|
return m_internal->m_fieldTableModel->fieldAttrMap();
|
|
} // const QMap<QString, QVariant> SymbolModificationWidget::fieldAttributes()
|
|
|
|
|
|
bool SymbolModificationWidget::setFieldAttributes(const QMap<QString, QVariant> &fieldAttrMap)
|
|
{
|
|
return m_internal->m_fieldTableModel->setFieldAttrMap(fieldAttrMap);
|
|
} // bool SymbolModificationWidget::setFieldAttributes(const QString & symbolFieldAttr)
|
|
|
|
|
|
bool SymbolModificationWidget::analyze(SymbologyType symbologyType, const QString &sidc)
|
|
{
|
|
if (!m_internal->m_tabWidget->isEnabled()) return false;
|
|
|
|
m_internal->m_lastModifiedSidc = modifiedSidc();
|
|
|
|
m_internal->m_sidcBuilder.setSidc(sidc);
|
|
|
|
switch (symbologyType)
|
|
{
|
|
case SymbologyType::None : break;
|
|
case SymbologyType::APP6B : break;
|
|
case SymbologyType::MIL2525C: break;
|
|
|
|
case SymbologyType::APP6D :
|
|
case SymbologyType::MIL2525D:
|
|
{
|
|
m_internal->m_cbContext_MIL2525D->setCurrent(m_internal->m_sidcBuilder.standardIdentity().context);
|
|
m_internal->m_cbIdentity_MIL2525D->setCurrent(m_internal->m_sidcBuilder.standardIdentity().identity);
|
|
|
|
m_internal->m_cbStatus_MIL2525D->setCurrent(m_internal->m_sidcBuilder.status());
|
|
|
|
m_internal->m_cbHQTFDummy_MIL2525D->setCurrent(m_internal->m_sidcBuilder.hqTfFd());
|
|
|
|
m_internal->m_cbAmplifierGroup_MIL2525D->setCurrent(m_internal->m_sidcBuilder.amplifierGroup());
|
|
|
|
int idxAmpDescr = m_internal->m_cbAmplifierDescriptor_MIL2525D->findData(m_internal->m_sidcBuilder.amplifier2ndDigit());
|
|
|
|
m_internal->m_cbAmplifierDescriptor_MIL2525D->setCurrentIndex(idxAmpDescr);
|
|
|
|
int idxMod1 = m_internal->m_cbSector1Modifier_MIL2525D->findData(m_internal->m_sidcBuilder.sectorModifier1Digit());
|
|
int idxMod2 = m_internal->m_cbSector2Modifier_MIL2525D->findData(m_internal->m_sidcBuilder.sectorModifier2Digit());
|
|
|
|
m_internal->m_cbSector1Modifier_MIL2525D->setCurrentIndex(idxMod1);
|
|
m_internal->m_cbSector2Modifier_MIL2525D->setCurrentIndex(idxMod2);
|
|
} break;
|
|
}
|
|
|
|
m_internal->m_modifiedSidc = m_internal->m_sidcBuilder.toSidc();
|
|
|
|
emitChanged(); // to update previewIcon (sidcNew)
|
|
|
|
return true; // (m_internal->m_sidcDelta.toSidc() == sidc);
|
|
} // bool SymbolModificationWidget::setSidc( const QString & sidc )
|
|
|
|
|
|
QString SymbolModificationWidget::originalSidc() const { return m_internal->m_originalSidc; }
|
|
QString SymbolModificationWidget::modifiedSidc() const { return m_internal->m_modifiedSidc; }
|
|
QString SymbolModificationWidget::lastModifiedSidc() const { return m_internal->m_lastModifiedSidc; }
|
|
|
|
|
|
QString SymbolModificationWidget::symbolName() const
|
|
{
|
|
const QString &baseSymbolCode = AdvancedSymbology::SidcBuilderBase::concreteSidcToBaseSymbolCode(originalSidc());
|
|
const AdvancedSymbology::SymbolDictionary &dict = m_internal->m_dict;
|
|
const AdvancedSymbology::SymbolProperties &symbolProps = dict.symbolProperties(baseSymbolCode);
|
|
return symbolProps.name();
|
|
} // QString SymbolModificationWidget::symbolName() const
|
|
|
|
|
|
void SymbolModificationWidget::setSymbolPixmap(QLabel *label, const QString &sidc)
|
|
{
|
|
label->setPixmap(QPixmap()); // first clear pixmap on label
|
|
|
|
AdvancedSymbology::SymbolResultWatcher *symbolGuard = new AdvancedSymbology::SymbolResultWatcher(this);
|
|
|
|
QObject::connect(symbolGuard, &AdvancedSymbology::SymbolResultWatcher::resultReady, this, [label, symbolGuard]()
|
|
{
|
|
QSharedPointer<AdvancedSymbology::SymbolResult> symbolResult = symbolGuard->symbolResult();
|
|
if (symbolResult)
|
|
{
|
|
QPixmap symbolPixmap = QPixmap::fromImage(symbolResult->symbolImage().image());
|
|
|
|
if (symbolPixmap.width() > 200) symbolPixmap = symbolPixmap.scaledToWidth(200, Qt::TransformationMode::SmoothTransformation);
|
|
if (symbolPixmap.height() > 100) symbolPixmap = symbolPixmap.scaledToHeight(100, Qt::TransformationMode::SmoothTransformation);
|
|
|
|
label->setPixmap(symbolPixmap);
|
|
}
|
|
});
|
|
|
|
const AdvancedSymbology::SymbolDataToRender symDataToRender(sidc, 200);
|
|
|
|
symbolGuard->setSymbolResult(m_internal->m_dict.findImage(symDataToRender));
|
|
|
|
} // void SymbolModificationWidget::setSymbolPixmap( QLabel * label, const QString & sidc )
|
|
|
|
|
|
void SymbolModificationWidget::onRevert()
|
|
{
|
|
const QString &restoreSidc = originalSidc();
|
|
analyze(SidcCodec::decodeSymbologyType(restoreSidc),restoreSidc);
|
|
} // void SymbolModificationWidget::onRevert()
|
|
|
|
|
|
void SymbolModificationWidget::onContextChanged()
|
|
{
|
|
if (!m_internal->m_tabWidget->isEnabled()) return;
|
|
|
|
m_internal->m_lastModifiedSidc = modifiedSidc();
|
|
|
|
AdvancedSymbology::SidcDefinitions::StandardIdentity si = m_internal->m_sidcBuilder.standardIdentity();
|
|
si.context = m_internal->m_cbContext_MIL2525D->currentValue();
|
|
m_internal->m_sidcBuilder.setStandardIdentity(si);
|
|
|
|
m_internal->m_modifiedSidc = m_internal->m_sidcBuilder.toSidc();
|
|
|
|
emitChanged();
|
|
} // void SymbolModificationWidget::onContextChanged()
|
|
|
|
|
|
void SymbolModificationWidget::onIdentityChanged()
|
|
{
|
|
if (!m_internal->m_tabWidget->isEnabled()) return;
|
|
|
|
m_internal->m_lastModifiedSidc = modifiedSidc();
|
|
|
|
AdvancedSymbology::SidcDefinitions::StandardIdentity si = m_internal->m_sidcBuilder.standardIdentity();
|
|
si.identity = m_internal->m_cbIdentity_MIL2525D->currentValue();
|
|
m_internal->m_sidcBuilder.setStandardIdentity(si);
|
|
|
|
m_internal->m_modifiedSidc = m_internal->m_sidcBuilder.toSidc();
|
|
|
|
emitChanged();
|
|
} // void SymbolModificationWidget::onIdentityChanged()
|
|
|
|
|
|
void SymbolModificationWidget::onSymbolSetChanged()
|
|
{
|
|
if (!m_internal->m_tabWidget->isEnabled()) return;
|
|
|
|
m_internal->m_lastModifiedSidc = modifiedSidc();
|
|
|
|
m_internal->m_sidcBuilder.setSymbolSet(m_internal->m_cbSymbolSet_MIL2525D->currentValue());
|
|
m_internal->m_modifiedSidc = m_internal->m_sidcBuilder.toSidc();
|
|
emitChanged();
|
|
} // void SymbolModificationWidget::onSymbolSetChanged()
|
|
|
|
|
|
void SymbolModificationWidget::onStatusChanged()
|
|
{
|
|
if (!m_internal->m_tabWidget->isEnabled()) return;
|
|
|
|
m_internal->m_lastModifiedSidc = modifiedSidc();
|
|
|
|
m_internal->m_sidcBuilder.setStatus(m_internal->m_cbStatus_MIL2525D->currentValue());
|
|
m_internal->m_modifiedSidc = m_internal->m_sidcBuilder.toSidc();
|
|
emitChanged();
|
|
} // void SymbolModificationWidget::onStatusChanged()
|
|
|
|
|
|
void SymbolModificationWidget::onHQTFDummyChanged()
|
|
{
|
|
if (!m_internal->m_tabWidget->isEnabled()) return;
|
|
|
|
m_internal->m_lastModifiedSidc = modifiedSidc();
|
|
|
|
m_internal->m_sidcBuilder.setHqTfFd(m_internal->m_cbHQTFDummy_MIL2525D->currentValue());
|
|
m_internal->m_modifiedSidc = m_internal->m_sidcBuilder.toSidc();
|
|
emitChanged();
|
|
} // void SymbolModificationWidget::onHQTFDummyChanged()
|
|
|
|
|
|
void SymbolModificationWidget::onAmplifierGroupChanged()
|
|
{
|
|
if (!m_internal->m_tabWidget->isEnabled()) return;
|
|
|
|
m_internal->m_lastModifiedSidc = modifiedSidc();
|
|
|
|
const AdvancedSymbology::SidcDefinitions::AmplifierGroup &lifierGroup = m_internal->m_cbAmplifierGroup_MIL2525D->currentValue();
|
|
|
|
// First, renew the secondary comboBox!!!
|
|
// Remember, this is of type QComboBox
|
|
m_internal->m_cbAmplifierDescriptor_MIL2525D->clear();
|
|
|
|
|
|
m_internal->m_cbAmplifierDescriptor_MIL2525D->blockSignals(true);
|
|
{
|
|
int idx = 0;
|
|
|
|
switch (amplifierGroup)
|
|
{
|
|
case AdvancedSymbology::SidcDefinitions::AmplifierGroup::Unknown: break;
|
|
case AdvancedSymbology::SidcDefinitions::AmplifierGroup::Echelon_BrigadeAndBelow:
|
|
{
|
|
const QVector<AdvancedSymbology::SidcDefinitions::EchelonBrigadeAndBelow> &items = AdvancedSymbology::SidcDefinitions::echelonBrigadeAndBelows();
|
|
for (const auto &item : items)
|
|
m_internal->m_cbAmplifierDescriptor_MIL2525D->insertNumberedItem(idx++, QString(AdvancedSymbology::SidcDefinitions::toString(item)), static_cast<int>(item));
|
|
}
|
|
break;
|
|
|
|
case AdvancedSymbology::SidcDefinitions::AmplifierGroup::Echelon_DivisionAndAbove:
|
|
{
|
|
const QVector<AdvancedSymbology::SidcDefinitions::EchelonDivisionAndAbove> &items = AdvancedSymbology::SidcDefinitions::echelonDivisionAndAboves();
|
|
for (const auto &item : items)
|
|
m_internal->m_cbAmplifierDescriptor_MIL2525D->insertNumberedItem(idx++, AdvancedSymbology::SidcDefinitions::toString(item), static_cast<int>(item));
|
|
}
|
|
break;
|
|
|
|
case AdvancedSymbology::SidcDefinitions::AmplifierGroup::Mobility_OnLand:
|
|
{
|
|
const QVector<AdvancedSymbology::SidcDefinitions::MobilityOnLand> &items = AdvancedSymbology::SidcDefinitions::mobilityOnLands();
|
|
for (const auto &item : items)
|
|
m_internal->m_cbAmplifierDescriptor_MIL2525D->insertNumberedItem(idx++, AdvancedSymbology::SidcDefinitions::toString(item), static_cast<int>(item));
|
|
}
|
|
break;
|
|
|
|
case AdvancedSymbology::SidcDefinitions::AmplifierGroup::Mobility_OnWater:
|
|
{
|
|
const QVector<AdvancedSymbology::SidcDefinitions::MobilityOnWater> &items = AdvancedSymbology::SidcDefinitions::mobilityOnWaters();
|
|
for (const auto &item : items)
|
|
m_internal->m_cbAmplifierDescriptor_MIL2525D->insertNumberedItem(idx++, AdvancedSymbology::SidcDefinitions::toString(item), static_cast<int>(item));
|
|
}
|
|
break;
|
|
|
|
case AdvancedSymbology::SidcDefinitions::AmplifierGroup::Mobility_OnSnow:
|
|
{
|
|
const QVector<AdvancedSymbology::SidcDefinitions::MobilityOnSnow> &items = AdvancedSymbology::SidcDefinitions::mobilityOnSnows();
|
|
for (const auto &item : items)
|
|
m_internal->m_cbAmplifierDescriptor_MIL2525D->insertNumberedItem(idx++, AdvancedSymbology::SidcDefinitions::toString(item), static_cast<int>(item));
|
|
}
|
|
break;
|
|
|
|
case AdvancedSymbology::SidcDefinitions::AmplifierGroup::Naval_TowedArry:
|
|
{
|
|
const QVector<AdvancedSymbology::SidcDefinitions::NavalTowedArray> &items = AdvancedSymbology::SidcDefinitions::navalTowedArrays();
|
|
for (const auto &item : items)
|
|
m_internal->m_cbAmplifierDescriptor_MIL2525D->insertNumberedItem(idx++, AdvancedSymbology::SidcDefinitions::toString(item), static_cast<int>(item));
|
|
}
|
|
break;
|
|
|
|
} // switch
|
|
}
|
|
m_internal->m_cbAmplifierDescriptor_MIL2525D->blockSignals(false);
|
|
|
|
|
|
m_internal->m_sidcBuilder.setAmplifierGroup(amplifierGroup);
|
|
|
|
if (m_internal->m_cbAmplifierDescriptor_MIL2525D->count() > 0)
|
|
{
|
|
m_internal->m_cbAmplifierDescriptor_MIL2525D->setEnabled(true);
|
|
|
|
unsigned int ampDescr = m_internal->m_sidcBuilder.amplifier2ndDigit();
|
|
int index = m_internal->m_cbAmplifierDescriptor_MIL2525D->findData(ampDescr);
|
|
|
|
m_internal->m_cbAmplifierDescriptor_MIL2525D->setCurrentIndex(index);
|
|
}
|
|
else m_internal->m_cbAmplifierDescriptor_MIL2525D->setEnabled(false);
|
|
|
|
m_internal->m_modifiedSidc = m_internal->m_sidcBuilder.toSidc();
|
|
|
|
emitChanged();
|
|
|
|
} // void SymbolModificationWidget::onAmplifierGroupChanged()
|
|
|
|
|
|
void SymbolModificationWidget::onAmplifierDesriptorChanged(int index)
|
|
{
|
|
if (!m_internal->m_tabWidget->isEnabled()) return;
|
|
|
|
unsigned int ampDescr = m_internal->m_cbAmplifierDescriptor_MIL2525D->itemData(index).toUInt();
|
|
m_internal->m_sidcBuilder.setAmplifier2ndDigit(ampDescr);
|
|
m_internal->m_modifiedSidc = m_internal->m_sidcBuilder.toSidc();
|
|
emitChanged();
|
|
} // void SymbolModificationWidget::onAmplifierDesriptorChanged( int index )
|
|
|
|
|
|
void SymbolModificationWidget::onSector1ModifierChanged(int index)
|
|
{
|
|
if (!m_internal->m_tabWidget->isEnabled()) return;
|
|
|
|
unsigned int sectorModifier = m_internal->m_cbSector1Modifier_MIL2525D->itemData(index).toUInt();
|
|
m_internal->m_sidcBuilder.setSectorModifier1Digit(sectorModifier);
|
|
m_internal->m_modifiedSidc = m_internal->m_sidcBuilder.toSidc();
|
|
emitChanged();
|
|
} // void SymbolModificationWidget::onSector1ModifierChanged( int )
|
|
|
|
|
|
void SymbolModificationWidget::onSector2ModifierChanged(int index)
|
|
{
|
|
if (!m_internal->m_tabWidget->isEnabled()) return;
|
|
|
|
unsigned int sectorModifier = m_internal->m_cbSector2Modifier_MIL2525D->itemData(index).toUInt();
|
|
m_internal->m_sidcBuilder.setSectorModifier2Digit(sectorModifier);
|
|
m_internal->m_modifiedSidc = m_internal->m_sidcBuilder.toSidc();
|
|
emitChanged();
|
|
} // void SymbolModificationWidget::onSector2ModifierChanged( int )
|
|
|
|
|
|
void SymbolModificationWidget::onFieldAttributeAdd(bool)
|
|
{
|
|
if (!m_internal->m_tabWidget->isEnabled()) return;
|
|
|
|
const QString &value = m_internal->m_leFieldValue->text();
|
|
|
|
if (!value.isEmpty())
|
|
{
|
|
const QString &key = m_internal->m_cbFieldTitle->currentText();
|
|
m_internal->m_fieldTableModel->setFieldAttribute(key, value);
|
|
emitChanged();
|
|
}
|
|
else onFieldAttributeRemove(true);
|
|
} // void SymbolModificationWidget::onFieldAttributeAdd()
|
|
|
|
|
|
void SymbolModificationWidget::onFieldAttributeRemove(bool)
|
|
{
|
|
if (!m_internal->m_tabWidget->isEnabled()) return;
|
|
|
|
const AdvancedSymbology::SymbolDictionary &dict = m_internal->m_dict;
|
|
const QString &key = m_internal->m_cbFieldTitle->currentText();
|
|
|
|
if (dict.symbologyAttributeKeyList().contains(key))
|
|
{
|
|
m_internal->m_fieldTableModel->removeFieldAttrMap(key);
|
|
emitChanged();
|
|
}
|
|
} // void PlanEditor::SymbolModificationWidget::onFieldAttributeRemove()
|
|
|
|
|
|
void SymbolModificationWidget::onSetFieldTitle(const QString &fieldTitel)
|
|
{
|
|
const AdvancedSymbology::SymbolDictionary &dict = m_internal->m_dict;
|
|
|
|
if (dict.symbologyAttributeKeyList().contains(fieldTitel))
|
|
m_internal->m_leFieldValue->setText(m_internal->m_fieldTableModel->fieldAttribute(fieldTitel));
|
|
}// void SymbolModificationWidget::onSetFieldTitle(const QString &)
|
|
|
|
|
|
void SymbolModificationWidget::onFieldItemActived(const QModelIndex &index)
|
|
{
|
|
const AdvancedSymbology::SymbolDictionary &dict = m_internal->m_dict;
|
|
const QString key = m_internal->m_fieldTableModel->data(m_internal->m_fieldTableModel->index(index.row(), 0)).toString();
|
|
const QString val = m_internal->m_fieldTableModel->data(m_internal->m_fieldTableModel->index(index.row(), 1)).toString();
|
|
|
|
if (dict.symbologyAttributeKeyList().contains(key))
|
|
{
|
|
m_internal->m_leFieldValue->setText(val);
|
|
m_internal->m_cbFieldTitle->setCurrentText(key);
|
|
}
|
|
} // void SymbolModificationWidget::onFieldItemActived( const QModelIndex & index )
|
|
|
|
|
|
void SymbolModificationWidget::onChangeApp6SizeMobility()
|
|
{
|
|
if (!m_internal->m_tabWidget->isEnabled()) return;
|
|
|
|
m_internal->m_lastModifiedSidc = modifiedSidc();
|
|
|
|
MyComboBox * cb = qobject_cast<MyComboBox*>(sender());
|
|
if (cb)
|
|
{
|
|
QString rawSidc = SidcCodec::decodeRawSidc(modifiedSidc());
|
|
QString code = cb->currentData().toString();
|
|
|
|
rawSidc[10] = code[0];
|
|
rawSidc[11] = code[1];
|
|
|
|
m_internal->m_modifiedSidc = SidcCodec::encodeComplete(SymbologyType::APP6B, rawSidc);
|
|
|
|
if (cb != m_internal->m_cbSize_APP6) m_internal->m_cbSize_APP6->setCurrentIndex(0);
|
|
if (cb != m_internal->m_cbSizeHQ_APP6) m_internal->m_cbSizeHQ_APP6->setCurrentIndex(0);
|
|
if (cb != m_internal->m_cbSizeTF_APP6) m_internal->m_cbSizeTF_APP6->setCurrentIndex(0);
|
|
if (cb != m_internal->m_cbSizeFDHQ_APP6) m_internal->m_cbSizeFDHQ_APP6->setCurrentIndex(0);
|
|
if (cb != m_internal->m_cbSizeFDTF_APP6) m_internal->m_cbSizeFDTF_APP6->setCurrentIndex(0);
|
|
if (cb != m_internal->m_cbSizeFD_APP6) m_internal->m_cbSizeFD_APP6->setCurrentIndex(0);
|
|
if (cb != m_internal->m_cbMobility_APP6) m_internal->m_cbMobility_APP6->setCurrentIndex(0);
|
|
|
|
emitChanged();
|
|
}
|
|
} // void SymbolModificationWidget::onChangeApp6SizeMobility(int)
|
|
|
|
|
|
} // namespace Gui
|
|
} // namespace AdvancedSymbology
|