mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-04-02 15:15:50 +08:00
Ref T455, fixes for simulator settings
* trace unsaved changes * use stripped paths for exclude patterns * added missing "parseExcludeDirectories" which was the source of the reported 1st bug
This commit is contained in:
@@ -41,6 +41,16 @@ namespace BlackGui
|
||||
CLogMessage::preformatted(msg);
|
||||
}
|
||||
|
||||
bool CConfigSimulatorComponent::hasUnsavedChanges() const
|
||||
{
|
||||
return ui->comp_SettingsSimulator->hasUnsavedChanges();
|
||||
}
|
||||
|
||||
void CConfigSimulatorComponent::resetUnsavedChanges()
|
||||
{
|
||||
ui->comp_SettingsSimulator->resetUnsavedChanges();
|
||||
}
|
||||
|
||||
void CConfigSimulatorComponent::preselectSimulators()
|
||||
{
|
||||
CSimulatorInfo sims;
|
||||
@@ -88,6 +98,11 @@ namespace BlackGui
|
||||
return ids;
|
||||
}
|
||||
|
||||
void CConfigSimulatorWizardPage::initializePage()
|
||||
{
|
||||
m_config->resetUnsavedChanges();
|
||||
}
|
||||
|
||||
bool CConfigSimulatorWizardPage::validatePage()
|
||||
{
|
||||
Q_ASSERT_X(m_config, Q_FUNC_INFO, "Missing config");
|
||||
|
||||
@@ -40,6 +40,12 @@ namespace BlackGui
|
||||
//! Save data
|
||||
void save();
|
||||
|
||||
//! Has unsaved changes
|
||||
bool hasUnsavedChanges() const;
|
||||
|
||||
//! Reset the flag
|
||||
void resetUnsavedChanges();
|
||||
|
||||
private:
|
||||
//! Preselect simulators
|
||||
void preselectSimulators();
|
||||
@@ -64,6 +70,9 @@ namespace BlackGui
|
||||
//! Set config
|
||||
void setConfigComponent(CConfigSimulatorComponent *config) { m_config = config; }
|
||||
|
||||
//! \copydoc QWizardPage::initializePage
|
||||
virtual void initializePage() override;
|
||||
|
||||
//! \copydoc QWizardPage::validatePage
|
||||
virtual bool validatePage() override;
|
||||
|
||||
|
||||
@@ -101,6 +101,7 @@ namespace BlackGui
|
||||
const QString dir = QFileDialog::getExistingDirectory(this, tr("Model directory"), startDirectory,
|
||||
QFileDialog::ShowDirsOnly | QFileDialog::DontResolveSymlinks);
|
||||
if (dir.isEmpty()) { return; }
|
||||
m_unsavedChanges = true;
|
||||
const QStringList newDirs = this->addDirectory(dir, this->parseModelDirectories());
|
||||
this->displayModelDirectories(newDirs);
|
||||
}
|
||||
@@ -111,7 +112,10 @@ namespace BlackGui
|
||||
const QString dir = QFileDialog::getExistingDirectory(this, tr("Exclude directory"), startDirectory,
|
||||
QFileDialog::ShowDirsOnly | QFileDialog::DontResolveSymlinks);
|
||||
if (dir.isEmpty()) { return; }
|
||||
const QStringList newDirs = this->addDirectory(dir, this->parseModelDirectories());
|
||||
m_unsavedChanges = true;
|
||||
const QStringList newDirs = CFileUtils::stripLeadingSlashOrDriveLetters(
|
||||
this->addDirectory(dir, this->parseExcludeDirectories())
|
||||
);
|
||||
this->displayExcludeDirectoryPatterns(newDirs);
|
||||
}
|
||||
|
||||
@@ -137,6 +141,7 @@ namespace BlackGui
|
||||
s.setModelExcludeDirectories(relativeDirs);
|
||||
const CStatusMessage m = m_settings.setAndSaveSettings(s, simulator);
|
||||
if (!m.isEmpty()) { CLogMessage::preformatted(m); }
|
||||
m_unsavedChanges = m_unsavedChanges && !m.isSuccess(); // reset if success, but only if there were changes
|
||||
|
||||
// display as saved
|
||||
this->displaySettings(simulator);
|
||||
@@ -152,12 +157,16 @@ namespace BlackGui
|
||||
if (reply != QMessageBox::Yes) { return; }
|
||||
}
|
||||
|
||||
const QString sd(m_settings.defaultSimulatorDirectory(simulator));
|
||||
ui->le_SimulatorDirectory->setText(CFileUtils::normalizeFilePathToQtStandard(sd));
|
||||
// override if values are not empty
|
||||
const CSpecializedSimulatorSettings ss = m_settings.getSpecializedSettings(simulator);
|
||||
const QString sd = CFileUtils::fixWindowsUncPath(CFileUtils::normalizeFilePathToQtStandard(ss.defaultSimulatorDirectory(simulator)));
|
||||
if (!sd.isEmpty()) { ui->le_SimulatorDirectory->setText(sd); m_unsavedChanges = true; }
|
||||
|
||||
const QStringList md(m_settings.defaultModelDirectories(simulator));
|
||||
this->displayModelDirectories(md);
|
||||
const QStringList excludes(m_settings.defaultModelExcludeDirectoryPatterns(simulator));
|
||||
this->displayExcludeDirectoryPatterns(excludes);
|
||||
if (!md.isEmpty()) { this->displayModelDirectories(md); m_unsavedChanges = true; }
|
||||
|
||||
const QStringList excludes(ss.defaultModelExcludeDirectoryPatterns(simulator));
|
||||
if (!excludes.isEmpty()) { this->displayExcludeDirectoryPatterns(excludes); m_unsavedChanges = true; }
|
||||
}
|
||||
|
||||
void CSettingsSimulatorBasicsComponent::adjustModelDirectory()
|
||||
@@ -178,7 +187,10 @@ namespace BlackGui
|
||||
void CSettingsSimulatorBasicsComponent::reset()
|
||||
{
|
||||
const CSimulatorInfo simulator(ui->comp_SimulatorSelector->getValue());
|
||||
|
||||
m_settings.resetToDefaults(simulator);
|
||||
m_unsavedChanges = true;
|
||||
|
||||
ui->le_SimulatorDirectory->clear();
|
||||
ui->pte_ModelDirectories->clear();
|
||||
ui->pte_ExcludeDirectories->clear();
|
||||
@@ -208,6 +220,11 @@ namespace BlackGui
|
||||
return this->parseDirectories(ui->pte_ModelDirectories->toPlainText());
|
||||
}
|
||||
|
||||
QStringList CSettingsSimulatorBasicsComponent::parseExcludeDirectories() const
|
||||
{
|
||||
return this->parseDirectories(ui->pte_ExcludeDirectories->toPlainText());
|
||||
}
|
||||
|
||||
QStringList CSettingsSimulatorBasicsComponent::parseDirectories(const QString &rawString) const
|
||||
{
|
||||
const QString raw = rawString.trimmed();
|
||||
|
||||
@@ -55,10 +55,17 @@ namespace BlackGui
|
||||
//! Save data
|
||||
void save();
|
||||
|
||||
//! Has unsaved changes
|
||||
bool hasUnsavedChanges() const { return m_unsavedChanges; }
|
||||
|
||||
//! Reset unsaved changes
|
||||
void resetUnsavedChanges() { m_unsavedChanges = false; }
|
||||
|
||||
//! Settings for given simulator
|
||||
BlackMisc::Simulation::Settings::CSpecializedSimulatorSettings getSimulatorSettings(const BlackMisc::Simulation::CSimulatorInfo &simulator) const { return m_settings.getSpecializedSettings(simulator); }
|
||||
|
||||
private:
|
||||
bool m_unsavedChanges = false;
|
||||
QScopedPointer<Ui::CSettingsSimulatorBasicsComponent> ui;
|
||||
BlackMisc::Simulation::Settings::CMultiSimulatorSettings m_settings { this };
|
||||
Qt::CaseSensitivity m_fileCaseSensitivity = BlackMisc::CFileUtils::osFileNameCaseSensitivity();
|
||||
@@ -93,9 +100,12 @@ namespace BlackGui
|
||||
//! Optimize for small layout
|
||||
void setSmallLayout(bool small);
|
||||
|
||||
//! Exclude directories from line edit
|
||||
//! Model directories from line edit
|
||||
QStringList parseModelDirectories() const;
|
||||
|
||||
//! Exclude directories from line edit
|
||||
QStringList parseExcludeDirectories() const;
|
||||
|
||||
//! Exclude directories
|
||||
QStringList parseDirectories(const QString &rawString) const;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user