mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-04-05 01:05:34 +08:00
refs #676, allow 1..n model directories
* adjusted loaders * changed settings
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user