Ref T292, adjusted UI components to reflect model loader changes

This commit is contained in:
Klaus Basan
2018-07-22 18:19:26 +02:00
parent 5faace2bb2
commit 24a1f7d96d
7 changed files with 47 additions and 41 deletions

View File

@@ -44,22 +44,21 @@ namespace BlackGui
connect(ui->rb_OwnModels, &QRadioButton::clicked, this, &CAircraftModelStringCompleter::initGui); connect(ui->rb_OwnModels, &QRadioButton::clicked, this, &CAircraftModelStringCompleter::initGui);
connect(&m_modelCaches, &CModelCaches::cacheChanged, this, &CAircraftModelStringCompleter::setSimulator, Qt::QueuedConnection); connect(&m_modelCaches, &CModelCaches::cacheChanged, this, &CAircraftModelStringCompleter::setSimulator, Qt::QueuedConnection);
CSimulatorInfo sim = CSimulatorInfo(CSimulatorInfo::P3D); // default CSimulatorInfo simulator = CSimulatorInfo(CSimulatorInfo::P3D); // default
if (sGui->getIContextSimulator()) if (sGui->getIContextSimulator())
{ {
connect(sGui->getIContextSimulator(), &IContextSimulator::simulatorStatusChanged, this, &CAircraftModelStringCompleter::onSimulatorConnected); connect(sGui->getIContextSimulator(), &IContextSimulator::simulatorStatusChanged, this, &CAircraftModelStringCompleter::onSimulatorConnected);
sim = sGui->getIContextSimulator()->getSimulatorPluginInfo().getSimulator(); CSimulatorInfo pluginSimulator = sGui->getIContextSimulator()->getSimulatorPluginInfo().getSimulator();
if (sim.isSingleSimulator()) if (pluginSimulator.isSingleSimulator())
{ {
m_modelCaches.setCurrentSimulator(sim); simulator = pluginSimulator;
} }
else else
{ {
this->setSourceVisible(OwnModels, false); this->setSourceVisible(OwnModels, false); // hide own models
sim = m_modelCaches.getCurrentSimulator();
} }
} }
this->setSimulator(sim); this->setSimulator(simulator);
} }
CAircraftModelStringCompleter::~CAircraftModelStringCompleter() CAircraftModelStringCompleter::~CAircraftModelStringCompleter()
@@ -106,9 +105,9 @@ namespace BlackGui
bool CAircraftModelStringCompleter::setSimulator(const CSimulatorInfo &simulator) bool CAircraftModelStringCompleter::setSimulator(const CSimulatorInfo &simulator)
{ {
if (simulator.isSingleSimulator()) { return false; }
if (this->getSimulator() == simulator) { return false; } if (this->getSimulator() == simulator) { return false; }
m_currentSimulator = simulator; m_currentSimulator = simulator;
m_modelCaches.setCurrentSimulator(simulator); // all models
QPointer<CAircraftModelStringCompleter> myself(this); QPointer<CAircraftModelStringCompleter> myself(this);
QTimer::singleShot(100, this, [ = ] QTimer::singleShot(100, this, [ = ]
{ {
@@ -150,7 +149,7 @@ namespace BlackGui
else if (ui->rb_OwnModels->isChecked()) else if (ui->rb_OwnModels->isChecked())
{ {
if (!simChanged && m_currentDataSource == OwnModels) { return; } if (!simChanged && m_currentDataSource == OwnModels) { return; }
modelStrings = m_modelCaches.getCurrentCachedModels().toCompleterStrings(); modelStrings = m_modelCaches.getCachedModels(this->getSimulator()).toCompleterStrings();
dataSource = OwnModels; dataSource = OwnModels;
} }

View File

@@ -75,8 +75,7 @@ namespace BlackGui
if (set) if (set)
{ {
// inits current version cache // inits current version cache
m_modelSetCaches.setCurrentSimulator(sim); m_modelSetCaches.synchronizeCache(sim);
m_modelSetCaches.synchronizeCurrentCache();
// get file name // get file name
CAircraftModelList otherSet; CAircraftModelList otherSet;
@@ -86,7 +85,7 @@ namespace BlackGui
CApplication::processEventsFor(250); CApplication::processEventsFor(250);
if (this->confirmOverride(QString("Override model set for '%1'").arg(sim.toQString()))) if (this->confirmOverride(QString("Override model set for '%1'").arg(sim.toQString())))
{ {
m_modelSetCaches.setModels(otherSet, sim); m_modelSetCaches.setModelsForSimulator(otherSet, sim);
} }
} }
} // set } // set
@@ -94,8 +93,7 @@ namespace BlackGui
if (cache) if (cache)
{ {
// inits current version cache // inits current version cache
m_modelCaches.setCurrentSimulator(sim); m_modelCaches.synchronizeCache(sim);
m_modelCaches.synchronizeCurrentCache();
// get file name // get file name
CAircraftModelList otherCache; CAircraftModelList otherCache;
@@ -105,7 +103,7 @@ namespace BlackGui
CApplication::processEventsFor(250); CApplication::processEventsFor(250);
if (this->confirmOverride(QString("Override model cache for '%1'").arg(sim.toQString()))) if (this->confirmOverride(QString("Override model cache for '%1'").arg(sim.toQString())))
{ {
m_modelCaches.setModels(otherCache, sim); m_modelCaches.setModelsForSimulator(otherCache, sim);
} }
} }
} }

View File

@@ -15,6 +15,7 @@
#include "blackmisc/simulation/aircraftmodellist.h" #include "blackmisc/simulation/aircraftmodellist.h"
#include <QDialogButtonBox> #include <QDialogButtonBox>
#include <QModelIndexList> #include <QModelIndexList>
#include <QPointer>
using namespace BlackMisc::Network; using namespace BlackMisc::Network;
using namespace BlackMisc::Simulation; using namespace BlackMisc::Simulation;
@@ -39,13 +40,11 @@ namespace BlackGui
ui->bb_loadDataDialog->button(QDialogButtonBox::Apply)->setText("Load"); ui->bb_loadDataDialog->button(QDialogButtonBox::Apply)->setText("Load");
ui->wi_WorkStatus->setVisible(false); ui->wi_WorkStatus->setVisible(false);
ui->wi_Consolidate->setVisible(false); ui->wi_Consolidate->setVisible(false);
ui->comp_SimulatorSelector->setValue(m_sets.getCurrentSimulator()); ui->comp_SimulatorSelector->setRememberSelection(true);
connect(sGui->getWebDataServices(), &CWebDataServices::dataRead, this, &CDbLoadDataDialog::onDataRead, Qt::QueuedConnection); connect(sGui->getWebDataServices(), &CWebDataServices::dataRead, this, &CDbLoadDataDialog::onDataRead, Qt::QueuedConnection);
connect(ui->bb_loadDataDialog, &QDialogButtonBox::clicked, this, &CDbLoadDataDialog::onButtonClicked); connect(ui->bb_loadDataDialog, &QDialogButtonBox::clicked, this, &CDbLoadDataDialog::onButtonClicked);
connect(ui->pb_Consolidate, &QPushButton::clicked, this, &CDbLoadDataDialog::consolidate); connect(ui->pb_Consolidate, &QPushButton::clicked, this, &CDbLoadDataDialog::consolidate);
connect(this, &CDbLoadDataDialog::rejected, this, &CDbLoadDataDialog::onRejected); connect(this, &CDbLoadDataDialog::rejected, this, &CDbLoadDataDialog::onRejected);
connect(ui->comp_SimulatorSelector, &CSimulatorSelector::changed, &m_sets, &CModelSetCaches::setCurrentSimulator, Qt::QueuedConnection);
connect(ui->comp_SimulatorSelector, &CSimulatorSelector::changed, &m_models, &CModelCaches::setCurrentSimulator, Qt::QueuedConnection);
} }
CDbLoadDataDialog::~CDbLoadDataDialog() CDbLoadDataDialog::~CDbLoadDataDialog()
@@ -124,8 +123,10 @@ namespace BlackGui
m_pendingEntitiesCount = -1; m_pendingEntitiesCount = -1;
const bool defaultConsolidate = !ui->cb_AllModels->isChecked() && ui->cb_ModelSet->isChecked(); const bool defaultConsolidate = !ui->cb_AllModels->isChecked() && ui->cb_ModelSet->isChecked();
QPointer<CDbLoadDataDialog> myself(this);
QTimer::singleShot(2000, this, [ = ] QTimer::singleShot(2000, this, [ = ]
{ {
if (!myself) { return; }
ui->wi_Consolidate->setVisible(true); ui->wi_Consolidate->setVisible(true);
ui->wi_WorkStatus->setVisible(false); ui->wi_WorkStatus->setVisible(false);
if (defaultConsolidate) if (defaultConsolidate)
@@ -154,31 +155,35 @@ namespace BlackGui
ui->wi_WorkStatus->setVisible(true); ui->wi_WorkStatus->setVisible(true);
ui->pb_Loading->setValue(0); ui->pb_Loading->setValue(0);
ui->pb_Loading->setMaximum(0); // 0/0 causing busy indicator ui->pb_Loading->setMaximum(0); // 0/0 causing busy indicator
const CSimulatorInfo simulator = ui->comp_SimulatorSelector->getValue();
do do
{ {
if (set) if (set)
{ {
ui->le_Info->setText("Model set"); ui->le_Info->setText("Model set");
CAircraftModelList models = m_sets.getCurrentCachedModels(); CAircraftModelList models = m_sets.getCachedModels(simulator);
const int c = CDatabaseUtils::consolidateModelsWithDbDataAllowsGuiRefresh(models, true, true); const int c = CDatabaseUtils::consolidateModelsWithDbDataAllowsGuiRefresh(models, true, true);
if (c > 0) { m_sets.setCachedModels(models, m_sets.getCurrentSimulator()); } if (c > 0) { m_sets.setCachedModels(models, simulator); }
} }
if (!this->isVisible()) { break; } // dialog closed? if (!this->isVisible()) { break; } // dialog closed?
if (all) if (all)
{ {
ui->le_Info->setText("All models"); ui->le_Info->setText("All models");
CAircraftModelList models = m_models.getCurrentCachedModels(); CAircraftModelList models = m_models.getCachedModels(simulator);
const int c = CDatabaseUtils::consolidateModelsWithDbDataAllowsGuiRefresh(models, true, true); const int c = CDatabaseUtils::consolidateModelsWithDbDataAllowsGuiRefresh(models, true, true);
if (c > 0) { m_models.setCachedModels(models, m_models.getCurrentSimulator()); } if (c > 0) { m_models.setCachedModels(models, simulator); }
} }
} }
while (false); while (false);
m_consolidating = false; m_consolidating = false;
QPointer<CDbLoadDataDialog> myself(this);
QTimer::singleShot(2000, this, [ = ] QTimer::singleShot(2000, this, [ = ]
{ {
if (!myself) { return; }
ui->pb_Loading->setMaximum(100); ui->pb_Loading->setMaximum(100);
ui->wi_WorkStatus->setVisible(false); ui->wi_WorkStatus->setVisible(false);
if (m_autoConsolidate) if (m_autoConsolidate)

View File

@@ -125,21 +125,22 @@ namespace BlackGui
ui->tvp_OwnModelSet->updateContainerMaybeAsync(cleanModelList); ui->tvp_OwnModelSet->updateContainerMaybeAsync(cleanModelList);
} }
void CDbOwnModelSetComponent::replaceOrAddModelSet(const CAircraftModelList &models, const CSimulatorInfo &simulator) int CDbOwnModelSetComponent::replaceOrAddModelSet(const CAircraftModelList &models, const CSimulatorInfo &simulator)
{ {
Q_ASSERT_X(simulator.isSingleSimulator(), Q_FUNC_INFO, "Need single simulator"); Q_ASSERT_X(simulator.isSingleSimulator(), Q_FUNC_INFO, "Need single simulator");
if (models.isEmpty()) { return; } if (models.isEmpty()) { return 0; }
CAircraftModelList cleanModelList(models.matchesSimulator(simulator)); // remove those not matching the simulator CAircraftModelList cleanModelList(models.matchesSimulator(simulator)); // remove those not matching the simulator
const int diff = models.size() - cleanModelList.size(); const int diff = models.size() - cleanModelList.size();
if (diff > 0) if (diff > 0)
{ {
CLogMessage(this).warning("Removed %1 models from set because not matching %2") << diff << simulator.toQString(true); CLogMessage(this).warning("Removed %1 models from set because not matching %2") << diff << simulator.toQString(true);
} }
if (cleanModelList.isEmpty()) { return; } if (cleanModelList.isEmpty()) { return 0; }
CAircraftModelList updatedModels(ui->tvp_OwnModelSet->container()); CAircraftModelList updatedModels(ui->tvp_OwnModelSet->container());
updatedModels.replaceOrAddModelsWithString(cleanModelList, Qt::CaseInsensitive); updatedModels.replaceOrAddModelsWithString(cleanModelList, Qt::CaseInsensitive);
updatedModels.resetOrder(); updatedModels.resetOrder();
ui->tvp_OwnModelSet->updateContainerMaybeAsync(updatedModels); ui->tvp_OwnModelSet->updateContainerMaybeAsync(updatedModels);
return diff;
} }
const CAircraftModelList &CDbOwnModelSetComponent::getModelSetFromView() const const CAircraftModelList &CDbOwnModelSetComponent::getModelSetFromView() const
@@ -233,7 +234,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 = m_modelSetLoader.setCachedModels(ml); const CStatusMessage m = m_modelSetLoader.setCachedModels(ml, this->getSelectedSimulator());
CLogMessage::preformatted(m); CLogMessage::preformatted(m);
} }
return; return;
@@ -392,7 +393,7 @@ namespace BlackGui
const CDistributorList distributors = preferences.getDistributors(simulator); const CDistributorList distributors = preferences.getDistributors(simulator);
if (distributors.isEmpty()) { return; } if (distributors.isEmpty()) { return; }
modelSet.updateDistributorOrder(distributors); modelSet.updateDistributorOrder(distributors);
m_modelSetLoader.setModels(modelSet, simulator); m_modelSetLoader.setModelsForSimulator(modelSet, simulator);
// display? // display?
const CSimulatorInfo currentSimulator(this->getModelSetSimulator()); const CSimulatorInfo currentSimulator(this->getModelSetSimulator());

View File

@@ -50,16 +50,16 @@ namespace BlackGui
public CDbMappingComponentAware, public CDbMappingComponentAware,
public BlackMisc::Simulation::IModelsSetable, public BlackMisc::Simulation::IModelsSetable,
public BlackMisc::Simulation::IModelsUpdatable, public BlackMisc::Simulation::IModelsUpdatable,
public BlackMisc::Simulation::IModelsPerSimulatorSetable, public BlackMisc::Simulation::IModelsForSimulatorSetable,
public BlackMisc::Simulation::IModelsPerSimulatorUpdatable, public BlackMisc::Simulation::IModelsForSimulatorUpdatable,
public BlackMisc::Simulation::ISimulatorSelectable public BlackMisc::Simulation::ISimulatorSelectable
{ {
Q_OBJECT Q_OBJECT
Q_INTERFACES(BlackGui::Components::CDbMappingComponentAware) Q_INTERFACES(BlackGui::Components::CDbMappingComponentAware)
Q_INTERFACES(BlackMisc::Simulation::IModelsSetable) Q_INTERFACES(BlackMisc::Simulation::IModelsSetable)
Q_INTERFACES(BlackMisc::Simulation::IModelsUpdatable) Q_INTERFACES(BlackMisc::Simulation::IModelsUpdatable)
Q_INTERFACES(BlackMisc::Simulation::IModelsPerSimulatorSetable) Q_INTERFACES(BlackMisc::Simulation::IModelsForSimulatorSetable)
Q_INTERFACES(BlackMisc::Simulation::IModelsPerSimulatorUpdatable) Q_INTERFACES(BlackMisc::Simulation::IModelsForSimulatorUpdatable)
Q_INTERFACES(BlackMisc::Simulation::ISimulatorSelectable) Q_INTERFACES(BlackMisc::Simulation::ISimulatorSelectable)
public: public:
@@ -104,9 +104,9 @@ namespace BlackGui
//! \name Implementations of the models interfaces //! \name Implementations of the models interfaces
//! @{ //! @{
virtual void setModels(const BlackMisc::Simulation::CAircraftModelList &models) override { this->setModelSet(models, this->getModelSetSimulator()); } virtual void setModels(const BlackMisc::Simulation::CAircraftModelList &models) override { this->setModelSet(models, this->getModelSetSimulator()); }
virtual void updateModels(const BlackMisc::Simulation::CAircraftModelList &models) override { this->replaceOrAddModelSet(models, this->getModelSetSimulator()); } virtual void setModelsForSimulator(const BlackMisc::Simulation::CAircraftModelList &models, const BlackMisc::Simulation::CSimulatorInfo &simulator) override { this->setModelSet(models, simulator); }
virtual void setModels(const BlackMisc::Simulation::CAircraftModelList &models, const BlackMisc::Simulation::CSimulatorInfo &simulator) override { this->setModelSet(models, simulator); } virtual int updateModels(const BlackMisc::Simulation::CAircraftModelList &models) override { return this->replaceOrAddModelSet(models, this->getModelSetSimulator()); }
virtual void updateModels(const BlackMisc::Simulation::CAircraftModelList &models, const BlackMisc::Simulation::CSimulatorInfo &simulator) override { this->replaceOrAddModelSet(models, simulator); } virtual int updateModelsForSimulator(const BlackMisc::Simulation::CAircraftModelList &models, const BlackMisc::Simulation::CSimulatorInfo &simulator) override { return this->replaceOrAddModelSet(models, simulator); }
virtual BlackMisc::Simulation::CSimulatorInfo getSelectedSimulator() const override { return this->getModelSetSimulator(); } virtual BlackMisc::Simulation::CSimulatorInfo getSelectedSimulator() const override { return this->getModelSetSimulator(); }
//! @} //! @}
@@ -117,7 +117,7 @@ namespace BlackGui
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 for a given simulator //! Replace or add models provided for a given simulator
void replaceOrAddModelSet(const BlackMisc::Simulation::CAircraftModelList &models, const BlackMisc::Simulation::CSimulatorInfo &simulator); int replaceOrAddModelSet(const BlackMisc::Simulation::CAircraftModelList &models, const BlackMisc::Simulation::CSimulatorInfo &simulator);
private: private:
//! Tab has been changed //! Tab has been changed

View File

@@ -164,11 +164,14 @@
<item> <item>
<widget class="QCheckBox" name="cb_SelectedOnly"> <widget class="QCheckBox" name="cb_SelectedOnly">
<property name="toolTip"> <property name="toolTip">
<string>selected models only</string> <string>publish selected models only</string>
</property> </property>
<property name="text"> <property name="text">
<string>selected</string> <string>selected</string>
</property> </property>
<property name="checked">
<bool>true</bool>
</property>
</widget> </widget>
</item> </item>
<item> <item>

View File

@@ -88,8 +88,8 @@ namespace BlackGui
// we us the loader of the components directly, // we us the loader of the components directly,
// avoid to fully init a loader logic here // avoid to fully init a loader logic here
static const QString modelsNo("No models so far"); static const QString modelsNo("No models so far");
const int modelsCount = this->modelLoader()->getAircraftModelsCount(); const int modelsCount = this->modelLoader()->getCachedModelsCount(simulator);
ui->le_ModelsInfo->setText(modelsCount > 0 ? this->modelLoader()->getModelCacheCountAndTimestamp() : modelsNo); ui->le_ModelsInfo->setText(modelsCount > 0 ? this->modelLoader()->getCacheCountAndTimestamp(simulator) : modelsNo);
ui->pb_CreateModelSet->setEnabled(modelsCount > 0); ui->pb_CreateModelSet->setEnabled(modelsCount > 0);
static const QString modelsSetNo("Model set is empty"); static const QString modelsSetNo("Model set is empty");
@@ -214,7 +214,8 @@ namespace BlackGui
void CFirstModelSetComponent::createModelSet() void CFirstModelSetComponent::createModelSet()
{ {
const int modelsCount = this->modelLoader()->getAircraftModelsCount(); const CSimulatorInfo sim = ui->comp_SimulatorSelector->getValue();
const int modelsCount = this->modelLoader()->getCachedModelsCount(sim);
if (modelsCount < 1) if (modelsCount < 1)
{ {
static const CStatusMessage msg = CStatusMessage(this).validationError("No models indexed so far. Try 'reload'!"); static const CStatusMessage msg = CStatusMessage(this).validationError("No models indexed so far. Try 'reload'!");
@@ -237,14 +238,13 @@ namespace BlackGui
return; return;
} }
} }
CAircraftModelList modelsForSet = this->modelLoader()->getAircraftModels(); CAircraftModelList modelsForSet = this->modelLoader()->getCachedModels(sim);
if (!useAllModels) if (!useAllModels)
{ {
const CDistributorList distributors = ui->comp_Distributors->getSelectedDistributors(); const CDistributorList distributors = ui->comp_Distributors->getSelectedDistributors();
modelsForSet = modelsForSet.findByDistributors(distributors); modelsForSet = modelsForSet.findByDistributors(distributors);
} }
const CSimulatorInfo sim = ui->comp_SimulatorSelector->getValue();
m_modelSetDialog->modelSetComponent()->setModelSet(modelsForSet, sim); m_modelSetDialog->modelSetComponent()->setModelSet(modelsForSet, sim);
ui->pb_ModelSet->click(); ui->pb_ModelSet->click();
} }