6 #include <qsystemdetection.h>
12 #include <QTextStream>
24 namespace swift::misc::simulation::xplane
36 if (!fileInfo.exists()) {
return {}; }
37 QFile file(fileInfo.absoluteFilePath());
44 QString pathToCheck = ts.readLine();
51 QString getWindowsLocalAppDataPath()
54 TCHAR szLocalAppDataPath[MAX_PATH];
55 if (SUCCEEDED(SHGetFolderPath(NULL, CSIDL_LOCAL_APPDATA, NULL, 0, szLocalAppDataPath)))
65 static const QString xplaneInstallFile(
"x-plane_install.txt");
66 const QString xplaneInstallFilePath = xplaneDir(xplaneInstallFile);
67 return getLastExistingPathFromFile(xplaneInstallFilePath);
72 static const QString xplaneInstallFile(
"x-plane_install_10.txt");
73 const QString xplaneInstallFilePath = xplaneDir(xplaneInstallFile);
74 return getLastExistingPathFromFile(xplaneInstallFilePath);
79 static const QString xplaneInstallFile(
"x-plane_install_11.txt");
80 const QString xplaneInstallFilePath = xplaneDir(xplaneInstallFile);
81 return getLastExistingPathFromFile(xplaneInstallFilePath);
90 #elif defined(Q_OS_LINUX)
91 static const QString xp(
".x-plane");
93 #elif defined(Q_OS_OSX)
94 static const QString lib(
"Library/Preferences");
101 static const QString dir = [] {
136 static const QString p(
"Resources/plugins");
142 static const QString p(
"xswiftbus");
156 const QDir dir(dirName);
186 static const QString legacyPath(
"/Resources/plugins/xswiftbus/LegacyData");
202 return (!xswiftBusPluginDir.
isEmpty());
209 for (
const QString &file : files)
229 const QDir directory(dirName);
235 for (
const QString &dir : dirs)
239 if (subDirFiles.
isEmpty()) {
continue; }
249 if (xswiftBusPluginDir.
isEmpty()) {
return false; }
266 if (xswiftBusPluginDir.
isEmpty()) {
return -1; }
269 xswiftBusPluginDir,
true);
283 u
"no simulator directory",
true);
287 if (modelDirectories.
isEmpty()) {
return msgs; }
288 const QDir sd(simDir);
289 const bool simDirExists = sd.
exists();
290 for (
const QString &modelDir : modelDirectories)
292 const bool exists = simDirExists ?
static bool isSameOrSubDirectoryOf(const QString &testDir, const QString &parentDir)
Is "testDir" a subdirectory (possibly nested) of "parentDir" or the same directory.
static bool isSameOrSubDirectoryOfStringBased(const QString &testDir, const QString &parentDir)
Is "testDir" a subdirectory (possibly nested) of "parentDir" or the same directory.
static int copyDirectoryRecursively(const QString &fromDir, const QString &toDir, bool replaceOnConflict)
Copy directory recursively.
static bool isDirExisting(const QString &path)
Directory existing? Also checking UNC paths upfront.
static QFileInfo findLastModified(const QDir &dir, bool recursive, const QStringList &nameFilters={}, const QStringList &excludeDirectories={})
Returns path to the last modifed file in dir, optionally matching a wildcard, or empty string.
static QString appendFilePathsAndFixUnc(const QString &path1, const QString &path2)
Append file paths.
static QString appendFilePaths(const QString &path1, const QString &path2)
Append file paths.
static QString fixWindowsUncPath(const QString &filePath)
UNC file paths on Qt start with "/", but UNC file paths only work when they start with "//".
static const QString & matching()
Matching.
Derived & error(const char16_t(&format)[N])
Set the severity to error, providing a format string.
Derived & info(const char16_t(&format)[N])
Set the severity to info, providing a format string.
void push_back(const T &value)
Appends an element at the end of the sequence.
Streamable status message, e.g.
constexpr static auto SeverityWarning
Status severities.
Status messages, e.g. from Core -> GUI.
void addValidationCategory()
Validation category.
static const QString & getXSwiftBusBuildDirectory()
The build directory.
static bool hasXSwiftBusBuildAndPluginDir(const QString &xplaneRootDir)
Both directories, plugin and.
static CStatusMessageList validateModelDirectories(const QString &simDir, const QStringList &modelDirectories)
Validate the model directories.
static const QStringList & xplaneModelExcludeDirectoryPatterns()
Exclude directories for models.
static bool isXplaneRootDirExisting()
Is the xplaneRootDir existing?
static QStringList modelDirectoriesFromSimDir(const QString &simulatorDir)
Model directories from simultaor directory.
static const QStringList & getLogCategories()
Log categories.
static QStringList findAllXplFiles(const QString &pluginDir={})
static QStringList findConflictingPlugins(const QString &pluginDir={})
Finds conflicting plugins.
static const QString & xplaneRootDir()
XPlane root directory In case more then one XPlane version is found, the path to the highest version ...
static QString xswiftbusPluginDir(const QString &xplaneRootDir=CXPlaneUtil::xplaneRootDir())
xswiftbus plugin directory
static bool isXplanePluginDirDirExisting()
Is the xplanePluginDir existing?
static const QString & xswiftbusPathName()
xswiftbus path name
static const QStringList & xplaneModelDirectories()
Directories with models.
static bool hasNewerXSwiftBusBuild(const QString &xplaneRootDir=CXPlaneUtil::xplaneRootDir())
Newer xswiftbus build.
static QString xplane11Dir()
XPlane 11 directory.
static QString xswiftbusLegacyDir(const QString &xplaneRootDir=CXPlaneUtil::xplaneRootDir())
xswiftbus legacy directory
static QString xplane10Dir()
XPlane 10 directory.
static QString xplane9Dir()
XPlane 9 directory.
static int copyXSwiftBusBuildFiles(const QString &xplaneRootDir=CXPlaneUtil::xplaneRootDir())
Copy a xswiftbus build.
static const QString & xplanePluginPathName()
XPlane relative plugin path.
static QString pluginDirFromRootDir(const QString &rootDir=CXPlaneUtil::xplaneRootDir())
Plugin directory from given simulator directory.
static const QString & xplanePluginDir()
XPlane plugin directory In case more then one XPlane version is found, the path to the highest versio...
static QStringList pluginSubdirectories(const QString &pluginDir={})
All sub directories of the plugin directory.
static const QStringList & xplFileFilter()
Filter filter for xpl files.
Free functions in swift::misc.
bool isValid() const const
QString absolutePath() const const
QStringList entryList(QDir::Filters filters, QDir::SortFlags sort) const const
bool exists() const const
bool exists() const const
QDateTime lastModified() const const
bool isEmpty() const const
void push_back(QList< T >::parameter_type value)
QString fromWCharArray(const wchar_t *string, qsizetype size)
bool isEmpty() const const