swift
flightgearutil.cpp
1 // SPDX-FileCopyrightText: Copyright (C) 2019 swift Project Community / Contributors
2 // SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-swift-pilot-client-1
3 
5 
6 #include <QDir>
7 #include <QFile>
8 #include <QFileInfo>
9 #include <QIODevice>
10 #include <QSettings>
11 #include <QStandardPaths>
12 #include <QTextStream>
13 
14 #include "qsystemdetection.h"
15 
16 #include "config/buildconfig.h"
17 #include "misc/directoryutils.h"
18 #include "misc/fileutils.h"
19 
20 using namespace swift::config;
21 
22 namespace swift::misc::simulation::flightgear
23 {
24 
25  const QString &CFlightgearUtil::flightgearRootDir()
26  {
27  static QString flightgearRootDir;
29  {
30  QSettings flightgearRegistry(
31  "HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\FlightGear_is1",
32  QSettings::NativeFormat);
33  flightgearRootDir = flightgearRegistry.value("InstallLocation").toString().trimmed();
34  }
35  return flightgearRootDir;
36  }
37 
38  bool CFlightgearUtil::isFlightgearRootDirExisting()
39  {
40  static const bool exists = QDir(flightgearRootDir()).exists();
41  return exists;
42  }
43 
44  QStringList CFlightgearUtil::modelDirectoriesFromSimDir(const QString &simulatorDir)
45  {
46  QStringList dirs;
47  if (CBuildConfig::isRunningOnWindowsNtPlatform() && !simulatorDir.isEmpty())
48  {
49  QString terraSyncFolder =
50  QStandardPaths::writableLocation(QStandardPaths::DocumentsLocation) + "/Flightgear/Aircraft";
51  if (QDir(terraSyncFolder).exists()) { dirs.append(terraSyncFolder); }
52  QString fgdataAIFolder = simulatorDir + "data/AI/Aircraft";
53  if (QDir(fgdataAIFolder).exists()) { dirs.append(fgdataAIFolder); }
54  }
55  return dirs;
56  }
57 
58  const QStringList &CFlightgearUtil::flightgearModelDirectories()
59  {
60  static const QStringList dirs =
61  flightgearRootDir().isEmpty() ? QStringList() : modelDirectoriesFromSimDir(flightgearRootDir());
62  return dirs;
63  }
64 
65  const QStringList &CFlightgearUtil::flightgearModelExcludeDirectoryPatterns()
66  {
67  static const QStringList empty;
68  return empty;
69  }
70 } // namespace swift::misc::simulation::flightgear
static constexpr bool isRunningOnWindowsNtPlatform()
Running on Windows NT platform?