diff --git a/src/blackgui/components/dbdistributorcomponent.cpp b/src/blackgui/components/dbdistributorcomponent.cpp index 805ba499a..cf250e6d8 100644 --- a/src/blackgui/components/dbdistributorcomponent.cpp +++ b/src/blackgui/components/dbdistributorcomponent.cpp @@ -57,6 +57,16 @@ namespace BlackGui ui->filter_Distributor->setSimulator(simulator); } + CDistributorList CDbDistributorComponent::getSelectedDistributors() const + { + return ui->tvp_Distributors->selectedObjects(); + } + + bool CDbDistributorComponent::hasSelectedDistributors() const + { + return ui->tvp_Distributors->hasSelection(); + } + void CDbDistributorComponent::distributorsRead(CEntityFlags::Entity entity, CEntityFlags::ReadState readState, int count) { Q_UNUSED(count); diff --git a/src/blackgui/components/dbdistributorcomponent.h b/src/blackgui/components/dbdistributorcomponent.h index 7ea15c3bb..c2e182217 100644 --- a/src/blackgui/components/dbdistributorcomponent.h +++ b/src/blackgui/components/dbdistributorcomponent.h @@ -15,6 +15,7 @@ #include "blackgui/blackguiexport.h" #include "blackgui/components/enablefordockwidgetinfoarea.h" #include "blackgui/enableforviewbasedindicator.h" +#include "blackmisc/simulation/distributorlist.h" #include "blackmisc/network/entityflags.h" #include #include @@ -52,6 +53,12 @@ namespace BlackGui //! Filter by simulator void filterBySimulator(const BlackMisc::Simulation::CSimulatorInfo &simulator); + //! The selected distributors + BlackMisc::Simulation::CDistributorList getSelectedDistributors() const; + + //! Having selected distributors + bool hasSelectedDistributors() const; + private: QScopedPointer ui; diff --git a/src/blackgui/components/dbownmodelscomponent.cpp b/src/blackgui/components/dbownmodelscomponent.cpp index 6e43ee0b2..4953fedac 100644 --- a/src/blackgui/components/dbownmodelscomponent.cpp +++ b/src/blackgui/components/dbownmodelscomponent.cpp @@ -155,13 +155,13 @@ namespace BlackGui QString CDbOwnModelsComponent::getInfoString() const { if (!m_modelLoader) { return ""; } - return m_modelLoader->getInfoString(); + return m_modelLoader->getModelCacheInfoString(); } QString CDbOwnModelsComponent::getInfoStringFsFamily() const { if (!m_modelLoader) { return ""; } - return m_modelLoader->getInfoStringFsFamily(); + return m_modelLoader->getModelCacheInfoStringFsFamily(); } CStatusMessage CDbOwnModelsComponent::updateViewAndCache(const CAircraftModelList &models) @@ -451,6 +451,9 @@ namespace BlackGui return; } + // Do not check for empty models die here, as depending on mode we could still load + // will be checked in model loader + CLogMessage(this).info("Starting loading for '%1'") << simulator.toQString(); ui->tvp_OwnAircraftModels->showLoadIndicator(); Q_ASSERT_X(sGui && sGui->getWebDataServices(), Q_FUNC_INFO, "missing web data services"); @@ -470,6 +473,8 @@ namespace BlackGui // loading ok, but no data CLogMessage(this).warning("Loading completed, but no models"); } + + emit this->successfullyLoadedModels(simulator); } else { @@ -477,7 +482,8 @@ namespace BlackGui CLogMessage(this).error("Loading of models failed, simulator '%1'") << simulator.toQString(); } - if (statusMessages.hasWarningOrErrorMessages()) { + if (statusMessages.hasWarningOrErrorMessages()) + { this->showOverlayMessages(statusMessages); } diff --git a/src/blackgui/components/dbownmodelscomponent.h b/src/blackgui/components/dbownmodelscomponent.h index 638f841c5..fc89b1d64 100644 --- a/src/blackgui/components/dbownmodelscomponent.h +++ b/src/blackgui/components/dbownmodelscomponent.h @@ -120,6 +120,10 @@ namespace BlackGui virtual void updateModels(const BlackMisc::Simulation::CAircraftModelList &models, const BlackMisc::Simulation::CSimulatorInfo &simulator) override; //! @} + signals: + //! Models have been successfully loaded + void successfullyLoadedModels(const BlackMisc::Simulation::CSimulatorInfo &simulator); + private: QScopedPointer ui; std::unique_ptr m_modelLoader; //!< read own aircraft models, aka models on disk diff --git a/src/blackgui/components/dbownmodelsdialog.cpp b/src/blackgui/components/dbownmodelsdialog.cpp index c3e18da3d..fc0b56bef 100644 --- a/src/blackgui/components/dbownmodelsdialog.cpp +++ b/src/blackgui/components/dbownmodelsdialog.cpp @@ -23,6 +23,7 @@ namespace BlackGui { ui->setupUi(this); this->setWindowFlags(this->windowFlags() & ~Qt::WindowContextHelpButtonHint); + connect(ui->comp_OwnModels, &CDbOwnModelsComponent::successfullyLoadedModels, this, &CDbOwnModelsDialog::successfullyLoadedModels); } CDbOwnModelsDialog::~CDbOwnModelsDialog() diff --git a/src/blackgui/components/dbownmodelsdialog.h b/src/blackgui/components/dbownmodelsdialog.h index df80ed415..3c8be2914 100644 --- a/src/blackgui/components/dbownmodelsdialog.h +++ b/src/blackgui/components/dbownmodelsdialog.h @@ -46,6 +46,10 @@ namespace BlackGui //! \remark allows to use the powerful component class const CDbOwnModelsComponent *modelsComponent() const; + signals: + //! \copydoc CDbOwnModelsComponent::successfullyLoadedModels + void successfullyLoadedModels(const BlackMisc::Simulation::CSimulatorInfo &simulator); + private: QScopedPointer ui; }; diff --git a/src/blackgui/components/dbownmodelsetcomponent.cpp b/src/blackgui/components/dbownmodelsetcomponent.cpp index 59e6cab68..c1058589f 100644 --- a/src/blackgui/components/dbownmodelsetcomponent.cpp +++ b/src/blackgui/components/dbownmodelsetcomponent.cpp @@ -209,6 +209,11 @@ namespace BlackGui } } + void CDbOwnModelSetComponent::enableButtons(bool firstSet) + { + ui->pb_FirstSet->setEnabled(firstSet); + } + void CDbOwnModelSetComponent::tabIndexChanged(int index) { Q_UNUSED(index); diff --git a/src/blackgui/components/dbownmodelsetcomponent.h b/src/blackgui/components/dbownmodelsetcomponent.h index 1dea105bf..1ff39e20e 100644 --- a/src/blackgui/components/dbownmodelsetcomponent.h +++ b/src/blackgui/components/dbownmodelsetcomponent.h @@ -110,7 +110,9 @@ namespace BlackGui virtual BlackMisc::Simulation::CSimulatorInfo getSelectedSimulator() const override { return this->getModelSetSimulator(); } //! @} - public slots: + //! Enable buttons + void enableButtons(bool firstSet); + //! Set the model set for a given simulator void setModelSet(const BlackMisc::Simulation::CAircraftModelList &models, const BlackMisc::Simulation::CSimulatorInfo &simulator); diff --git a/src/blackgui/components/dbownmodelsetdialog.cpp b/src/blackgui/components/dbownmodelsetdialog.cpp index 9098581f5..c9a22f0fb 100644 --- a/src/blackgui/components/dbownmodelsetdialog.cpp +++ b/src/blackgui/components/dbownmodelsetdialog.cpp @@ -36,5 +36,15 @@ namespace BlackGui { return ui->comp_OwnModelSet; } + + CDbOwnModelSetComponent *CDbOwnModelSetDialog::modelSetComponent() + { + return ui->comp_OwnModelSet; + } + + void CDbOwnModelSetDialog::enableButtons(bool firstSet) + { + ui->comp_OwnModelSet->enableButtons(firstSet); + } } // ns } // ns diff --git a/src/blackgui/components/dbownmodelsetdialog.h b/src/blackgui/components/dbownmodelsetdialog.h index bbdc7ebd8..ab7270a05 100644 --- a/src/blackgui/components/dbownmodelsetdialog.h +++ b/src/blackgui/components/dbownmodelsetdialog.h @@ -41,6 +41,12 @@ namespace BlackGui //! Direct access to CDbOwnModelSetComponent const CDbOwnModelSetComponent *modelSetComponent() const; + //! Direct access to CDbOwnModelSetComponent + CDbOwnModelSetComponent *modelSetComponent(); + + //! Enable buttons + void enableButtons(bool firstSet); + private: QScopedPointer ui; };