swift
Public Types | Signals | Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
swift::misc::simulation::IAircraftModelLoader Class Referenceabstract

Load the aircraft for a simulator. More...

Inheritance diagram for swift::misc::simulation::IAircraftModelLoader:
[legend]

Public Types

enum  LoadModeFlag {
  NotSet = 0 , LoadDirectly = 1 << 0 , LoadInBackground = 1 << 1 , CacheFirst = 1 << 2 ,
  CacheSkipped = 1 << 3 , CacheOnly = 1 << 4 , InBackgroundWithCache = LoadInBackground | CacheFirst , InBackgroundNoCache = LoadInBackground | CacheSkipped
}
 Parser mode. More...
 
enum  LoadFinishedInfo { CacheLoaded , ParsedData , LoadingSkipped , LoadingFailed }
 Load mode. More...
 
using ModelConsolidationCallback = std::function< int(swift::misc::simulation::CAircraftModelList &, bool)>
 Callback to consolidate data, normally with DB data. More...
 
- Public Types inherited from QObject
enum  TimerId
 

Signals

void diskLoadingStarted (const CSimulatorInfo &simulator, IAircraftModelLoader::LoadMode loadMode)
 Disk loading started. More...
 
void loadingFinished (const CStatusMessageList &status, const CSimulatorInfo &simulator, IAircraftModelLoader::LoadFinishedInfo info)
 Parsing is finished or cache has been loaded. More...
 
void loadingProgress (const CSimulatorInfo &simulator, const QString &message, int progressPercentage)
 Loading progress, normally from disk. More...
 
void cacheChanged (const CSimulatorInfo &simulator)
 Relayed from centralized caches. More...
 

Public Member Functions

virtual ~IAircraftModelLoader ()
 Destructor.
 
virtual bool isLoadingFinished () const =0
 Loading finished?
 
void startLoading (LoadMode mode=InBackgroundWithCache, const ModelConsolidationCallback &modelConsolidation={}, const QStringList &modelDirectories={})
 Start the loading process from disk. Optional DB models can be passed and used for data consolidation.
 
bool isLoadingInProgress () const
 Loading in progress. More...
 
QStringList getModelDirectoriesOrDefault () const
 Model directories.
 
QString getFirstModelDirectoryOrDefault () const
 First directory, can be used when only 1 directory is expected.
 
QStringList getModelExcludeDirectoryPatterns () const
 Exclude directories.
 
const CSimulatorInfogetSimulator () const
 Simulator.
 
bool supportsSimulator (const CSimulatorInfo &simulator) const
 Supported simulator.
 
virtual void setModels (const CAircraftModelList &models)
 Set models.
 
virtual int updateModels (const CAircraftModelList &models)
 Update models.
 
- Public Member Functions inherited from QObject
QBindable< QStringbindableObjectName ()
 
 QObject (QObject *parent)
 
 QT_NO_CONTEXTLESS_CONNECT QT_NO_CONTEXTLESS_CONNECT
 
 QT_NO_NARROWING_CONVERSIONS_IN_CONNECT QT_NO_NARROWING_CONVERSIONS_IN_CONNECT
 
 Q_CLASSINFO (Name, Value)
 
 Q_EMIT Q_EMIT
 
 Q_ENUM (...)
 
 Q_ENUMS (...)
 
 Q_ENUM_NS (...)
 
 Q_FLAG (...)
 
 Q_FLAGS (...)
 
 Q_FLAG_NS (...)
 
 Q_GADGET Q_GADGET
 
 Q_GADGET_EXPORT (EXPORT_MACRO)
 
 Q_INTERFACES (...)
 
 Q_INVOKABLE Q_INVOKABLE
 
 Q_MOC_INCLUDE Q_MOC_INCLUDE
 
 Q_NAMESPACE Q_NAMESPACE
 
 Q_NAMESPACE_EXPORT (EXPORT_MACRO)
 
 Q_OBJECT Q_OBJECT
 
 Q_PROPERTY (...)
 
 Q_REVISION Q_REVISION
 
 Q_SET_OBJECT_NAME (Object)
 
 Q_SIGNAL Q_SIGNAL
 
 Q_SIGNALS Q_SIGNALS
 
 Q_SLOT Q_SLOT
 
 Q_SLOTS Q_SLOTS
 
qobject_cast (QObject *object)
 
qobject_cast (const QObject *object)
 
bool blockSignals (bool block)
 
virtual bool event (QEvent *e)
 
virtual bool eventFilter (QObject *watched, QEvent *event)
 
bool moveToThread (QThread *targetThread)
 
bool setProperty (const char *name, QVariant &&value)
 
bool setProperty (const char *name, const QVariant &value)
 
int startTimer (int interval, Qt::TimerType timerType)
 
int startTimer (std::chrono::nanoseconds interval, Qt::TimerType timerType)
 
void deleteLater ()
 
void destroyed (QObject *obj)
 
void installEventFilter (QObject *filterObj)
 
void killTimer (Qt::TimerId id)
 
void killTimer (int id)
 
void objectNameChanged (const QString &objectName)
 
void removeEventFilter (QObject *obj)
 
void setObjectName (QAnyStringView name)
 
void setObjectName (const QString &name)
 
void setParent (QObject *parent)
 
QList< QByteArraydynamicPropertyNames () const const
 
QList< T > findChildren (QAnyStringView name, Qt::FindChildOptions options) const const
 
QList< T > findChildren (Qt::FindChildOptions options) const const
 
QList< T > findChildren (const QRegularExpression &re, Qt::FindChildOptions options) const const
 
QMetaObject::Connection connect (const QObject *sender, const char *signal, const char *method, Qt::ConnectionType type) const const
 
QObjectparent () const const
 
QString objectName () const const
 
QThreadthread () const const
 
QVariant property (const char *name) const const
 
findChild (QAnyStringView name, Qt::FindChildOptions options) const const
 
findChild (Qt::FindChildOptions options) const const
 
bool disconnect (const QObject *receiver, const char *method) const const
 
bool disconnect (const char *signal, const QObject *receiver, const char *method) const const
 
bool inherits (const char *className) const const
 
bool isQuickItemType () const const
 
bool isWidgetType () const const
 
bool isWindowType () const const
 
bool signalsBlocked () const const
 
virtual const QMetaObjectmetaObject () const const
 
const QObjectListchildren () const const
 
void dumpObjectInfo () const const
 
void dumpObjectTree () const const
 
- Public Member Functions inherited from swift::misc::simulation::data::CCentralMultiSimulatorModelCachesAware
void setModelsForSimulator (const CAircraftModelList &models, const CSimulatorInfo &simulator)
 Set models. More...
 
int updateModelsForSimulator (const CAircraftModelList &models, const CSimulatorInfo &simulator)
 Set models. More...
 
CAircraftModelList getCachedModels (const CSimulatorInfo &simulator) const
 Look like IMultiSimulatorModelCaches interface.
 
int getCachedModelsCount (const CSimulatorInfo &simulator) const
 Look like IMultiSimulatorModelCaches interface.
 
QString getCacheCountAndTimestamp (const CSimulatorInfo &simulator) const
 Look like IMultiSimulatorModelCaches interface.
 
CStatusMessage setCachedModels (const CAircraftModelList &models, const CSimulatorInfo &simulator)
 Look like IMultiSimulatorModelCaches interface.
 
CStatusMessage clearCachedModels (const CSimulatorInfo &simulator)
 Look like IMultiSimulatorModelCaches interface.
 
QDateTime getCacheTimestamp (const CSimulatorInfo &simulator) const
 Look like IMultiSimulatorModelCaches interface.
 
CStatusMessage setCacheTimestamp (const QDateTime &ts, const CSimulatorInfo &simulator)
 Look like IMultiSimulatorModelCaches interface.
 
void synchronizeCache (const CSimulatorInfo &simulator)
 Look like IMultiSimulatorModelCaches interface.
 
void admitCache (const CSimulatorInfo &simulator)
 Look like IMultiSimulatorModelCaches interface.
 
QString getFilename (const CSimulatorInfo &simulator) const
 Look like IMultiSimulatorModelCaches interface.
 
bool isSaved (const CSimulatorInfo &simulator) const
 Look like IMultiSimulatorModelCaches interface.
 
QString getDescription () const
 Look like IMultiSimulatorModelCaches interface.
 
QString getInfoString () const
 Look like IMultiSimulatorModelCaches interface.
 
QString getInfoStringFsFamily () const
 Look like IMultiSimulatorModelCaches interface.
 
- Public Member Functions inherited from swift::misc::simulation::IModelsForSimulatorSetable
 IModelsForSimulatorSetable ()
 Ctor, dtor, copy operators (CLANG warnings)
 
virtual ~IModelsForSimulatorSetable ()
 Ctor, dtor, copy operators (CLANG warnings)
 
 IModelsForSimulatorSetable (const IModelsForSimulatorSetable &)=default
 Ctor, dtor, copy operators (CLANG warnings)
 
IModelsForSimulatorSetableoperator= (const IModelsForSimulatorSetable &)=default
 Ctor, dtor, copy operators (CLANG warnings)
 
- Public Member Functions inherited from swift::misc::simulation::IModelsForSimulatorUpdatable
 IModelsForSimulatorUpdatable ()
 Ctor, dtor, copy operators (CLANG warnings)
 
virtual ~IModelsForSimulatorUpdatable ()
 Ctor, dtor, copy operators (CLANG warnings)
 
 IModelsForSimulatorUpdatable (const IModelsForSimulatorUpdatable &)=default
 Ctor, dtor, copy operators (CLANG warnings)
 
IModelsForSimulatorUpdatableoperator= (const IModelsForSimulatorUpdatable &)=default
 Ctor, dtor, copy operators (CLANG warnings)
 
- Public Member Functions inherited from swift::misc::simulation::IModelsSetable
 IModelsSetable ()
 Ctor, dtor, copy operators (CLANG warnings)
 
virtual ~IModelsSetable ()
 Ctor, dtor, copy operators (CLANG warnings)
 
 IModelsSetable (const IModelsSetable &)=default
 Ctor, dtor, copy operators (CLANG warnings)
 
IModelsSetableoperator= (const IModelsSetable &)=default
 Ctor, dtor, copy operators (CLANG warnings)
 
- Public Member Functions inherited from swift::misc::simulation::IModelsUpdatable
 IModelsUpdatable ()
 Ctor, dtor, copy operators (CLANG warnings)
 
virtual ~IModelsUpdatable ()
 Ctor, dtor, copy operators (CLANG warnings)
 
 IModelsUpdatable (const IModelsUpdatable &)=default
 Ctor, dtor, copy operators (CLANG warnings)
 
IModelsUpdatableoperator= (const IModelsUpdatable &)=default
 Ctor, dtor, copy operators (CLANG warnings)
 

Static Public Member Functions

static const QStringListgetLogCategories ()
 Log categories.
 
static bool isLoadedInfo (LoadFinishedInfo info)
 Loaded info.
 
static const QStringenumToString (LoadFinishedInfo info)
 Enum as string.
 
static const QStringenumToString (LoadModeFlag modeFlag)
 Enum as string.
 
static QString enumToString (LoadMode mode)
 Enum as string.
 
static bool needsCacheSynchronized (LoadMode mode)
 Is that mode needing caches synchronized?
 
- Static Public Member Functions inherited from QObject
QMetaObject::Connection connect (const QObject *sender, PointerToMemberFunction signal, Functor functor)
 
QMetaObject::Connection connect (const QObject *sender, PointerToMemberFunction signal, const QObject *context, Functor functor, Qt::ConnectionType type)
 
QMetaObject::Connection connect (const QObject *sender, PointerToMemberFunction signal, const QObject *receiver, PointerToMemberFunction method, Qt::ConnectionType type)
 
QMetaObject::Connection connect (const QObject *sender, const QMetaMethod &signal, const QObject *receiver, const QMetaMethod &method, Qt::ConnectionType type)
 
QMetaObject::Connection connect (const QObject *sender, const char *signal, const QObject *receiver, const char *method, Qt::ConnectionType type)
 
QString tr (const char *sourceText, const char *disambiguation, int n)
 
bool disconnect (const QMetaObject::Connection &connection)
 
bool disconnect (const QObject *sender, PointerToMemberFunction signal, const QObject *receiver, PointerToMemberFunction method)
 
bool disconnect (const QObject *sender, const QMetaMethod &signal, const QObject *receiver, const QMetaMethod &method)
 
bool disconnect (const QObject *sender, const char *signal, const QObject *receiver, const char *method)
 

Protected Member Functions

 IAircraftModelLoader (const CSimulatorInfo &simulator, QObject *parent=nullptr)
 Constructor.
 
virtual void startLoadingFromDisk (LoadMode mode, const ModelConsolidationCallback &modelConsolidation, const QStringList &modelDirectories)=0
 Start the loading process from disk.
 
QStringList getInitializedModelDirectories (const QStringList &modelDirectories, const CSimulatorInfo &simulator) const
 Get model directories from settings if empty, otherwise checked and UNC path fixed.
 
bool hasCachedData () const
 Any cached data?
 
- Protected Member Functions inherited from QObject
virtual void childEvent (QChildEvent *event)
 
virtual void connectNotify (const QMetaMethod &signal)
 
virtual void customEvent (QEvent *event)
 
virtual void disconnectNotify (const QMetaMethod &signal)
 
virtual void timerEvent (QTimerEvent *event)
 
QObjectsender () const const
 
bool isSignalConnected (const QMetaMethod &signal) const const
 
int receivers (const char *signal) const const
 
int senderSignalIndex () const const
 

Protected Attributes

const CSimulatorInfo m_simulator
 related simulator
 
std::atomic< bool > m_loadingInProgress { false }
 loading in progress
 
std::atomic< bool > m_cancelLoading { false }
 flag, requesting to cancel loading
 
std::atomic< bool > m_skipLoadingEmptyModelDir
 loading empty model dirs might erase the cache, so normally we skip it More...
 
CStatusMessageList m_loadingMessages
 loading messages
 
settings::CMultiSimulatorSettings m_settings { this }
 settings
 

Additional Inherited Members

- Public Attributes inherited from QObject
typedef QObjectList
 
 Invalid
 
- Properties inherited from QObject
 objectName
 

Detailed Description

Load the aircraft for a simulator.

Remarks
all model loaders share the same model caches of Data::CCentralMultiSimulatorModelCachesProvider

Definition at line 34 of file aircraftmodelloader.h.

Member Typedef Documentation

◆ ModelConsolidationCallback

Callback to consolidate data, normally with DB data.

Remarks
this has to be a abstarct, as DB handling is subject of swift::core

Definition at line 90 of file aircraftmodelloader.h.

Member Enumeration Documentation

◆ LoadFinishedInfo

Load mode.

Enumerator
CacheLoaded 

cache was loaded

ParsedData 

parsed data

LoadingSkipped 

loading skipped (empty directory)

LoadingFailed 

loading failed

Definition at line 65 of file aircraftmodelloader.h.

◆ LoadModeFlag

Parser mode.

Enumerator
LoadDirectly 

load synchronously (blocking), normally for testing

LoadInBackground 

load in background, asyncronously

CacheFirst 

always use cache (if it has data)

CacheSkipped 

ignore cache

CacheOnly 

only read cache, never load from disk

InBackgroundWithCache 

Background, cached.

InBackgroundNoCache 

Background, not checking cache.

Definition at line 51 of file aircraftmodelloader.h.

Member Function Documentation

◆ cacheChanged

void swift::misc::simulation::IAircraftModelLoader::cacheChanged ( const CSimulatorInfo simulator)
signal

Relayed from centralized caches.

Remarks
this can result from loading, the cache changed elsewhere or clearing data

◆ diskLoadingStarted

void swift::misc::simulation::IAircraftModelLoader::diskLoadingStarted ( const CSimulatorInfo simulator,
IAircraftModelLoader::LoadMode  loadMode 
)
signal

Disk loading started.

Remarks
will only indicate loading from disk, not cache loading

◆ isLoadingInProgress()

bool swift::misc::simulation::IAircraftModelLoader::isLoadingInProgress ( ) const
inline

Loading in progress.

Remarks
This function is thread safe.

Definition at line 106 of file aircraftmodelloader.h.

◆ loadingFinished

void swift::misc::simulation::IAircraftModelLoader::loadingFinished ( const CStatusMessageList status,
const CSimulatorInfo simulator,
IAircraftModelLoader::LoadFinishedInfo  info 
)
signal

Parsing is finished or cache has been loaded.

Remarks
does to fire if the cache has been changed elsewhere and it has just been reloaded here!

◆ loadingProgress

void swift::misc::simulation::IAircraftModelLoader::loadingProgress ( const CSimulatorInfo simulator,
const QString message,
int  progressPercentage 
)
signal

Loading progress, normally from disk.

Parameters
simulatorcorresponding simulator
messagea progress message which can be sent by each individual loader implementation as needed
progressPercentage0-100 or -1 if not available

Member Data Documentation

◆ m_skipLoadingEmptyModelDir

std::atomic<bool> swift::misc::simulation::IAircraftModelLoader::m_skipLoadingEmptyModelDir
protected
Initial value:
{
true
}

loading empty model dirs might erase the cache, so normally we skip it

Definition at line 165 of file aircraftmodelloader.h.


The documentation for this class was generated from the following files: