refs #755, allow to refresh GUI parts during consolidation

This commit is contained in:
Klaus Basan
2016-09-03 22:55:43 +02:00
committed by Roland Winklmeier
parent 73d41d334b
commit c848d7ca61
3 changed files with 19 additions and 4 deletions

View File

@@ -76,6 +76,11 @@ namespace BlackCore
}
int CDatabaseUtils::consolidateModelsWithDbData(CAircraftModelList &models, bool force)
{
return CDatabaseUtils::consolidateModelsWithDbDataAllowsGuiRefresh(models, force, false);
}
int CDatabaseUtils::consolidateModelsWithDbDataAllowsGuiRefresh(CAircraftModelList &models, bool force, bool processEvents)
{
QTime timer;
timer.start();
@@ -83,10 +88,17 @@ namespace BlackCore
if (models.isEmpty()) { return c; }
for (CAircraftModel &model : models)
{
if (!force && model.hasValidDbKey()) { continue; }
if (!force && model.isLoadedFromDb()) { continue; }
bool modified = false;
model = CDatabaseUtils::consolidateModelWithDbData(model, force, &modified);
if (modified || model.hasValidDbKey()) { c++; }
if (modified || model.hasValidDbKey())
{
c++;
if (processEvents && c % 125 == 0)
{
sApp->processEventsFor(25);
}
}
}
CLogMessage().debug() << "Consolidated " << models.size() << " in " << timer.elapsed() << "ms";
return c;

View File

@@ -35,6 +35,9 @@ namespace BlackCore
//! Consolidate models with DB data
static int consolidateModelsWithDbData(BlackMisc::Simulation::CAircraftModelList &models, bool force);
//! Consolidate models with DB data
static int consolidateModelsWithDbDataAllowsGuiRefresh(BlackMisc::Simulation::CAircraftModelList &models, bool force, bool processEvents);
//! Consolidate models with DB data (simpler/faster version of CAircraftModel::consolidateModelWithDbData)
static int consolidateModelsWithDbModelAndDistributor(BlackMisc::Simulation::CAircraftModelList &models, bool force);

View File

@@ -171,7 +171,7 @@ namespace BlackGui
const int modelSize = models.size();
const bool filtered = unfilteredSize > modelSize;
int c = CDatabaseUtils::consolidateModelsWithDbData(models, true);
int c = CDatabaseUtils::consolidateModelsWithDbDataAllowsGuiRefresh(models, true, true);
if (c > 0 && this->modelsTargetSetable() && this->modelsTargetUpdatable())
{
if (filtered)
@@ -204,7 +204,7 @@ namespace BlackGui
CLogMessage().warning("No updatable target");
return;
}
int c = CDatabaseUtils::consolidateModelsWithDbData(models, true);
int c = CDatabaseUtils::consolidateModelsWithDbDataAllowsGuiRefresh(models, true, true);
if (c > 0 && this->modelsTargetUpdatable())
{
this->modelsTargetUpdatable()->updateModels(models);