mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-04-05 17:35:34 +08:00
Ref T660, utility functions
* check if model is in path * addAsValidOrInvalidModel * set corresponding simulator for validation * display validation of empty model set
This commit is contained in:
committed by
Mat Sutcliffe
parent
d59e1c3332
commit
f3ec7a8a68
@@ -70,7 +70,7 @@ namespace BlackGui
|
||||
ui->tvp_OwnModelSet->menuAddItems(CAircraftModelView::MenuLoadAndSave | CAircraftModelView::MenuRefresh | CAircraftModelView::MenuOrderable);
|
||||
ui->tvp_OwnModelSet->setSorting(CAircraftModel::IndexOrderString);
|
||||
ui->tvp_OwnModelSet->initAsOrderable();
|
||||
ui->tvp_OwnModelSet->setSimulatorForLoading(ui->comp_SimulatorSelector->getValue());
|
||||
ui->tvp_OwnModelSet->setCorrespondingSimulator(ui->comp_SimulatorSelector->getValue());
|
||||
ui->comp_SimulatorSelector->setMode(CSimulatorSelector::RadioButtons);
|
||||
ui->comp_SimulatorSelector->setRememberSelectionAndSetToLastSelection();
|
||||
const CSimulatorInfo simulator = ui->comp_SimulatorSelector->getValue();
|
||||
@@ -428,7 +428,7 @@ namespace BlackGui
|
||||
|
||||
m_simulator = simulator;
|
||||
ui->comp_SimulatorSelector->setValue(simulator);
|
||||
ui->tvp_OwnModelSet->setSimulatorForLoading(simulator);
|
||||
ui->tvp_OwnModelSet->setCorrespondingSimulator(simulator);
|
||||
ui->le_Simulator->setText(simulator.toQString(true));
|
||||
this->synchronizeCache(simulator);
|
||||
this->updateViewToCurrentModels();
|
||||
|
||||
@@ -36,6 +36,12 @@ namespace BlackGui
|
||||
CAircraftModelValidationDialog::~CAircraftModelValidationDialog()
|
||||
{ }
|
||||
|
||||
void CAircraftModelValidationDialog::setModels(const CAircraftModelList &models, const CSimulatorInfo &simulator)
|
||||
{
|
||||
m_models = models;
|
||||
m_simulator = simulator;
|
||||
}
|
||||
|
||||
void CAircraftModelValidationDialog::triggerValidation(int delayMs)
|
||||
{
|
||||
QPointer<CAircraftModelValidationDialog> myself(this);
|
||||
@@ -57,7 +63,7 @@ namespace BlackGui
|
||||
const bool ignoreEmpty = false;
|
||||
const int maxFailedFiles = 25;
|
||||
bool wasStopped = false;
|
||||
const CStatusMessageList msgs = CAircraftModelUtilities::validateModelFiles(m_models, valid, invalid, ignoreEmpty, maxFailedFiles, wasStopped, "");
|
||||
const CStatusMessageList msgs = CAircraftModelUtilities::validateModelFiles(m_simulator, m_models, valid, invalid, ignoreEmpty, maxFailedFiles, wasStopped, "");
|
||||
ui->comp_StatusMessage->clear();
|
||||
ui->comp_StatusMessage->setNoSorting(); // we use the pre-sorted list
|
||||
ui->comp_StatusMessage->appendStatusMessagesToList(msgs);
|
||||
|
||||
@@ -33,10 +33,12 @@ namespace BlackGui
|
||||
explicit CAircraftModelValidationDialog(QWidget *parent = nullptr);
|
||||
|
||||
//! Destructor
|
||||
virtual ~CAircraftModelValidationDialog();
|
||||
virtual ~CAircraftModelValidationDialog() override;
|
||||
|
||||
//! Models
|
||||
void setModels(const BlackMisc::Simulation::CAircraftModelList &models) { m_models = models; }
|
||||
void setModels(
|
||||
const BlackMisc::Simulation::CAircraftModelList &models,
|
||||
const BlackMisc::Simulation::CSimulatorInfo &simulator);
|
||||
|
||||
//! Trigger a validation
|
||||
void triggerValidation(int delayMs = 2500);
|
||||
@@ -47,6 +49,7 @@ namespace BlackGui
|
||||
|
||||
QScopedPointer<Ui::CAircraftModelValidationDialog> ui;
|
||||
BlackMisc::Simulation::CAircraftModelList m_models;
|
||||
BlackMisc::Simulation::CSimulatorInfo m_simulator { BlackMisc::Simulation::CSimulatorInfo::None };
|
||||
};
|
||||
} // ns
|
||||
} // ns
|
||||
|
||||
@@ -322,7 +322,7 @@ namespace BlackGui
|
||||
QDialog *parentDialog = CGuiUtility::findParentDialog(this);
|
||||
if (!(parentDialog && (qobject_cast<CAircraftModelValidationDialog *>(parentDialog))))
|
||||
{
|
||||
menuActions.addAction(CIcons::disk16(), "Model validation", CMenuAction::pathModel(), { this, &CAircraftModelView::displayModelValidationDialog });
|
||||
menuActions.addAction(CIcons::disk16(), "Model validation (selected)", CMenuAction::pathModel(), { this, &CAircraftModelView::displayModelValidationDialog });
|
||||
}
|
||||
}
|
||||
if (CAircraftModelList::hasInvalidModelFile())
|
||||
@@ -389,22 +389,22 @@ namespace BlackGui
|
||||
|
||||
CStatusMessage CAircraftModelView::modifyLoadedJsonData(CAircraftModelList &models) const
|
||||
{
|
||||
if (m_loadingRequiresSimulator.isNoSimulator()) { return {}; }
|
||||
if (m_correspondingSimulator.isNoSimulator()) { return {}; }
|
||||
if (models.isEmpty()) { return CStatusMessage(this, CStatusMessage::SeverityDebug, u"Empty models", true); }
|
||||
|
||||
// multiple sims with same count
|
||||
const int removed = models.removeIfNotMatchingSimulator(m_loadingRequiresSimulator);
|
||||
const int removed = models.removeIfNotMatchingSimulator(m_correspondingSimulator);
|
||||
if (removed < 1) { return {}; }
|
||||
return CStatusMessage(this, CStatusMessage::SeverityWarning, u"Reduced by %1 model(s) to only use %2 models", true) << removed << m_loadingRequiresSimulator.toQString(true);
|
||||
return CStatusMessage(this, CStatusMessage::SeverityWarning, u"Reduced by %1 model(s) to only use %2 models", true) << removed << m_correspondingSimulator.toQString(true);
|
||||
}
|
||||
|
||||
CStatusMessage CAircraftModelView::validateLoadedJsonData(const CAircraftModelList &models) const
|
||||
{
|
||||
if (models.isEmpty()) { return COrderableViewWithDbObjects::validateLoadedJsonData(models); }
|
||||
if (m_loadingRequiresSimulator.isNoSimulator()) { return COrderableViewWithDbObjects::validateLoadedJsonData(models); }
|
||||
if (models.containsNotMatchingSimulator(m_loadingRequiresSimulator))
|
||||
if (m_correspondingSimulator.isNoSimulator()) { return COrderableViewWithDbObjects::validateLoadedJsonData(models); }
|
||||
if (models.containsNotMatchingSimulator(m_correspondingSimulator))
|
||||
{
|
||||
return CStatusMessage(this, CStatusMessage::SeverityError, u"Found entry not matching %1 in model data", true) << m_loadingRequiresSimulator.toQString();
|
||||
return CStatusMessage(this, CStatusMessage::SeverityError, u"Found entry not matching %1 in model data", true) << m_correspondingSimulator.toQString();
|
||||
}
|
||||
return COrderableViewWithDbObjects::validateLoadedJsonData(models);
|
||||
}
|
||||
@@ -473,7 +473,7 @@ namespace BlackGui
|
||||
void CAircraftModelView::displayModelValidationDialog()
|
||||
{
|
||||
if (!m_fileValidationDialog) { m_fileValidationDialog = new CAircraftModelValidationDialog(this); }
|
||||
m_fileValidationDialog->setModels(this->selectedObjects());
|
||||
m_fileValidationDialog->setModels(this->selectedObjects(), m_correspondingSimulator);
|
||||
m_fileValidationDialog->triggerValidation(1000);
|
||||
m_fileValidationDialog->exec();
|
||||
}
|
||||
|
||||
@@ -112,8 +112,9 @@ namespace BlackGui
|
||||
//! \copydoc BlackGui::Models::CAircraftModelListModel::highlightModels
|
||||
bool highlightModels() const;
|
||||
|
||||
//! Loading data will be restricted to simulator
|
||||
void setSimulatorForLoading(const BlackMisc::Simulation::CSimulatorInfo &simulator) { m_loadingRequiresSimulator = simulator; }
|
||||
//! Corresponding simulator
|
||||
//! \remark used for validation or loading data will be restricted to simulator
|
||||
void setCorrespondingSimulator(const BlackMisc::Simulation::CSimulatorInfo &simulator) { m_correspondingSimulator = simulator; }
|
||||
|
||||
//! Enable the validation context menu
|
||||
void setValidationContextMenu(const bool enabled) { m_withValidationContextMenu = enabled; }
|
||||
@@ -171,9 +172,9 @@ namespace BlackGui
|
||||
|
||||
bool m_stashingClearsSelection = true; //!< stashing unselects
|
||||
bool m_withValidationContextMenu = true; //!< validation didalog context menu
|
||||
CAircraftModelStatisticsDialog *m_statisticsDialog = nullptr;
|
||||
CAircraftModelStatisticsDialog *m_statisticsDialog = nullptr;
|
||||
CAircraftModelValidationDialog *m_fileValidationDialog = nullptr;
|
||||
BlackMisc::Simulation::CSimulatorInfo m_loadingRequiresSimulator; //!< simulator required when loading
|
||||
BlackMisc::Simulation::CSimulatorInfo m_correspondingSimulator; //!< validation, simulator required when loading
|
||||
};
|
||||
} // ns
|
||||
} // ns
|
||||
|
||||
Reference in New Issue
Block a user