Ref T689 Add validation that XP model directories are within the XP sim directory.

This commit is contained in:
Mat Sutcliffe
2019-06-23 17:10:34 +01:00
parent 668a77d083
commit 73d3a341da
4 changed files with 39 additions and 1 deletions

View File

@@ -20,6 +20,7 @@
#include "blackmisc/statusmessage.h"
#include "blackmisc/propertyindex.h"
#include "blackmisc/blackmiscexport.h"
#include "blackmisc/directoryutils.h"
#include <QStringList>
#include <QObject>
@@ -386,6 +387,22 @@ namespace BlackMisc
//! \copydoc BlackMisc::TSettingTrait::humanReadable
static const QString &humanReadable() { static const QString name("XPlane settings"); return name; }
//! \copydoc BlackMisc::TSettingTrait::isValid
static bool isValid(const CSimulatorSettings &value, QString &reason)
{
const QString simDir = value.hasSimulatorDirectory() ? value.getSimulatorDirectory()
: CSpecializedSimulatorSettings::defaultSimulatorDirectory(CSimulatorInfo::XPLANE);
for (const QString &modelDir : value.getModelDirectories())
{
if (!CDirectoryUtils::isSubDirectoryOf(modelDir, simDir))
{
reason = QStringLiteral("Model directory must be within the simulator directory structure");
return false;
}
}
return true;
}
};
//! Trait for simulator settings