swift
aircraftcfgparser.h
Go to the documentation of this file.
1 // SPDX-FileCopyrightText: Copyright (C) 2013 swift Project Community / Contributors
2 // SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-swift-pilot-client-1
3 
5 
6 #ifndef SWIFT_MISC_SIMULATION_FSCOMMON_AIRCRAFTCFGPARSER_H
7 #define SWIFT_MISC_SIMULATION_FSCOMMON_AIRCRAFTCFGPARSER_H
8 
9 #include <QObject>
10 #include <QPointer>
11 #include <QString>
12 #include <QStringList>
13 #include <QVariant>
14 
19 #include "misc/swiftmiscexport.h"
20 
21 class QSettings;
22 
23 namespace swift::misc
24 {
25  class CWorker;
26  namespace simulation::fscommon
27  {
30  {
31  Q_OBJECT
32 
33  public:
35  CAircraftCfgParser(const CSimulatorInfo &simInfo, QObject *parent = nullptr);
36 
38  virtual ~CAircraftCfgParser() override;
39 
41  const CAircraftCfgEntriesList &getAircraftCfgEntriesList() const { return m_parsedCfgEntriesList; }
42 
45  virtual bool isLoadingFinished() const override;
47 
49  static CAircraftCfgEntriesList performParsingOfSingleFile(const QString &fileName, bool &ok,
50  CStatusMessageList &msgs);
51 
53  static CAircraftCfgParser *createModelLoader(const CSimulatorInfo &simInfo, QObject *parent = nullptr);
54 
55  protected:
58  virtual void startLoadingFromDisk(LoadMode mode, const ModelConsolidationCallback &modelConsolidation,
59  const QStringList &modelDirectories) override;
61 
62  private:
64  enum FileSection
65  {
66  General,
67  Fltsim,
68  Unknown
69  };
70 
73  CAircraftCfgEntriesList performParsing(const QStringList &directories,
74  const QStringList &excludeDirectories,
76 
79  CAircraftCfgEntriesList performParsing(const QString &directory, const QStringList &excludeDirectories,
81 
83  static QString fixedStringContent(const QVariant &qv);
84 
86  static QString fixedStringContent(const QSettings &settings, const QString &key);
87 
89  static QString getFixedIniLineContent(const QString &line);
90 
92  static const QStringList &fileNameFilters(bool isMSFS, bool isMSFS2024);
93 
95  static bool isExcludedSubDirectory(const QString &excludeDirectory);
96 
97  CAircraftCfgEntriesList m_parsedCfgEntriesList;
98  QPointer<swift::misc::CWorker> m_parserWorker;
99  };
100  } // namespace simulation::fscommon
101 } // namespace swift::misc
102 
103 #endif // SWIFT_MISC_SIMULATION_FSCOMMON_AIRCRAFTCFGPARSER_H
Status messages, e.g. from Core -> GUI.
Simple hardcoded info about the corresponding simulator.
Definition: simulatorinfo.h:41
Load the aircraft for a simulator.
Utility, parsing the aircraft.cfg files.
const CAircraftCfgEntriesList & getAircraftCfgEntriesList() const
Get parsed aircraft cfg entries list.
Free functions in swift::misc.
#define SWIFT_MISC_EXPORT
Export a class or function from the library.