refs #614, use interfaces from last step to reuse mergeWithDb data in multiple components

* adjusted menus
* adjusted loaders and components
This commit is contained in:
Klaus Basan
2016-04-08 14:11:40 +02:00
parent 43c69d2ed0
commit abca1fde52
12 changed files with 115 additions and 47 deletions

View File

@@ -16,6 +16,7 @@
#include "blackgui/guiutility.h" #include "blackgui/guiutility.h"
#include "blackgui/shortcut.h" #include "blackgui/shortcut.h"
#include "blackmisc/simulation/fscommon/aircraftcfgparser.h" #include "blackmisc/simulation/fscommon/aircraftcfgparser.h"
#include "blackmisc/simulation/aircraftmodelutils.h"
#include "blackmisc/logmessage.h" #include "blackmisc/logmessage.h"
#include <QFile> #include <QFile>
#include <QShortcut> #include <QShortcut>
@@ -579,7 +580,7 @@ namespace BlackGui
Q_UNUSED(withFilter); Q_UNUSED(withFilter);
int i = this->ui->tw_ModelsToBeMapped->indexOf(this->ui->tab_OwnModelSet); int i = this->ui->tw_ModelsToBeMapped->indexOf(this->ui->tab_OwnModelSet);
QString o = "Model set " + ui->comp_OwnModelSet->getModelSetSimulator().toQString(true); QString o = "Model set " + ui->comp_OwnModelSet->getModelSetSimulator().toQString(true);
const QString f = this->ui->comp_StashAircraft->view()->hasFilter() ? "F" : ""; const QString f = this->ui->comp_OwnModelSet->view()->hasFilter() ? "F" : "";
o = CGuiUtility::replaceTabCountValue(o, this->ui->comp_OwnModelSet->view()->rowCount()) + f; o = CGuiUtility::replaceTabCountValue(o, this->ui->comp_OwnModelSet->view()->rowCount()) + f;
this->ui->tw_ModelsToBeMapped->setTabText(i, o); this->ui->tw_ModelsToBeMapped->setTabText(i, o);
} }

View File

@@ -20,7 +20,6 @@
#include <QScopedPointer> #include <QScopedPointer>
namespace Ui { class CDbOwnModelsComponent; } namespace Ui { class CDbOwnModelsComponent; }
namespace BlackGui namespace BlackGui
{ {
namespace Views { class CAircraftModelView; } namespace Views { class CAircraftModelView; }

View File

@@ -8,8 +8,9 @@
*/ */
#include "dbownmodelsetcomponent.h" #include "dbownmodelsetcomponent.h"
#include "blackmisc/simulation/aircraftmodellist.h"
#include "blackgui/models/aircrafticaolistmodel.h" #include "blackgui/models/aircrafticaolistmodel.h"
#include "blackgui/menus/aircraftmodelmenus.h"
#include "blackmisc/simulation/aircraftmodellist.h"
#include "blackmisc/logmessage.h" #include "blackmisc/logmessage.h"
#include "dbmappingcomponent.h" #include "dbmappingcomponent.h"
#include "dbownmodelsetdialog.h" #include "dbownmodelsetdialog.h"
@@ -18,6 +19,7 @@
using namespace BlackMisc; using namespace BlackMisc;
using namespace BlackMisc::Simulation; using namespace BlackMisc::Simulation;
using namespace BlackGui::Models; using namespace BlackGui::Models;
using namespace BlackGui::Menus;
using namespace BlackGui::Views; using namespace BlackGui::Views;
namespace BlackGui namespace BlackGui
@@ -36,6 +38,7 @@ namespace BlackGui
ui->tvp_OwnModelSet->addFilterDialog(); ui->tvp_OwnModelSet->addFilterDialog();
ui->tvp_OwnModelSet->setCustomMenu(new CLoadModelsMenu(this)); ui->tvp_OwnModelSet->setCustomMenu(new CLoadModelsMenu(this));
ui->tvp_OwnModelSet->setJsonLoad(CAircraftModelView::AllowOnlySingleSimulator | CAircraftModelView::ReduceToOneSimulator); ui->tvp_OwnModelSet->setJsonLoad(CAircraftModelView::AllowOnlySingleSimulator | CAircraftModelView::ReduceToOneSimulator);
ui->tvp_OwnModelSet->setCustomMenu(new CMergeWithDbDataMenu(ui->tvp_OwnModelSet, this, false));
connect(ui->pb_CreateNewSet, &QPushButton::clicked, this, &CDbOwnModelSetComponent::ps_buttonClicked); connect(ui->pb_CreateNewSet, &QPushButton::clicked, this, &CDbOwnModelSetComponent::ps_buttonClicked);
connect(ui->pb_LoadExistingSet, &QPushButton::clicked, this, &CDbOwnModelSetComponent::ps_buttonClicked); connect(ui->pb_LoadExistingSet, &QPushButton::clicked, this, &CDbOwnModelSetComponent::ps_buttonClicked);
@@ -72,11 +75,27 @@ namespace BlackGui
const int diff = models.size() - cleanModelList.size(); const int diff = models.size() - cleanModelList.size();
if (diff > 0) if (diff > 0)
{ {
CLogMessage(this).warning("Removed models from set because not matching " + simulator.toQString(true)); CLogMessage(this).warning("Removed %1 models from set because not matching %2") << diff << simulator.toQString(true);
} }
this->ui->tvp_OwnModelSet->updateContainerMaybeAsync(cleanModelList); this->ui->tvp_OwnModelSet->updateContainerMaybeAsync(cleanModelList);
} }
void CDbOwnModelSetComponent::replaceOrAddModelSet(const CAircraftModelList &models, const CSimulatorInfo &simulator)
{
Q_ASSERT_X(simulator.isSingleSimulator(), Q_FUNC_INFO, "Need single simulator");
if (models.isEmpty()) { return; }
CAircraftModelList cleanModelList(models.matchesSimulator(simulator)); // remove those not matching the simulator
const int diff = models.size() - cleanModelList.size();
if (diff > 0)
{
CLogMessage(this).warning("Removed %1 models from set because not matching %2") << diff << simulator.toQString(true);
}
if (cleanModelList.isEmpty()) { return; }
CAircraftModelList updatedModels(this->ui->tvp_OwnModelSet->container());
updatedModels.replaceOrAddModelsWithString(cleanModelList, Qt::CaseInsensitive);
this->ui->tvp_OwnModelSet->updateContainerMaybeAsync(updatedModels);
}
const CAircraftModelList &CDbOwnModelSetComponent::getModelSet() const const CAircraftModelList &CDbOwnModelSetComponent::getModelSet() const
{ {
return ui->tvp_OwnModelSet->container(); return ui->tvp_OwnModelSet->container();
@@ -167,7 +186,7 @@ namespace BlackGui
const CAircraftModelList ml(ui->tvp_OwnModelSet->container()); const CAircraftModelList ml(ui->tvp_OwnModelSet->container());
if (!ml.isEmpty()) if (!ml.isEmpty())
{ {
const CStatusMessage m = this->m_modelSetLoader.setModelsInCache(ml); const CStatusMessage m = this->m_modelSetLoader.setCachedModels(ml);
CLogMessage::preformatted(m); CLogMessage::preformatted(m);
} }
} }

View File

@@ -34,9 +34,17 @@ namespace BlackGui
*/ */
class CDbOwnModelSetComponent : class CDbOwnModelSetComponent :
public QFrame, public QFrame,
public CDbMappingComponentAware public CDbMappingComponentAware,
public BlackMisc::Simulation::IModelsSetable,
public BlackMisc::Simulation::IModelsUpdatable,
public BlackMisc::Simulation::IModelsPerSimulatorSetable,
public BlackMisc::Simulation::IModelsPerSimulatorUpdatable
{ {
Q_OBJECT Q_OBJECT
Q_INTERFACES(BlackMisc::Simulation::IModelsSetable)
Q_INTERFACES(BlackMisc::Simulation::IModelsUpdatable)
Q_INTERFACES(BlackMisc::Simulation::IModelsPerSimulatorSetable)
Q_INTERFACES(BlackMisc::Simulation::IModelsPerSimulatorUpdatable)
public: public:
//! Constructor //! Constructor
@@ -63,10 +71,21 @@ namespace BlackGui
//! \copydoc CDbMappingComponentAware::setMappingComponent //! \copydoc CDbMappingComponentAware::setMappingComponent
virtual void setMappingComponent(CDbMappingComponent *component) override; virtual void setMappingComponent(CDbMappingComponent *component) override;
//! \name Implementations of the models interfaces
//! @{
virtual void setModels(const BlackMisc::Simulation::CAircraftModelList &models) override { this->setModelSet(models, this->m_simulator); }
virtual void updateModels(const BlackMisc::Simulation::CAircraftModelList &models) override { this->replaceOrAddModelSet(models, this->m_simulator); }
virtual void setModels(const BlackMisc::Simulation::CAircraftModelList &models, const BlackMisc::Simulation::CSimulatorInfo &simulator) override { this->setModelSet(models, simulator); }
virtual void updateModels(const BlackMisc::Simulation::CAircraftModelList &models, const BlackMisc::Simulation::CSimulatorInfo &simulator) override { this->replaceOrAddModelSet(models, simulator); }
//! @}
public slots: public slots:
//! Set the model set //! Set the model set
void setModelSet(const BlackMisc::Simulation::CAircraftModelList &models, const BlackMisc::Simulation::CSimulatorInfo &simulator); void setModelSet(const BlackMisc::Simulation::CAircraftModelList &models, const BlackMisc::Simulation::CSimulatorInfo &simulator);
//! Replace or add models provided
void replaceOrAddModelSet(const BlackMisc::Simulation::CAircraftModelList &models, const BlackMisc::Simulation::CSimulatorInfo &simulator);
private slots: private slots:
//! Tab has been changed //! Tab has been changed
void ps_tabIndexChanged(int index); void ps_tabIndexChanged(int index);

View File

@@ -10,7 +10,7 @@
#include "aircraftmodelmenus.h" #include "aircraftmodelmenus.h"
#include "blackgui/guiapplication.h" #include "blackgui/guiapplication.h"
#include "blackmisc/icons.h" #include "blackmisc/icons.h"
#include "blackmisc/simulation/aircraftmodelloader.h" #include "blackmisc/simulation/aircraftmodelutils.h"
#include <QDesktopServices> #include <QDesktopServices>
using namespace BlackMisc; using namespace BlackMisc;
@@ -78,11 +78,22 @@ namespace BlackGui
} }
} }
CMergeWithDbDataMenu::CMergeWithDbDataMenu(CAircraftModelView *modelView, QObject *modelsTarget, bool separator) :
IAircraftModelViewMenu(modelView, separator), m_modelsTarget(modelsTarget)
{
if (modelsTarget)
{
bool ok = modelsTargetSetable() || modelsTargetUpdatable();
Q_ASSERT_X(ok, Q_FUNC_INFO, "Neither setable nor updatable");
Q_UNUSED(ok);
}
}
void CMergeWithDbDataMenu::customMenu(QMenu &menu) const void CMergeWithDbDataMenu::customMenu(QMenu &menu) const
{ {
const CAircraftModelView *mv = modelView(); const CAircraftModelView *mv = modelView();
if (mv->isEmpty()) { this->nestedCustomMenu(menu); return; } if (mv->isEmpty()) { this->nestedCustomMenu(menu); return; }
if (!sGui->hasWebDataServices()) { return; } if (!sGui->hasWebDataServices()) { this->nestedCustomMenu(menu); return; }
this->addSeparator(menu); this->addSeparator(menu);
QMenu *mm = menu.addMenu(CIcons::databaseEdit16(), "Merge with DB data"); QMenu *mm = menu.addMenu(CIcons::databaseEdit16(), "Merge with DB data");
@@ -97,37 +108,41 @@ namespace BlackGui
void CMergeWithDbDataMenu::ps_mergeData() void CMergeWithDbDataMenu::ps_mergeData()
{ {
Q_ASSERT_X(sGui, Q_FUNC_INFO, "Missing sGui"); Q_ASSERT_X(sGui, Q_FUNC_INFO, "Missing sGui");
CAircraftModelView *mv = modelView();
if (mv->isEmpty()) { return; }
if (!sGui->hasWebDataServices()) { return; } if (!sGui->hasWebDataServices()) { return; }
const CAircraftModelList dbModels(sGui->getWebDataServices()->getModels()); const CAircraftModelList dbModels(sGui->getWebDataServices()->getModels());
CAircraftModelList models(this->getAircraftModels()); CAircraftModelList models(this->getAircraftModels());
IAircraftModelLoader::mergeWithDbData(models, dbModels, true); CAircraftModelUtilities::mergeWithDbData(models, dbModels, true);
mv->updateContainerMaybeAsync(models); if (this->modelsTargetSetable())
if (this->m_loader)
{ {
this->m_loader->setModelsInCache(models); this->modelsTargetSetable()->setModels(models);
} }
} }
void CMergeWithDbDataMenu::ps_mergeSelectedData() void CMergeWithDbDataMenu::ps_mergeSelectedData()
{ {
Q_ASSERT_X(sGui, Q_FUNC_INFO, "Missing sGui"); Q_ASSERT_X(sGui, Q_FUNC_INFO, "Missing sGui");
CAircraftModelView *mv = modelView();
if (mv->isEmpty()) { return; }
if (!sGui->hasWebDataServices()) { return; } if (!sGui->hasWebDataServices()) { return; }
CAircraftModelList models(this->getSelectedAircraftModels()); CAircraftModelList models(this->getSelectedAircraftModels());
if (models.isEmpty()) { return; } if (models.isEmpty()) { return; }
const CAircraftModelList dbModels(sGui->getWebDataServices()->getModels()); const CAircraftModelList dbModels(sGui->getWebDataServices()->getModels());
IAircraftModelLoader::mergeWithDbData(models, dbModels, true); CAircraftModelUtilities::mergeWithDbData(models, dbModels, true);
mv->replaceOrAddModelsWithString(models); if (this->modelsTargetUpdatable())
if (this->m_loader)
{ {
this->m_loader->setModelsInCache(models); this->modelsTargetUpdatable()->updateModels(models);
} }
} }
IModelsSetable *CMergeWithDbDataMenu::modelsTargetSetable() const
{
return qobject_cast<IModelsSetable *>(this->m_modelsTarget);
}
IModelsUpdatable *CMergeWithDbDataMenu::modelsTargetUpdatable() const
{
return qobject_cast<IModelsUpdatable *>(this->m_modelsTarget);
}
} // ns } // ns
} // ns } // ns

View File

@@ -12,7 +12,7 @@
#include "menudelegate.h" #include "menudelegate.h"
#include "blackgui/views/aircraftmodelview.h" #include "blackgui/views/aircraftmodelview.h"
#include "blackmisc/simulation/aircraftmodelloader.h" #include "blackmisc/simulation/aircraftmodelinterfaces.h"
#include "blackmisc/simulation/fscommon/vpilotrulesreader.h" #include "blackmisc/simulation/fscommon/vpilotrulesreader.h"
#include <QMenu> #include <QMenu>
#include <QObject> #include <QObject>
@@ -68,10 +68,7 @@ namespace BlackGui
using IAircraftModelViewMenu::IAircraftModelViewMenu; using IAircraftModelViewMenu::IAircraftModelViewMenu;
//! Constructor //! Constructor
CMergeWithDbDataMenu(BlackGui::Views::CAircraftModelView *modelView, CMergeWithDbDataMenu(BlackGui::Views::CAircraftModelView *modelView, QObject *modelsTarget, bool separator = true);
BlackMisc::Simulation::IAircraftModelLoader *modelLoader, bool separator = true) :
IAircraftModelViewMenu(modelView, separator), m_loader(modelLoader)
{}
//! \copydoc IMenuDelegate::customMenu //! \copydoc IMenuDelegate::customMenu
virtual void customMenu(QMenu &menu) const override; virtual void customMenu(QMenu &menu) const override;

View File

@@ -80,7 +80,7 @@ namespace BlackMisc
CAircraftModelList IAircraftModelLoader::getAircraftModels() const CAircraftModelList IAircraftModelLoader::getAircraftModels() const
{ {
return this->m_caches.getModels(this->m_simulatorInfo); return this->m_caches.getCachedModels(this->m_simulatorInfo);
} }
QDateTime IAircraftModelLoader::getCacheTimestamp() const QDateTime IAircraftModelLoader::getCacheTimestamp() const
@@ -90,17 +90,17 @@ namespace BlackMisc
void IAircraftModelLoader::syncronizeCache() void IAircraftModelLoader::syncronizeCache()
{ {
return this->m_caches.syncronize(this->m_simulatorInfo); return this->m_caches.syncronizeCache(this->m_simulatorInfo);
} }
bool IAircraftModelLoader::hasCachedData() const bool IAircraftModelLoader::hasCachedData() const
{ {
return !this->m_caches.getModels(this->m_simulatorInfo).isEmpty(); return !this->m_caches.getCachedModels(this->m_simulatorInfo).isEmpty();
} }
CStatusMessage IAircraftModelLoader::clearCache() CStatusMessage IAircraftModelLoader::clearCache()
{ {
return this->setModelsInCache(CAircraftModelList()); return this->setCachedModels(CAircraftModelList());
} }
void IAircraftModelLoader::startLoading(LoadMode mode, const CAircraftModelList &dbModels) void IAircraftModelLoader::startLoading(LoadMode mode, const CAircraftModelList &dbModels)

View File

@@ -13,7 +13,7 @@
#define BLACKMISC_SIMULATION_IAIRCRAFTMODELLOADER_H #define BLACKMISC_SIMULATION_IAIRCRAFTMODELLOADER_H
#include "blackmisc/blackmiscexport.h" #include "blackmisc/blackmiscexport.h"
#include "blackmisc/simulation/aircraftmodellist.h" #include "blackmisc/simulation/aircraftmodelinterfaces.h"
#include "blackmisc/simulation/simulatorinfo.h" #include "blackmisc/simulation/simulatorinfo.h"
#include "blackmisc/simulation/data/modelcaches.h" #include "blackmisc/simulation/data/modelcaches.h"
#include "blackmisc/pixmap.h" #include "blackmisc/pixmap.h"
@@ -28,9 +28,18 @@ namespace BlackMisc
/*! /*!
* Load the aircraft for a simulator * Load the aircraft for a simulator
*/ */
class BLACKMISC_EXPORT IAircraftModelLoader : public QObject class BLACKMISC_EXPORT IAircraftModelLoader :
public QObject,
public BlackMisc::Simulation::IModelsSetable,
public BlackMisc::Simulation::IModelsUpdatable,
public BlackMisc::Simulation::IModelsPerSimulatorSetable,
public BlackMisc::Simulation::IModelsPerSimulatorUpdatable
{ {
Q_OBJECT Q_OBJECT
Q_INTERFACES(BlackMisc::Simulation::IModelsSetable)
Q_INTERFACES(BlackMisc::Simulation::IModelsUpdatable)
Q_INTERFACES(BlackMisc::Simulation::IModelsPerSimulatorSetable)
Q_INTERFACES(BlackMisc::Simulation::IModelsPerSimulatorUpdatable)
public: public:
//! Parser mode //! Parser mode

View File

@@ -56,14 +56,14 @@ namespace BlackMisc
void CAircraftModelSetLoader::changeSimulator(const CSimulatorInfo &simulator) void CAircraftModelSetLoader::changeSimulator(const CSimulatorInfo &simulator)
{ {
Q_ASSERT_X(simulator.isSingleSimulator(), Q_FUNC_INFO, "Only one simulator per loader"); Q_ASSERT_X(simulator.isSingleSimulator(), Q_FUNC_INFO, "Only one simulator per loader");
this->m_caches.syncronize(simulator);
this->m_simulatorInfo = simulator; this->m_simulatorInfo = simulator;
this->m_caches.syncronizeCache(simulator);
emit simulatorChanged(simulator); emit simulatorChanged(simulator);
} }
CAircraftModelList CAircraftModelSetLoader::getAircraftModels() const CAircraftModelList CAircraftModelSetLoader::getAircraftModels() const
{ {
return this->m_caches.getModels(this->m_simulatorInfo); return this->m_caches.getCachedModels(this->m_simulatorInfo);
} }
QDateTime CAircraftModelSetLoader::getCacheTimestamp() const QDateTime CAircraftModelSetLoader::getCacheTimestamp() const
@@ -73,17 +73,17 @@ namespace BlackMisc
void CAircraftModelSetLoader::syncronizeCache() void CAircraftModelSetLoader::syncronizeCache()
{ {
return this->m_caches.syncronize(this->m_simulatorInfo); return this->m_caches.syncronizeCache(this->m_simulatorInfo);
} }
bool CAircraftModelSetLoader::hasCachedData() const bool CAircraftModelSetLoader::hasCachedData() const
{ {
return !this->m_caches.getModels(this->m_simulatorInfo).isEmpty(); return !this->m_caches.getCachedModels(this->m_simulatorInfo).isEmpty();
} }
CStatusMessage CAircraftModelSetLoader::clearCache() CStatusMessage CAircraftModelSetLoader::clearCache()
{ {
return this->setModelsInCache(CAircraftModelList()); return this->setCachedModels(CAircraftModelList());
} }
const CSimulatorInfo &CAircraftModelSetLoader::getSimulator() const const CSimulatorInfo &CAircraftModelSetLoader::getSimulator() const

View File

@@ -13,8 +13,7 @@
#define BLACKMISC_SIMULATION_AIRCRAFTMODELSETLOADER_H #define BLACKMISC_SIMULATION_AIRCRAFTMODELSETLOADER_H
#include "blackmisc/blackmiscexport.h" #include "blackmisc/blackmiscexport.h"
#include "blackmisc/simulation/aircraftmodellist.h" #include "blackmisc/simulation/aircraftmodelinterfaces.h"
#include "blackmisc/simulation/simulatorinfo.h"
#include "blackmisc/simulation/data/modelcaches.h" #include "blackmisc/simulation/data/modelcaches.h"
#include "blackmisc/pixmap.h" #include "blackmisc/pixmap.h"
#include <QObject> #include <QObject>
@@ -65,6 +64,14 @@ namespace BlackMisc
//! Shutdown //! Shutdown
void gracefulShutdown(); void gracefulShutdown();
//! \name Implementations of the models interfaces
//! @{
virtual void setModels(const BlackMisc::Simulation::CAircraftModelList &models) override { this->setCachedModels(models, this->m_simulatorInfo); }
virtual void updateModels(const BlackMisc::Simulation::CAircraftModelList &models) override { this->replaceOrAddCachedModels(models, this->m_simulatorInfo); }
virtual void setModels(const BlackMisc::Simulation::CAircraftModelList &models, const BlackMisc::Simulation::CSimulatorInfo &simulator) override { this->setCachedModels(models, simulator); }
virtual void updateModels(const BlackMisc::Simulation::CAircraftModelList &models, const BlackMisc::Simulation::CSimulatorInfo &simulator) override { this->replaceOrAddCachedModels(models, simulator); }
//! @}
signals: signals:
//! Simulator has been changed //! Simulator has been changed
void simulatorChanged(const BlackMisc::Simulation::CSimulatorInfo &simulator); void simulatorChanged(const BlackMisc::Simulation::CSimulatorInfo &simulator);
@@ -75,11 +82,11 @@ namespace BlackMisc
public slots: public slots:
//! Set cache from outside, this should only be used in special cases. //! Set cache from outside, this should only be used in special cases.
//! But it allows to modify data elsewhere and update the cache with manipulated data. //! But it allows to modify data elsewhere and update the cache with manipulated data.
BlackMisc::CStatusMessage setModelsInCache(const CAircraftModelList &models, const CSimulatorInfo &simulator = CSimulatorInfo()); BlackMisc::CStatusMessage setCachedModels(const CAircraftModelList &models, const CSimulatorInfo &simulator = CSimulatorInfo());
//! Set cache from outside, this should only be used in special cases. //! Set cache from outside, this should only be used in special cases.
//! But it allows to modify data elsewhere and update the cache with manipulated data. //! But it allows to modify data elsewhere and update the cache with manipulated data.
BlackMisc::CStatusMessage replaceOrAddModelsInCache(const CAircraftModelList &models, const CSimulatorInfo &simulator = CSimulatorInfo()); BlackMisc::CStatusMessage replaceOrAddCachedModels(const CAircraftModelList &models, const CSimulatorInfo &simulator = CSimulatorInfo());
//! Change the simulator //! Change the simulator
void changeSimulator(const BlackMisc::Simulation::CSimulatorInfo &simulator); void changeSimulator(const BlackMisc::Simulation::CSimulatorInfo &simulator);

View File

@@ -9,6 +9,7 @@
#include "aircraftcfgparser.h" #include "aircraftcfgparser.h"
#include "blackmisc/simulation/fscommon/fscommonutil.h" #include "blackmisc/simulation/fscommon/fscommonutil.h"
#include "blackmisc/simulation/aircraftmodelutils.h"
#include "blackmisc/fileutils.h" #include "blackmisc/fileutils.h"
#include "blackmisc/predicates.h" #include "blackmisc/predicates.h"
#include "blackmisc/logmessage.h" #include "blackmisc/logmessage.h"
@@ -110,7 +111,7 @@ namespace BlackMisc
if (ok) if (ok)
{ {
models = (aircraftCfgEntriesList.toAircraftModelList(this->getSimulator())); models = (aircraftCfgEntriesList.toAircraftModelList(this->getSimulator()));
this->mergeWithDbData(models, dbModels); CAircraftModelUtilities::mergeWithDbData(models, dbModels);
} }
return std::make_tuple(aircraftCfgEntriesList, models, ok); return std::make_tuple(aircraftCfgEntriesList, models, ok);
}); });
@@ -124,7 +125,7 @@ namespace BlackMisc
const bool hasData = !models.isEmpty(); const bool hasData = !models.isEmpty();
if (hasData) if (hasData)
{ {
this->setModelsInCache(models); // not thread safe this->setCachedModels(models); // not thread safe
} }
// currently I treat no data as error // currently I treat no data as error
emit this->loadingFinished(hasData, this->m_simulatorInfo); emit this->loadingFinished(hasData, this->m_simulatorInfo);
@@ -140,11 +141,11 @@ namespace BlackMisc
bool ok; bool ok;
this->m_parsedCfgEntriesList = performParsing(m_rootDirectory, m_excludedDirectories, &ok); this->m_parsedCfgEntriesList = performParsing(m_rootDirectory, m_excludedDirectories, &ok);
CAircraftModelList models(this->m_parsedCfgEntriesList.toAircraftModelList(this->getSimulator())); CAircraftModelList models(this->m_parsedCfgEntriesList.toAircraftModelList(this->getSimulator()));
this->mergeWithDbData(models, dbModels); CAircraftModelUtilities::mergeWithDbData(models, dbModels);
const bool hasData = !models.isEmpty(); const bool hasData = !models.isEmpty();
if (hasData) if (hasData)
{ {
this->setModelsInCache(models); // not thread safe this->setCachedModels(models); // not thread safe
} }
// currently I treat no data as error // currently I treat no data as error
emit this->loadingFinished(hasData, this->m_simulatorInfo); emit this->loadingFinished(hasData, this->m_simulatorInfo);

View File

@@ -9,6 +9,7 @@
#include "aircraftmodelloaderxplane.h" #include "aircraftmodelloaderxplane.h"
#include "xplaneutil.h" #include "xplaneutil.h"
#include "blackmisc/simulation/aircraftmodelutils.h"
#include "blackmisc/predicates.h" #include "blackmisc/predicates.h"
#include "blackmisc/logmessage.h" #include "blackmisc/logmessage.h"
#include "blackmisc/fileutils.h" #include "blackmisc/fileutils.h"
@@ -80,7 +81,7 @@ namespace BlackMisc
[this, rootDirectory, excludedDirectories, dbModels]() [this, rootDirectory, excludedDirectories, dbModels]()
{ {
auto models = performParsing(rootDirectory, excludedDirectories); auto models = performParsing(rootDirectory, excludedDirectories);
mergeWithDbData(models, dbModels); CAircraftModelUtilities::mergeWithDbData(models, dbModels);
return models; return models;
}); });
m_parserWorker->thenWithResult<CAircraftModelList>(this, [this](const auto & models) m_parserWorker->thenWithResult<CAircraftModelList>(this, [this](const auto & models)
@@ -91,7 +92,7 @@ namespace BlackMisc
else if (mode.testFlag(LoadDirectly)) else if (mode.testFlag(LoadDirectly))
{ {
CAircraftModelList models(performParsing(m_rootDirectory, m_excludedDirectories)); CAircraftModelList models(performParsing(m_rootDirectory, m_excludedDirectories));
mergeWithDbData(models, dbModels); CAircraftModelUtilities::mergeWithDbData(models, dbModels);
updateInstalledModels(models); updateInstalledModels(models);
} }
} }
@@ -111,7 +112,7 @@ namespace BlackMisc
void CAircraftModelLoaderXPlane::updateInstalledModels(const CAircraftModelList &models) void CAircraftModelLoaderXPlane::updateInstalledModels(const CAircraftModelList &models)
{ {
this->setModelsInCache(models); this->setCachedModels(models);
emit loadingFinished(true, this->m_simulatorInfo); emit loadingFinished(true, this->m_simulatorInfo);
} }