From cbc095d230e39c1eed0f50cfc908d0877b561ff3 Mon Sep 17 00:00:00 2001 From: Klaus Basan Date: Sat, 3 Sep 2016 01:08:51 +0200 Subject: [PATCH] refs #755, restore distributor order when consolidating with DB data (formerly order was overridden) --- src/blackcore/db/databaseutils.cpp | 3 +++ src/blackmisc/simulation/aircraftmodel.cpp | 10 +++++++++- src/blackmisc/simulation/aircraftmodel.h | 5 ++++- src/blackmisc/simulation/aircraftmodellist.cpp | 2 +- 4 files changed, 17 insertions(+), 3 deletions(-) diff --git a/src/blackcore/db/databaseutils.cpp b/src/blackcore/db/databaseutils.cpp index c7e4fd359..178e8746b 100644 --- a/src/blackcore/db/databaseutils.cpp +++ b/src/blackcore/db/databaseutils.cpp @@ -30,12 +30,14 @@ namespace BlackCore if (modified) { *modified = false; } if (!model.hasModelString()) { return model; } if (!force && model.hasValidDbKey()) { return model; } + const int distributorOrder = model.getDistributorOrder(); // later restore that order CAircraftModel dbModel(sApp->getWebDataServices()->getModelForModelString(model.getModelString())); if (dbModel.hasValidDbKey()) { if (modified) { *modified = true; } dbModel.updateByLocalFileNames(model); + dbModel.setDistributorOrder(distributorOrder); return dbModel; } @@ -69,6 +71,7 @@ namespace BlackCore consolidatedModel.setDistributor(dbDistributor); } consolidatedModel.updateByLocalFileNames(model); + consolidatedModel.setDistributorOrder(distributorOrder); return consolidatedModel; } diff --git a/src/blackmisc/simulation/aircraftmodel.cpp b/src/blackmisc/simulation/aircraftmodel.cpp index e0322e659..95e1f157a 100644 --- a/src/blackmisc/simulation/aircraftmodel.cpp +++ b/src/blackmisc/simulation/aircraftmodel.cpp @@ -327,7 +327,15 @@ namespace BlackMisc this->getLivery().isMilitary(); } - bool CAircraftModel::updateDistributorOrder(const CDistributorList &distributors) + bool CAircraftModel::setDistributorOrder(int order) + { + if (order < 0) { return false; } + if (!this->m_distributor.isLoadedFromDb()) { return false; } + this->m_distributor.setOrder(order); + return true; + } + + bool CAircraftModel::setDistributorOrder(const CDistributorList &distributors) { if (distributors.isEmpty()) { return false; } bool found = false; diff --git a/src/blackmisc/simulation/aircraftmodel.h b/src/blackmisc/simulation/aircraftmodel.h index fe75e7166..da82616c3 100644 --- a/src/blackmisc/simulation/aircraftmodel.h +++ b/src/blackmisc/simulation/aircraftmodel.h @@ -216,8 +216,11 @@ namespace BlackMisc //! Set distributor void setDistributor(const CDistributor &distributor) { m_distributor = distributor; } + //! Set the distributor order + bool setDistributorOrder(int order); + //! Update distributor`s order attribute - bool updateDistributorOrder(const CDistributorList &distributors); + bool setDistributorOrder(const CDistributorList &distributors); //! Distributor bool hasDistributor() const; diff --git a/src/blackmisc/simulation/aircraftmodellist.cpp b/src/blackmisc/simulation/aircraftmodellist.cpp index 143ae131b..3bff7a014 100644 --- a/src/blackmisc/simulation/aircraftmodellist.cpp +++ b/src/blackmisc/simulation/aircraftmodellist.cpp @@ -498,7 +498,7 @@ namespace BlackMisc int found = 0; for (CAircraftModel &model : *this) { - if (model.updateDistributorOrder(distributors)) { found ++; } + if (model.setDistributorOrder(distributors)) { found ++; } } return found; }