From a3be42f0c3579c59983f2e274e732b38bff21dd4 Mon Sep 17 00:00:00 2001 From: Klaus Basan Date: Mon, 17 Oct 2016 03:16:09 +0200 Subject: [PATCH] refs #768, model form as combined form of livery/distributor and aircraft ICAO --- .../components/dbmappingcomponent.cpp | 60 +++---- src/blackgui/components/dbmappingcomponent.ui | 141 ++------------- src/blackgui/editors/aircraftmodelform.cpp | 120 +++++++++++++ src/blackgui/editors/aircraftmodelform.h | 91 ++++++++++ src/blackgui/editors/aircraftmodelform.ui | 163 ++++++++++++++++++ 5 files changed, 421 insertions(+), 154 deletions(-) create mode 100644 src/blackgui/editors/aircraftmodelform.cpp create mode 100644 src/blackgui/editors/aircraftmodelform.h create mode 100644 src/blackgui/editors/aircraftmodelform.ui diff --git a/src/blackgui/components/dbmappingcomponent.cpp b/src/blackgui/components/dbmappingcomponent.cpp index e9ace31e8..bda309c26 100644 --- a/src/blackgui/components/dbmappingcomponent.cpp +++ b/src/blackgui/components/dbmappingcomponent.cpp @@ -94,7 +94,7 @@ namespace BlackGui ui->comp_StashAircraft->view()->setCustomMenu(new CModelStashToolsMenu(this, false)); // connects - connect(ui->editor_Model, &CModelMappingForm::requestStash, this, &CDbMappingComponent::ps_stashCurrentModel); + connect(ui->editor_ModelMapping, &CModelMappingForm::requestStash, this, &CDbMappingComponent::ps_stashCurrentModel); connect(ui->comp_OwnAircraftModels->view(), &CAircraftModelView::doubleClicked, this, &CDbMappingComponent::ps_onModelRowSelected); connect(ui->comp_OwnAircraftModels->view(), &CAircraftModelView::modelDataChanged, this, &CDbMappingComponent::ps_onOwnModelsChanged); @@ -121,9 +121,7 @@ namespace BlackGui this->ps_onOwnModelsChanged(ui->comp_OwnAircraftModels->view()->rowCount(), ui->comp_OwnAircraftModels->view()->hasFilter()); // how to display forms - ui->editor_AircraftIcao->setSelectOnly(); - ui->editor_Distributor->setSelectOnly(); - ui->editor_Livery->setSelectOnly(); + ui->editor_AircraftModel->setSelectOnly(); ui->tw_ModelsToBeMapped->setTabIcon(TabStash, CIcons::appDbStash16()); ui->tw_ModelsToBeMapped->setTabIcon(TabOwnModels, CIcons::appModels16()); @@ -271,7 +269,7 @@ namespace BlackGui void CDbMappingComponent::updateEditorsWhenApplicable() { - const CAircraftModel currentEditorModel(ui->editor_Model->getValue()); + const CAircraftModel currentEditorModel(ui->editor_ModelMapping->getValue()); if (!currentEditorModel.hasModelString()) { return; } // no related model const QString modelString(currentEditorModel.getModelString()); const CAircraftModel currentStashedModel(ui->comp_StashAircraft->getStashedModel(modelString)); @@ -283,19 +281,19 @@ namespace BlackGui const CLivery stashedLivery(currentStashedModel.getLivery()); if (stashedLivery.hasValidDbKey()) { - if (ui->editor_Livery->setValue(stashedLivery)) { updated = true; } + if (ui->editor_AircraftModel->setLivery(stashedLivery)) { updated = true; } } const CDistributor stashedDistributor(currentStashedModel.getDistributor()); if (stashedDistributor.hasValidDbKey()) { - if (ui->editor_Distributor->setValue(stashedDistributor)) { updated = true; } + if (ui->editor_AircraftModel->setDistributor(stashedDistributor)) { updated = true; } } const CAircraftIcaoCode stashedIcaoCode(currentStashedModel.getAircraftIcaoCode()); if (stashedIcaoCode.hasValidDbKey()) { - if (ui->editor_AircraftIcao->setValue(stashedIcaoCode)) { updated = true; } + if (ui->editor_AircraftModel->setAircraftIcao(stashedIcaoCode)) { updated = true; } } if (updated) @@ -346,12 +344,10 @@ namespace BlackGui CStatusMessageList CDbMappingComponent::validateCurrentModel(bool withNestedForms) const { - CStatusMessageList msgs(ui->editor_Model->validate(!withNestedForms)); + CStatusMessageList msgs(ui->editor_ModelMapping->validate(!withNestedForms)); if (withNestedForms) { - msgs.push_back(ui->editor_AircraftIcao->validate()); - msgs.push_back(ui->editor_Livery->validate(withNestedForms)); - msgs.push_back(ui->editor_Distributor->validate()); + msgs.push_back(ui->editor_AircraftModel->validate(withNestedForms)); } return msgs; } @@ -416,42 +412,42 @@ namespace BlackGui void CDbMappingComponent::ps_applyFormLiveryData() { if (ui->comp_StashAircraft->view()->selectedRowCount() < 1) { return; } - const CStatusMessageList msgs = ui->editor_Livery->validate(true); + const CStatusMessageList msgs = ui->editor_AircraftModel->validateLivery(true); if (msgs.hasErrorMessages()) { this->showOverlayMessages(msgs); } else { - ui->comp_StashAircraft->applyToSelected(ui->editor_Livery->getValue()); + ui->comp_StashAircraft->applyToSelected(ui->editor_AircraftModel->getLivery()); } } void CDbMappingComponent::ps_applyFormAircraftIcaoData() { if (ui->comp_StashAircraft->view()->selectedRowCount() < 1) { return; } - const CStatusMessageList msgs = ui->editor_AircraftIcao->validate(true); + const CStatusMessageList msgs = ui->editor_AircraftModel->validateAircraftIcao(true); if (msgs.hasErrorMessages()) { this->showOverlayMessages(msgs); } else { - ui->comp_StashAircraft->applyToSelected(ui->editor_AircraftIcao->getValue()); + ui->comp_StashAircraft->applyToSelected(ui->editor_AircraftModel->getAircraftIcao()); } } void CDbMappingComponent::ps_applyFormDistributorData() { if (ui->comp_StashAircraft->view()->selectedRowCount() < 1) { return; } - const CStatusMessageList msgs = ui->editor_Distributor->validate(true); + const CStatusMessageList msgs = ui->editor_AircraftModel->validateDistributor(true); if (msgs.hasErrorMessages()) { this->showOverlayMessages(msgs); } else { - ui->comp_StashAircraft->applyToSelected(ui->editor_Distributor->getValue()); + ui->comp_StashAircraft->applyToSelected(ui->editor_AircraftModel->getDistributor()); } } @@ -590,13 +586,13 @@ namespace BlackGui case CDbMappingComponent::TabOwnModelSet: { ui->frp_Editors->setVisible(true); - ui->editor_Model->setVisible(true); + ui->editor_ModelMapping->setVisible(true); this->resizeForSelect(); } break; case CDbMappingComponent::TabModelMatcher: { - ui->editor_Model->setVisible(false); + ui->editor_ModelMapping->setVisible(false); ui->frp_Editors->setVisible(false); this->resizeForSelect(); } @@ -609,7 +605,7 @@ namespace BlackGui default: { ui->frp_Editors->setVisible(true); - ui->editor_Model->setVisible(true); + ui->editor_ModelMapping->setVisible(true); } break; } @@ -754,32 +750,32 @@ namespace BlackGui const CDistributor distributor(dbModel ? model.getDistributor() : sGui->getWebDataServices()->smartDistributorSelector(model.getDistributor())); // set model part - ui->editor_Model->setValue(model); + ui->editor_ModelMapping->setValue(model); // if found, then set in editor if (livery.hasValidDbKey()) { - ui->editor_Livery->setValue(livery); + ui->editor_AircraftModel->setLivery(livery); } else { - ui->editor_Livery->clear(); + ui->editor_AircraftModel->clearLivery(); } if (aircraftIcao.hasValidDbKey()) { - ui->editor_AircraftIcao->setValue(aircraftIcao); + ui->editor_AircraftModel->setAircraftIcao(aircraftIcao); } else { - ui->editor_AircraftIcao->clear(); + ui->editor_AircraftModel->clearAircraftIcao(); } if (distributor.hasValidDbKey()) { - ui->editor_Distributor->setValue(distributor); + ui->editor_AircraftModel->setDistributor(distributor); } else { - ui->editor_Distributor->clear(); + ui->editor_AircraftModel->clearDistributor(); } // request filtering @@ -793,10 +789,10 @@ namespace BlackGui CAircraftModel CDbMappingComponent::getEditorAircraftModel() const { - CAircraftModel model(ui->editor_Model->getValue()); - model.setDistributor(ui->editor_Distributor->getValue()); - model.setAircraftIcaoCode(ui->editor_AircraftIcao->getValue()); - model.setLivery(ui->editor_Livery->getValue()); + CAircraftModel model(ui->editor_ModelMapping->getValue()); + model.setDistributor(ui->editor_AircraftModel->getDistributor()); + model.setAircraftIcaoCode(ui->editor_AircraftModel->getAircraftIcao()); + model.setLivery(ui->editor_AircraftModel->getLivery()); return model; } diff --git a/src/blackgui/components/dbmappingcomponent.ui b/src/blackgui/components/dbmappingcomponent.ui index bc7162538..e100774c0 100644 --- a/src/blackgui/components/dbmappingcomponent.ui +++ b/src/blackgui/components/dbmappingcomponent.ui @@ -246,7 +246,7 @@ - + 0 @@ -297,118 +297,27 @@ 450 - - - 4 - + - 2 + 0 - 2 + 0 - 2 + 0 - 2 + 0 - - - - 0 - - - 0 - - - 0 - - - 0 - - - - - - 100 - 150 - - - - - - - - - 0 - 150 - - - - QFrame::StyledPanel - - - QFrame::Raised - - - - - - - - 0 - 0 - - - - - - - - - - - - 0 - - - 0 - - - 0 - - - 0 - - - - - - 0 - 250 - - - - - - - - - 0 - 0 - - - - QFrame::StyledPanel - - - QFrame::Raised - - - - + + + QFrame::StyledPanel + + + QFrame::Raised + @@ -422,29 +331,17 @@ + + BlackGui::Editors::CAircraftModelForm + QFrame +
blackgui/editors/aircraftmodelform.h
+ 1 +
BlackGui::Views::CAircraftModelView QTableView
blackgui/views/aircraftmodelview.h
- - BlackGui::Editors::CAircraftIcaoForm - QFrame -
blackgui/editors/aircrafticaoform.h
- 1 -
- - BlackGui::Editors::CLiveryForm - QFrame -
blackgui/editors/liveryform.h
- 1 -
- - BlackGui::Editors::CDistributorForm - QFrame -
blackgui/editors/distributorform.h
- 1 -
BlackGui::Editors::CModelMappingForm QFrame diff --git a/src/blackgui/editors/aircraftmodelform.cpp b/src/blackgui/editors/aircraftmodelform.cpp new file mode 100644 index 000000000..9119d0d36 --- /dev/null +++ b/src/blackgui/editors/aircraftmodelform.cpp @@ -0,0 +1,120 @@ +/* Copyright (C) 2016 + * swift project Community / Contributors + * + * This file is part of swift Project. It is subject to the license terms in the LICENSE file found in the top-level + * directory of this distribution and at http://www.swift-project.org/license.html. No part of swift project, + * including this file, may be copied, modified, propagated, or distributed except according to the terms + * contained in the LICENSE file. + */ + +#include "aircraftmodelform.h" +#include "ui_aircraftmodelform.h" + +using namespace BlackMisc; + +namespace BlackGui +{ + namespace Editors + { + CAircraftModelForm::CAircraftModelForm(QWidget *parent) : + CForm(parent), + ui(new Ui::CAircraftModelForm) + { + ui->setupUi(this); + this->setFocusProxy(ui->editor_AircraftIcao); + } + + CAircraftModelForm::~CAircraftModelForm() + { } + + void CAircraftModelForm::setReadOnly(bool readOnly) + { + ui->editor_AircraftIcao->setReadOnly(readOnly); + ui->editor_Distributor->setReadOnly(readOnly); + ui->editor_Livery->setReadOnly(readOnly); + } + + CStatusMessageList CAircraftModelForm::validate(bool withNestedForms) const + { + CStatusMessageList msgs; + msgs.push_back(ui->editor_AircraftIcao->validate(withNestedForms)); + msgs.push_back(ui->editor_Distributor->validate(withNestedForms)); + msgs.push_back(ui->editor_Livery->validate(withNestedForms)); + return msgs; + } + + CStatusMessageList CAircraftModelForm::validateLivery(bool withNestedForms) const + { + return ui->editor_Livery->validate(withNestedForms); + } + + CStatusMessageList CAircraftModelForm::validateAircraftIcao(bool withNestedForms) const + { + return ui->editor_AircraftIcao->validate(withNestedForms); + } + + CStatusMessageList CAircraftModelForm::validateDistributor(bool withNestedForms) const + { + return ui->editor_Distributor->validate(withNestedForms); + } + + Aviation::CLivery CAircraftModelForm::getLivery() const + { + return ui->editor_Livery->getValue(); + } + + Aviation::CAircraftIcaoCode CAircraftModelForm::getAircraftIcao() const + { + return ui->editor_AircraftIcao->getValue(); + } + + Simulation::CDistributor CAircraftModelForm::getDistributor() const + { + return ui->editor_Distributor->getValue(); + } + + void CAircraftModelForm::allowDrop(bool allowDrop) + { + ui->editor_AircraftIcao->allowDrop(allowDrop); + ui->editor_Distributor->allowDrop(allowDrop); + ui->editor_Livery->allowDrop(allowDrop); + } + + bool CAircraftModelForm::setLivery(const BlackMisc::Aviation::CLivery &livery) + { + return ui->editor_Livery->setValue(livery); + } + + bool CAircraftModelForm::setAircraftIcao(const BlackMisc::Aviation::CAircraftIcaoCode &icao) + { + return ui->editor_AircraftIcao->setValue(icao); + } + + bool CAircraftModelForm::setDistributor(const BlackMisc::Simulation::CDistributor &distributor) + { + return ui->editor_Distributor->setValue(distributor); + } + + void CAircraftModelForm::clear() + { + this->clearLivery(); + this->clearAircraftIcao(); + this->clearDistributor(); + } + + void CAircraftModelForm::clearLivery() + { + ui->editor_Livery->clear(); + } + + void CAircraftModelForm::clearAircraftIcao() + { + ui->editor_AircraftIcao->clear(); + } + + void CAircraftModelForm::clearDistributor() + { + ui->editor_Distributor->clear(); + } + } // ns +} // ns diff --git a/src/blackgui/editors/aircraftmodelform.h b/src/blackgui/editors/aircraftmodelform.h new file mode 100644 index 000000000..a62fd704e --- /dev/null +++ b/src/blackgui/editors/aircraftmodelform.h @@ -0,0 +1,91 @@ +/* Copyright (C) 2016 + * swift project Community / Contributors + * + * This file is part of swift Project. It is subject to the license terms in the LICENSE file found in the top-level + * directory of this distribution and at http://www.swift-project.org/license.html. No part of swift project, + * including this file, may be copied, modified, propagated, or distributed except according to the terms + * contained in the LICENSE file. + */ + +//! \file + +#ifndef BLACKGUI_EDITORS_AIRCRAFTMODELFORM_H +#define BLACKGUI_EDITORS_AIRCRAFTMODELFORM_H + +#include "form.h" +#include + +namespace Ui { class CAircraftModelForm; } +namespace BlackGui +{ + namespace Editors + { + /** + * Combined form of Livery, ICAOs, distributor + */ + class CAircraftModelForm : public CForm + { + Q_OBJECT + + public: + //! Constructor + explicit CAircraftModelForm(QWidget *parent = nullptr); + + //! Destructor + ~CAircraftModelForm(); + + //! Allow to drop data + void allowDrop(bool allowDrop); + + //! Set as read only + virtual void setReadOnly(bool readOnly) override; + + //! \copydoc BlackGui::Editors::CForm::validate + virtual BlackMisc::CStatusMessageList validate(bool withNestedForms = true) const override; + + //! \copydoc BlackGui::Editors::CForm::validate + virtual BlackMisc::CStatusMessageList validateLivery(bool withNestedForms = true) const; + + //! \copydoc BlackGui::Editors::CForm::validate + virtual BlackMisc::CStatusMessageList validateAircraftIcao(bool withNestedForms = true) const; + + //! \copydoc BlackGui::Editors::CForm::validate + virtual BlackMisc::CStatusMessageList validateDistributor(bool withNestedForms = true) const; + + //! Livery + BlackMisc::Aviation::CLivery getLivery() const; + + //! Aircraft ICAO + BlackMisc::Aviation::CAircraftIcaoCode getAircraftIcao() const; + + //! Distributor + BlackMisc::Simulation::CDistributor getDistributor() const; + + //! Livery + bool setLivery(const BlackMisc::Aviation::CLivery &livery); + + //! Aircraft + bool setAircraftIcao(const BlackMisc::Aviation::CAircraftIcaoCode &icao); + + //! Distributor + bool setDistributor(const BlackMisc::Simulation::CDistributor &distributor); + + //! Clear entire form + void clear(); + + //! \copydoc BlackGui::Editors::CLiveryForm::clear + void clearLivery(); + + //! \copydoc BlackGui::Editors::CAircraftIcaoForm::clear + void clearAircraftIcao(); + + //! \copydoc BlackGui::Editors::CDistributorForm::clear + void clearDistributor(); + + private: + QScopedPointer ui; + }; + } // ns +} // ns + +#endif // guard diff --git a/src/blackgui/editors/aircraftmodelform.ui b/src/blackgui/editors/aircraftmodelform.ui new file mode 100644 index 000000000..d5d792edb --- /dev/null +++ b/src/blackgui/editors/aircraftmodelform.ui @@ -0,0 +1,163 @@ + + + CAircraftModelForm + + + + 0 + 0 + 640 + 480 + + + + Frame + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + QFrame::NoFrame + + + QFrame::Plain + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 100 + 150 + + + + Qt::StrongFocus + + + + + + + + 0 + 150 + + + + Qt::StrongFocus + + + + + + + + 0 + 0 + + + + + + + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + 250 + + + + Qt::StrongFocus + + + + + + + + 0 + 0 + + + + Qt::StrongFocus + + + QFrame::StyledPanel + + + QFrame::Raised + + + + + + + + + + + BlackGui::Editors::CAircraftIcaoForm + QFrame +
blackgui/editors/aircrafticaoform.h
+ 1 +
+ + BlackGui::Editors::CLiveryForm + QFrame +
blackgui/editors/liveryform.h
+ 1 +
+ + BlackGui::Editors::CDistributorForm + QFrame +
blackgui/editors/distributorform.h
+ 1 +
+
+ + +