From 0023fbb57f4eba90603e84cfdbe434ba4c118aa6 Mon Sep 17 00:00:00 2001 From: Klaus Basan Date: Tue, 17 Jul 2018 18:56:22 +0200 Subject: [PATCH] Ref T246, function to display model count and timestamp of model/set caches --- .../components/firstmodelsetcomponent.cpp | 17 ++++++++++------- .../simulation/aircraftmodelloader.cpp | 10 ++++++++++ src/blackmisc/simulation/aircraftmodelloader.h | 6 ++++++ .../simulation/aircraftmodelsetloader.cpp | 10 ++++++++++ .../simulation/aircraftmodelsetloader.h | 9 ++++++++- src/blackmisc/simulation/data/modelcaches.cpp | 6 ++++++ src/blackmisc/simulation/data/modelcaches.h | 3 +++ 7 files changed, 53 insertions(+), 8 deletions(-) diff --git a/src/blackgui/components/firstmodelsetcomponent.cpp b/src/blackgui/components/firstmodelsetcomponent.cpp index 656422406..62412365e 100644 --- a/src/blackgui/components/firstmodelsetcomponent.cpp +++ b/src/blackgui/components/firstmodelsetcomponent.cpp @@ -21,6 +21,7 @@ #include #include #include +#include using namespace BlackMisc; using namespace BlackMisc::Simulation; @@ -53,9 +54,9 @@ namespace BlackGui bool s = connect(ui->comp_SimulatorSelector, &CSimulatorSelector::changed, this, &CFirstModelSetComponent::onSimulatorChanged); Q_ASSERT_X(s, Q_FUNC_INFO, "Cannot connect selector signal"); - connect(&m_simulatorSettings, &CMultiSimulatorSettings::settingsChanged, this, &CFirstModelSetComponent::onSettingsChanged); + connect(&m_simulatorSettings, &CMultiSimulatorSettings::settingsChanged, this, &CFirstModelSetComponent::onSettingsChanged, Qt::QueuedConnection); Q_ASSERT_X(s, Q_FUNC_INFO, "Cannot connect settings signal"); - connect(m_modelsDialog.data(), &CDbOwnModelsDialog::successfullyLoadedModels, this, &CFirstModelSetComponent::onModelsLoaded); + connect(m_modelsDialog.data(), &CDbOwnModelsDialog::successfullyLoadedModels, this, &CFirstModelSetComponent::onModelsLoaded, Qt::QueuedConnection); Q_ASSERT_X(s, Q_FUNC_INFO, "Cannot connect models signal"); connect(ui->pb_ModelSet, &QPushButton::clicked, this, &CFirstModelSetComponent::openOwnModelSetDialog); @@ -86,25 +87,27 @@ namespace BlackGui // kind of hack, but simplest solution // we us the loader of the components directly, // avoid to fully init a loader logic here - static const QString modelInfo("Models indexed: %1"); static const QString modelsNo("No models so far"); const int modelsCount = this->modelLoader()->getAircraftModelsCount(); - ui->le_ModelsInfo->setText(modelsCount > 0 ? modelInfo.arg(modelsCount) : modelsNo); + ui->le_ModelsInfo->setText(modelsCount > 0 ? this->modelLoader()->getModelCacheCountAndTimestamp() : modelsNo); ui->pb_CreateModelSet->setEnabled(modelsCount > 0); - static const QString modelSetInfo("Models in set: %1"); static const QString modelsSetNo("Model set is empty"); - const int modelSet = this->modelSetLoader().getAircraftModelsCount(); - ui->le_ModelSetInfo->setText(modelsCount > 0 ? modelSetInfo.arg(modelSet) : modelsSetNo); + const int modelsSetCount = this->modelSetLoader().getAircraftModelsCount(); + ui->le_ModelSetInfo->setText(modelsSetCount > 0 ? this->modelSetLoader().getModelCacheCountAndTimestamp(simulator) : modelsSetNo); } void CFirstModelSetComponent::onSettingsChanged(const CSimulatorInfo &simulator) { + const CSimulatorInfo currentSimulator = ui->comp_SimulatorSelector->getValue(); + if (simulator != currentSimulator) { return; } // ignore changes not for my selected simulator this->onSimulatorChanged(simulator); } void CFirstModelSetComponent::onModelsLoaded(const CSimulatorInfo &simulator) { + const CSimulatorInfo currentSimulator = ui->comp_SimulatorSelector->getValue(); + if (simulator != currentSimulator) { return; } // ignore changes not for my selected simulator this->onSimulatorChanged(simulator); } diff --git a/src/blackmisc/simulation/aircraftmodelloader.cpp b/src/blackmisc/simulation/aircraftmodelloader.cpp index 35e365d8a..2b90b5cb3 100644 --- a/src/blackmisc/simulation/aircraftmodelloader.cpp +++ b/src/blackmisc/simulation/aircraftmodelloader.cpp @@ -281,6 +281,16 @@ namespace BlackMisc return m_caches.getInfoStringFsFamily(); } + QString IAircraftModelLoader::getModelCacheCountAndTimestamp() const + { + return m_caches.getCacheCountAndTimestamp(this->getSimulator()); + } + + QString IAircraftModelLoader::getModelCacheCountAndTimestamp(const CSimulatorInfo &simulator) const + { + return m_caches.getCacheCountAndTimestamp(simulator); + } + CSpecializedSimulatorSettings IAircraftModelLoader::getCurrentSimulatorSettings() const { return m_settings.getSpecializedSettings(this->getSimulator()); diff --git a/src/blackmisc/simulation/aircraftmodelloader.h b/src/blackmisc/simulation/aircraftmodelloader.h index c0245013c..bcb084721 100644 --- a/src/blackmisc/simulation/aircraftmodelloader.h +++ b/src/blackmisc/simulation/aircraftmodelloader.h @@ -150,6 +150,12 @@ namespace BlackMisc //! \copydoc BlackMisc::Simulation::Data::CModelCaches::getInfoStringFsFamily QString getModelCacheInfoStringFsFamily() const; + //! \copydoc BlackMisc::Simulation::Data::CModelCaches::getCacheCountAndTimestamp + QString getModelCacheCountAndTimestamp() const; + + //! \copydoc BlackMisc::Simulation::Data::CModelCaches::getCacheCountAndTimestamp + QString getModelCacheCountAndTimestamp(const CSimulatorInfo &simulator) const; + //! \copydoc BlackMisc::Simulation::Data::IMultiSimulatorModelCaches::synchronizeCache void synchronizeModelCache(const CSimulatorInfo &simulator); diff --git a/src/blackmisc/simulation/aircraftmodelsetloader.cpp b/src/blackmisc/simulation/aircraftmodelsetloader.cpp index f49d998b4..1b01cafe6 100644 --- a/src/blackmisc/simulation/aircraftmodelsetloader.cpp +++ b/src/blackmisc/simulation/aircraftmodelsetloader.cpp @@ -160,5 +160,15 @@ namespace BlackMisc { return m_caches.getInfoStringFsFamily(); } + + QString CAircraftModelSetLoader::getModelCacheCountAndTimestamp() const + { + return m_caches.getCacheCountAndTimestamp(this->getSimulator()); + } + + QString CAircraftModelSetLoader::getModelCacheCountAndTimestamp(const CSimulatorInfo &simulator) const + { + return m_caches.getCacheCountAndTimestamp(simulator); + } } // ns } // ns diff --git a/src/blackmisc/simulation/aircraftmodelsetloader.h b/src/blackmisc/simulation/aircraftmodelsetloader.h index e39afff6e..9f2024838 100644 --- a/src/blackmisc/simulation/aircraftmodelsetloader.h +++ b/src/blackmisc/simulation/aircraftmodelsetloader.h @@ -64,7 +64,7 @@ namespace BlackMisc //! The loaded models for given simulator //! \threadsafe //! \remark non-const because it synchronizes cache - BlackMisc::Simulation::CAircraftModelList getAircraftModels(const BlackMisc::Simulation::CSimulatorInfo &simulator); + BlackMisc::Simulation::CAircraftModelList getAircraftModels(const CSimulatorInfo &simulator); //! Count of loaded models //! \threadsafe @@ -79,6 +79,7 @@ namespace BlackMisc BlackMisc::Simulation::CAircraftModelList getCachedModels(const BlackMisc::Simulation::CSimulatorInfo &simulator) const; //! Current simulator + //! \threadsafe CSimulatorInfo getSimulator() const; //! Supported simulators as string @@ -103,6 +104,12 @@ namespace BlackMisc //! \copydoc BlackMisc::Simulation::Data::CModelCaches::getInfoStringFsFamily QString getInfoStringFsFamily() const; + //! \copydoc BlackMisc::Simulation::Data::CModelCaches::getCacheCountAndTimestamp + QString getModelCacheCountAndTimestamp() const; + + //! \copydoc BlackMisc::Simulation::Data::CModelCaches::getCacheCountAndTimestamp + QString getModelCacheCountAndTimestamp(const CSimulatorInfo &simulator) const; + //! \name Implementations of the models interfaces //! @{ virtual void setModels(const BlackMisc::Simulation::CAircraftModelList &models) override { this->setCachedModels(models, this->getSimulator()); } diff --git a/src/blackmisc/simulation/data/modelcaches.cpp b/src/blackmisc/simulation/data/modelcaches.cpp index e9d365c4c..530775558 100644 --- a/src/blackmisc/simulation/data/modelcaches.cpp +++ b/src/blackmisc/simulation/data/modelcaches.cpp @@ -38,6 +38,12 @@ namespace BlackMisc return is.arg(this->getCachedModelsCount(CSimulatorInfo::FSX)).arg(this->getCachedModelsCount(CSimulatorInfo::P3D)).arg(this->getCachedModelsCount(CSimulatorInfo::FS9)); } + QString IMultiSimulatorModelCaches::getCacheCountAndTimestamp(const CSimulatorInfo &simulator) const + { + static const QString s("%1 models, ts: %2"); + return s.arg(this->getCachedModelsCount(simulator)).arg(this->getCacheTimestamp(simulator).toString("yyyy-MM-dd HH:mm:ss")); + } + void IMultiSimulatorModelCaches::onLastSelectionChanged() { this->synchronizeCurrentCache(); diff --git a/src/blackmisc/simulation/data/modelcaches.h b/src/blackmisc/simulation/data/modelcaches.h index 4877d763a..2b7a1ff90 100644 --- a/src/blackmisc/simulation/data/modelcaches.h +++ b/src/blackmisc/simulation/data/modelcaches.h @@ -238,6 +238,9 @@ namespace BlackMisc //! Info string without XPlane (FSX,P3D, FS9) QString getInfoStringFsFamily() const; + //! Cache count and timestamp + QString getCacheCountAndTimestamp(const CSimulatorInfo &simulator) const; + //! Descriptive text virtual QString getDescription() const = 0;