6 #ifndef SWIFT_MISC_SIMULATION_IAIRCRAFTMODELLOADER_H
7 #define SWIFT_MISC_SIMULATION_IAIRCRAFTMODELLOADER_H
18 #include <QStringList>
28 namespace swift::misc::simulation
48 static const QStringList &getLogCategories();
54 LoadDirectly = 1 << 0,
55 LoadInBackground = 1 << 1,
57 CacheSkipped = 1 << 3,
59 InBackgroundWithCache = LoadInBackground | CacheFirst,
60 InBackgroundNoCache = LoadInBackground | CacheSkipped
62 Q_DECLARE_FLAGS(LoadMode, LoadModeFlag)
77 static const QString &enumToString(LoadFinishedInfo info);
80 static const QString &enumToString(LoadModeFlag modeFlag);
83 static QString enumToString(LoadMode mode);
86 static bool needsCacheSynchronized(LoadMode mode);
100 void startLoading(LoadMode mode = InBackgroundWithCache,
102 const QStringList &modelDirectories = {});
112 QString getFirstModelDirectoryOrDefault()
const;
153 const QStringList &modelDirectories) = 0;
156 QStringList getInitializedModelDirectories(
const QStringList &modelDirectories,
160 bool hasCachedData()
const;
163 std::atomic<bool> m_loadingInProgress {
false };
164 std::atomic<bool> m_cancelLoading {
false };
165 std::atomic<bool> m_skipLoadingEmptyModelDir {
177 LoadFinishedInfo info);
195 virtual bool isLoadingFinished()
const override;
200 const QStringList &modelDirectories)
override;
203 qint64 m_loadingStartedTs = -1;
207 Q_DECLARE_METATYPE(swift::misc::simulation::IAircraftModelLoader::LoadMode)
210 Q_DECLARE_OPERATORS_FOR_FLAGS(swift::misc::simulation::IAircraftModelLoader::LoadMode)
Status messages, e.g. from Core -> GUI.
Value object encapsulating a list of aircraft models.
Dummy loader for testing.
Simple hardcoded info about the corresponding simulator.
Load the aircraft for a simulator.
void loadingProgress(const CSimulatorInfo &simulator, const QString &message, int progressPercentage)
Loading progress, normally from disk.
std::function< int(swift::misc::simulation::CAircraftModelList &, bool)> ModelConsolidationCallback
Callback to consolidate data, normally with DB data.
const CSimulatorInfo & getSimulator() const
Simulator.
void cacheChanged(const CSimulatorInfo &simulator)
Relayed from centralized caches.
void loadingFinished(const CStatusMessageList &status, const CSimulatorInfo &simulator, IAircraftModelLoader::LoadFinishedInfo info)
Parsing is finished or cache has been loaded.
const CSimulatorInfo m_simulator
related simulator
bool supportsSimulator(const CSimulatorInfo &simulator) const
Supported simulator.
void diskLoadingStarted(const CSimulatorInfo &simulator, IAircraftModelLoader::LoadMode loadMode)
Disk loading started.
QStringList getModelExcludeDirectoryPatterns() const
Exclude directories.
bool isLoadingInProgress() const
Loading in progress.
virtual bool isLoadingFinished() const =0
Loading finished?
virtual void startLoadingFromDisk(LoadMode mode, const ModelConsolidationCallback &modelConsolidation, const QStringList &modelDirectories)=0
Start the loading process from disk.
static bool isLoadedInfo(LoadFinishedInfo info)
Loaded info.
LoadFinishedInfo
Load mode.
@ CacheLoaded
cache was loaded
@ LoadingSkipped
loading skipped (empty directory)
CStatusMessageList m_loadingMessages
loading messages
QStringList getModelDirectoriesOrDefault() const
Model directories.
Interface to "something" backing models, which can be set.
Interface to "something" backing models, which can be modified (updated)
Interface to "something" backing models, which can be set.
Interface to "something" backing models, which can be modified (updated)
Basically a QObject free (delegate based) version of CCentralMultiSimulatorModelCachesProvider.
Bundle of settings for all simulators.
#define SWIFT_MISC_EXPORT
Export a class or function from the library.