refs #676, allow 1..n model directories

* adjusted loaders
* changed settings
This commit is contained in:
Klaus Basan
2016-06-18 00:27:15 +02:00
parent 8b39e6f9c3
commit 554d1add79
9 changed files with 87 additions and 66 deletions

View File

@@ -36,14 +36,19 @@ namespace BlackMisc
return this->m_simulatorDirectory;
}
void CSettingsSimulator::setModelDirectory(const QString &modelDirectory)
void CSettingsSimulator::setModelDirectories(const QStringList &modelDirectories)
{
this->m_modelDirectory = modelDirectory.trimmed();
this->m_modelDirectories = modelDirectories;
}
const QString &CSettingsSimulator::getModelDirectory() const
void CSettingsSimulator::setModelDirectory(const QString &modelDirectory)
{
return this->m_modelDirectory;
this->m_modelDirectories = QStringList({ modelDirectory });
}
const QStringList &CSettingsSimulator::getModelDirectories() const
{
return this->m_modelDirectories;
}
void CSettingsSimulator::setModelExcludeDirectories(const QStringList &excludeDirectories)
@@ -56,16 +61,10 @@ namespace BlackMisc
return m_excludeDirectoryPatterns;
}
QStringList CSettingsSimulator::getRelativeModelExcludeDirectoryPatterns(const QString &modelDirectory) const
{
const QStringList excludes(this->getModelExcludeDirectoryPatterns());
return CFileUtils::makeDirectoriesRelative(excludes, modelDirectory);
}
void CSettingsSimulator::resetPaths()
{
this->m_excludeDirectoryPatterns.clear();
this->m_modelDirectory.clear();
this->m_modelDirectories.clear();
this->m_simulatorDirectory.clear();
}
@@ -77,8 +76,8 @@ namespace BlackMisc
QString CSettingsSimulator::convertToQString(const QString &separator, bool i18n) const
{
Q_UNUSED(i18n);
QString s("model directory: ");
s.append(this->m_modelDirectory);
QString s("model directories: ");
s.append(this->m_modelDirectories.join(','));
s.append(separator);
s.append("exclude directories: ");
s.append(this->m_excludeDirectoryPatterns.join(','));
@@ -94,7 +93,7 @@ namespace BlackMisc
case IndexSimulatorDirectory:
return CVariant::fromValue(this->m_simulatorDirectory);
case IndexModelDirectory:
return CVariant::fromValue(this->m_modelDirectory);
return CVariant::fromValue(this->m_modelDirectories);
case IndexModelExcludeDirectoryPatterns:
return CVariant::fromValue(this->m_excludeDirectoryPatterns);
default:
@@ -219,41 +218,47 @@ namespace BlackMisc
return "";
}
QString CMultiSimulatorSimulatorSettings::getModelDirectoryOrDefault(const CSimulatorInfo &simulator) const
QStringList CMultiSimulatorSimulatorSettings::getModelDirectoriesOrDefault(const CSimulatorInfo &simulator) const
{
const CSettingsSimulator s = this->getSettings(simulator);
if (s.getModelDirectory().isEmpty())
if (s.getModelDirectories().isEmpty())
{
return this->getDefaultModelDirectory(simulator);
return this->getDefaultModelDirectories(simulator);
}
return s.getModelDirectory();
return s.getModelDirectories();
}
QString CMultiSimulatorSimulatorSettings::getDefaultModelDirectory(const CSimulatorInfo &simulator) const
QString CMultiSimulatorSimulatorSettings::getFirstModelDirectoryOrDefault(const CSimulatorInfo &simulator) const
{
const QStringList models(getModelDirectoriesOrDefault(simulator));
if (models.isEmpty()) { return ""; }
return models.first();
}
QStringList CMultiSimulatorSimulatorSettings::getDefaultModelDirectories(const CSimulatorInfo &simulator) const
{
static const QStringList e;
Q_ASSERT_X(simulator.isSingleSimulator(), Q_FUNC_INFO, "No single simulator");
switch (simulator.getSimulator())
{
case CSimulatorInfo::FS9: return CFsCommonUtil::fs9AircraftDir();
case CSimulatorInfo::FSX: return CFsCommonUtil::fsxSimObjectsDir();
case CSimulatorInfo::P3D: return CFsCommonUtil::p3dSimObjectsDir();
case CSimulatorInfo::XPLANE: return CXPlaneUtil::xplaneModelDirectory();
case CSimulatorInfo::FS9: return CFsCommonUtil::fs9AircraftDir().isEmpty() ? e : QStringList({ CFsCommonUtil::fs9AircraftDir() });
case CSimulatorInfo::FSX: return CFsCommonUtil::fsxSimObjectsDir().isEmpty() ? e : QStringList({ CFsCommonUtil::fsxSimObjectsDir() });
case CSimulatorInfo::P3D: return CFsCommonUtil::p3dSimObjectsDir().isEmpty() ? e : QStringList({ CFsCommonUtil::p3dSimObjectsDir()});
case CSimulatorInfo::XPLANE: return CXPlaneUtil::xplaneModelDirectories();
default:
Q_ASSERT_X(simulator.isSingleSimulator(), Q_FUNC_INFO, "No single simulator");
break;
}
return "";
return QStringList();
}
QStringList CMultiSimulatorSimulatorSettings::getModelExcludeDirectoryPatternsOrDefault(const CSimulatorInfo &simulator, bool relative) const
QStringList CMultiSimulatorSimulatorSettings::getModelExcludeDirectoryPatternsOrDefault(const CSimulatorInfo &simulator) const
{
const CSettingsSimulator s = this->getSettings(simulator);
const QString md = getModelDirectoryOrDefault(simulator);
QStringList exclude = relative ? s.getRelativeModelExcludeDirectoryPatterns(md) : s.getModelExcludeDirectoryPatterns();
QStringList exclude(s.getModelExcludeDirectoryPatterns());
if (!exclude.isEmpty()) { return exclude; }
exclude = this->getDefaultModelExcludeDirectoryPatterns(simulator);
if (!relative || exclude.isEmpty()) { return exclude; }
return CFileUtils::makeDirectoriesRelative(exclude, md);
return exclude;
}
QStringList CMultiSimulatorSimulatorSettings::getDefaultModelExcludeDirectoryPatterns(const CSimulatorInfo &simulator) const

View File

@@ -52,11 +52,14 @@ namespace BlackMisc
//! Simulator directory
const QString &getSimulatorDirectory() const;
//! Set model directory
//! Set model directories
void setModelDirectories(const QStringList &modelDirectories);
//! Set single model directory
void setModelDirectory(const QString &modelDirectory);
//! Model directory
const QString &getModelDirectory() const;
const QStringList &getModelDirectories() const;
//! Set exclude directories
void setModelExcludeDirectories(const QStringList &excludeDirectories);
@@ -64,9 +67,6 @@ namespace BlackMisc
//! Margins for given dock widget
const QStringList &getModelExcludeDirectoryPatterns() const;
//! Relative exclude directory patterns
QStringList getRelativeModelExcludeDirectoryPatterns(const QString &modelDirectory) const;
//! Reset the paths
void resetPaths();
@@ -84,13 +84,13 @@ namespace BlackMisc
private:
QString m_simulatorDirectory; //! Simulator directory
QString m_modelDirectory; //!< Model directory
QStringList m_modelDirectories; //!< Model directory
QStringList m_excludeDirectoryPatterns; //!< Exclude model directory
BLACK_METACLASS(
CSettingsSimulator,
BLACK_METAMEMBER(simulatorDirectory),
BLACK_METAMEMBER(modelDirectory),
BLACK_METAMEMBER(modelDirectories),
BLACK_METAMEMBER(excludeDirectoryPatterns)
);
};
@@ -151,13 +151,16 @@ namespace BlackMisc
QString getDefaultSimulatorDirectory(const BlackMisc::Simulation::CSimulatorInfo &simulator) const;
//! Model directory or default model path per simulator
QString getModelDirectoryOrDefault(const BlackMisc::Simulation::CSimulatorInfo &simulator) const;
QStringList getModelDirectoriesOrDefault(const BlackMisc::Simulation::CSimulatorInfo &simulator) const;
//! First model directoy
QString getFirstModelDirectoryOrDefault(const BlackMisc::Simulation::CSimulatorInfo &simulator) const;
//! Default model path per simulator
QString getDefaultModelDirectory(const BlackMisc::Simulation::CSimulatorInfo &simulator) const;
QStringList getDefaultModelDirectories(const BlackMisc::Simulation::CSimulatorInfo &simulator) const;
//! Model exclude paths per simulator
QStringList getModelExcludeDirectoryPatternsOrDefault(const BlackMisc::Simulation::CSimulatorInfo &simulator, bool relative) const;
QStringList getModelExcludeDirectoryPatternsOrDefault(const BlackMisc::Simulation::CSimulatorInfo &simulator) const;
//! Default model exclude paths per simulator
QStringList getDefaultModelExcludeDirectoryPatterns(const BlackMisc::Simulation::CSimulatorInfo &simulator) const;