diff --git a/src/blackgui/editors/modelmappingmodifyform.cpp b/src/blackgui/editors/modelmappingmodifyform.cpp index f7d831c4e..b0534c4d9 100644 --- a/src/blackgui/editors/modelmappingmodifyform.cpp +++ b/src/blackgui/editors/modelmappingmodifyform.cpp @@ -10,9 +10,11 @@ #include "blackgui/components/modelmodeselector.h" #include "blackgui/components/simulatorselector.h" #include "blackgui/editors/modelmappingmodifyform.h" +#include "blackgui/uppercasevalidator.h" #include "blackmisc/simulation/aircraftmodel.h" #include "blackmisc/simulation/simulatorinfo.h" #include "blackmisc/network/authenticateduser.h" +#include "blackmisc/stringutils.h" #include "ui_modelmappingmodifyform.h" #include @@ -21,6 +23,7 @@ using namespace BlackMisc; using namespace BlackMisc::Network; +using namespace BlackMisc::PhysicalQuantities; using namespace BlackMisc::Simulation; using namespace BlackGui::Components; @@ -33,12 +36,20 @@ namespace BlackGui ui(new Ui::CModelMappingModifyForm) { ui->setupUi(this); - connect(ui->le_Description, &QLineEdit::returnPressed, this, &CModelMappingModifyForm::returnPressed); - connect(ui->le_Name, &QLineEdit::returnPressed, this, &CModelMappingModifyForm::returnPressed); - connect(ui->selector_ModeSelector, &CModelModeSelector::changed, this, &CModelMappingModifyForm::changed); - connect(ui->selector_SimulatorSelector, &CSimulatorSelector::changed, this, &CModelMappingModifyForm::changed); - + ui->le_Parts->setPlaceholderText("Parts " + CAircraftModel::supportedParts()); this->userChanged(); + + CUpperCaseValidator *ucv = new CUpperCaseValidator(true, 0, CAircraftModel::supportedParts().size(), ui->le_Parts); + ucv->setAllowedCharacters(CAircraftModel::supportedParts()); + ui->le_Parts->setValidator(ucv); + + // "auto checked" disabled + // connect(ui->le_Description, &QLineEdit::returnPressed, this, &CModelMappingModifyForm::returnPressed); + // connect(ui->le_Name, &QLineEdit::returnPressed, this, &CModelMappingModifyForm::returnPressed); + // connect(ui->selector_ModeSelector, &CModelModeSelector::changed, this, &CModelMappingModifyForm::changed); + // connect(ui->selector_SimulatorSelector, &CSimulatorSelector::changed, this, &CModelMappingModifyForm::changed); + + connect(ui->le_CG, &QLineEdit::editingFinished, this, &CModelMappingModifyForm::onCGEdited); } CModelMappingModifyForm::~CModelMappingModifyForm() @@ -49,6 +60,7 @@ namespace BlackGui CPropertyIndexVariantMap CModelMappingModifyForm::getValues() const { CPropertyIndexVariantMap vm; + if (ui->cb_Name->isChecked()) { vm.addValue(CAircraftModel::IndexName, ui->le_Name->text().trimmed()); @@ -73,6 +85,23 @@ namespace BlackGui { vm.addValue(CAircraftModel::IndexModelMode, ui->selector_ModeSelector->getMode()); } + + if (ui->cb_Parts->isChecked()) + { + vm.addValue(CAircraftModel::IndexSupportedParts, ui->le_Parts->text().toUpper()); + } + + if (ui->cb_CG->isChecked()) + { + const QString cgv = ui->le_CG->text().trimmed(); + CLength cg = CLength::null(); + if (!cgv.isEmpty()) + { + cg.parseFromString(cgv, CPqString::SeparatorBestGuess); + } + vm.addValue(CAircraftModel::IndexCG, cg); + } + return vm; } @@ -127,8 +156,19 @@ namespace BlackGui if (widget == ui->le_Description) { return ui->cb_Description; } if (widget == ui->le_Name) { return ui->cb_Name; } if (widget == ui->selector_ModeSelector) { return ui->cb_Mode; } + if (widget == ui->le_CG) { return ui->cb_CG; } + if (widget == ui->le_Parts) { return ui->cb_Parts; } if (widget == ui->selector_SimulatorSelector) { return ui->cb_Simulator; } return nullptr; } + + void CModelMappingModifyForm::onCGEdited() + { + QString cgv = ui->le_CG->text().trimmed(); + if (isDigitsOnlyString(cgv)) { cgv += "ft"; } + CLength cg = CLength::null(); + cg.parseFromString(cgv, CPqString::SeparatorBestGuess); + ui->le_CG->setText(cg.isNull() ? "" : cg.toQString(true)); + } } // ns } // ns diff --git a/src/blackgui/editors/modelmappingmodifyform.h b/src/blackgui/editors/modelmappingmodifyform.h index 87a17f516..9a9cb4fc1 100644 --- a/src/blackgui/editors/modelmappingmodifyform.h +++ b/src/blackgui/editors/modelmappingmodifyform.h @@ -64,6 +64,9 @@ namespace BlackGui //! Checkbox from its corresponding widgte QCheckBox *widgetToCheckbox(QObject *widget) const; + //! CG changed + void onCGEdited(); + QScopedPointer ui; }; } // ns diff --git a/src/blackgui/editors/modelmappingmodifyform.ui b/src/blackgui/editors/modelmappingmodifyform.ui index 126f4f117..96e457521 100644 --- a/src/blackgui/editors/modelmappingmodifyform.ui +++ b/src/blackgui/editors/modelmappingmodifyform.ui @@ -7,7 +7,7 @@ 0 0 300 - 150 + 151 @@ -20,20 +20,17 @@ Modify model data - - + + - - - - - 0 - 24 - + + + + @@ -47,20 +44,24 @@ - - + + + + Simulator: + + + + + - - + + - Name: - - - le_Name + Mode: @@ -74,17 +75,10 @@ - - - - - - - - + - Simulator: + CG/vert.offset: @@ -101,30 +95,81 @@ - - - - Mode: - - - - + - 0 - 24 + 100 + 0 - + + + + + 100 + 0 + + + + + + + + + Name: + + + le_Name + + + + + + + + + + + + + + CG/vert.offset e,g, 10ft + + + + + + + + + + Parts + + + + + + + Parts: + + + + + + + + + + @@ -146,6 +191,10 @@ le_Name cb_Description le_Description + cb_CG + le_CG + cb_Parts + le_Parts cb_Simulator cb_Mode