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;