From 7be54fde8704653f4c82ed0e364ae01d5db06deb Mon Sep 17 00:00:00 2001 From: Klaus Basan Date: Wed, 2 Jan 2019 08:50:35 +0100 Subject: [PATCH] Display number of included/DB models in "1st model set wizard" --- src/blackgui/components/firstmodelsetcomponent.cpp | 14 +++++++++++++- src/blackmisc/db/datastoreobjectlist.cpp | 10 ++++++++-- src/blackmisc/db/datastoreobjectlist.h | 3 +++ src/blackmisc/simulation/aircraftmodellist.cpp | 10 ++++++++++ src/blackmisc/simulation/aircraftmodellist.h | 3 +++ 5 files changed, 37 insertions(+), 3 deletions(-) diff --git a/src/blackgui/components/firstmodelsetcomponent.cpp b/src/blackgui/components/firstmodelsetcomponent.cpp index 014e5a0d7..74e818b5e 100644 --- a/src/blackgui/components/firstmodelsetcomponent.cpp +++ b/src/blackgui/components/firstmodelsetcomponent.cpp @@ -89,7 +89,19 @@ namespace BlackGui // avoid to fully init a loader logic here static const QString modelsNo("No models so far"); const int modelsCount = this->modelLoader()->getCachedModelsCount(simulator); - ui->le_ModelsInfo->setText(modelsCount > 0 ? this->modelLoader()->getCacheCountAndTimestamp(simulator) : modelsNo); + if (modelsCount > 0) + { + static const QString modelsInfo("%1 included %2 DB key %3"); + const CAircraftModelList modelsInCache = this->modelLoader()->getCachedModels(simulator); + const int modelsIncluded = modelsInCache.countByMode(CAircraftModel::Include); + const int modelsDbKey = modelsInCache.countWithValidDbKey(true); + ui->le_ModelsInfo->setText(modelsInfo.arg(this->modelLoader()->getCacheCountAndTimestamp(simulator)).arg(modelsIncluded).arg(modelsDbKey)); + } + else + { + ui->le_ModelsInfo->setText(modelsNo); + } + ui->pb_CreateModelSet->setEnabled(modelsCount > 0); static const QString modelsSetNo("Model set is empty"); diff --git a/src/blackmisc/db/datastoreobjectlist.cpp b/src/blackmisc/db/datastoreobjectlist.cpp index d6280dae8..f60ae8fb2 100644 --- a/src/blackmisc/db/datastoreobjectlist.cpp +++ b/src/blackmisc/db/datastoreobjectlist.cpp @@ -224,16 +224,22 @@ namespace BlackMisc } template - int IDatastoreObjectList::countWithValidDbKey() const + int IDatastoreObjectList::countWithValidDbKey(bool withKey) const { int count = 0; for (const OBJ &obj : ITimestampObjectList::container()) { - if (obj.hasValidDbKey()) { count++; } + if (obj.hasValidDbKey() && withKey) { count++; } } return count; } + template + int IDatastoreObjectList::countWithValidDbKey() const + { + return this->countWithValidDbKey(true); + } + template bool IDatastoreObjectList::containsAnyObjectWithoutKey() const { diff --git a/src/blackmisc/db/datastoreobjectlist.h b/src/blackmisc/db/datastoreobjectlist.h index f5553a0e4..8651cddb4 100644 --- a/src/blackmisc/db/datastoreobjectlist.h +++ b/src/blackmisc/db/datastoreobjectlist.h @@ -72,6 +72,9 @@ namespace BlackMisc //! Latest DB timestamp (means objects with DB key) QDateTime oldestDbTimestamp() const; + //! Number of objects with/without key + int countWithValidDbKey(bool withKey) const; + //! Number of entries with valid DB key int countWithValidDbKey() const; diff --git a/src/blackmisc/simulation/aircraftmodellist.cpp b/src/blackmisc/simulation/aircraftmodellist.cpp index 82ae77ca6..775a4ab2a 100644 --- a/src/blackmisc/simulation/aircraftmodellist.cpp +++ b/src/blackmisc/simulation/aircraftmodellist.cpp @@ -777,6 +777,16 @@ namespace BlackMisc return count; } + int CAircraftModelList::countByMode(CAircraftModel::ModelMode mode) const + { + int count = 0; + for (const CAircraftModel &model : (*this)) + { + if (model.matchesMode(mode)) { count++; } + } + return count; + } + int CAircraftModelList::countMilitaryAircraft() const { int count = 0; diff --git a/src/blackmisc/simulation/aircraftmodellist.h b/src/blackmisc/simulation/aircraftmodellist.h index 7b61e9bc7..f14ccba5b 100644 --- a/src/blackmisc/simulation/aircraftmodellist.h +++ b/src/blackmisc/simulation/aircraftmodellist.h @@ -308,6 +308,9 @@ namespace BlackMisc //! Count VTOL aircraft int countVtolAircraft() const; + //! Count by mode + int countByMode(CAircraftModel::ModelMode mode) const; + //! Count military aircraft int countMilitaryAircraft() const;