3#include <QtCore/QElapsedTimer>
4#include <QtCore/QLoggingCategory>
8#include <QtCore/QTimer>
9#include <QtCore/QTranslator>
10#include <QtGui/QGuiApplication>
16class QQmlApplicationEngine;
28#define qApp (static_cast<QGCApplication*>(QGuiApplication::instance()))
33#define qGuiApp (static_cast<QGCApplication*>(QGuiApplication::instance()))
72 bool event(QEvent *e)
final;
83 QQmlApplicationEngine *
qmlAppEngine()
const {
return _qmlAppEngine; }
88 _qmlAppEngine = engine;
89 _mainRootWindow =
nullptr;
90 _uiTestMode = (engine !=
nullptr);
109 void showAppMessage(
const QString &message,
const QString &title = QString());
122 void _missingParamsDisplay();
123 void _qgcCurrentStableVersionDownloadComplete(
bool success,
const QString &localFile,
const QString &errorMsg);
124 static bool _parseVersionText(
const QString &versionString,
int &majorVersion,
int &minorVersion,
int &buildVersion);
125 void _showDelayedAppMessages();
128 bool compressEvent(QEvent *
event, QObject *receiver, QPostEventList *postedEvents)
final;
132 bool _initQmlRootWindow();
135 void _initForNormalAppBoot();
137 QObject *_rootQmlObject();
138 void _checkForNewVersion();
139 bool _rebootMessageDebounced();
141 bool _runningUnitTests =
false;
142 bool _simpleBootTest =
false;
143 bool _uiTestMode =
false;
144 bool _fakeMobile =
false;
145 bool _logOutput =
false;
146 quint8 _systemId = 0;
147 QTime _lastRebootMessageTime;
149 static constexpr int _missingParamsDelayedDisplayTimerTimeout = 1000;
150 QTimer _missingParamsDelayedDisplayTimer;
151 QList<QPair<int,QString>> _missingParams;
153 QQmlApplicationEngine *_qmlAppEngine =
nullptr;
154 bool _settingsUpgraded =
false;
155 int _majorVersion = 0;
156 int _minorVersion = 0;
157 int _buildVersion = 0;
158 QQuickWindow *_mainRootWindow =
nullptr;
159 QTranslator _qgcTranslatorSourceCode;
160 QTranslator _qgcTranslatorQtLibs;
163 bool _showErrorsInToolbar =
false;
164 QElapsedTimer _msecsElapsedTime;
165 bool _videoManagerInitialized =
false;
166 bool _bootTestPassed =
true;
168 QList<QPair<QString , QString >> _delayedAppMessages;
170 class CompressedSignalList
173 CompressedSignalList() {}
174 void add(
const QMetaMethod &method);
175 void remove(
const QMetaMethod &method);
176 bool contains(
const QMetaObject *metaObject,
int signalIndex);
180 static int _signalIndex(
const QMetaMethod &method);
182 QMap<const QMetaObject*, QSet<int>> _signalMap;
184 Q_DISABLE_COPY(CompressedSignalList)
187 CompressedSignalList _compressedSignals;
189 const QString _settingsVersionKey = QStringLiteral(
"SettingsVersion");
191 const QString _qgcImageProviderId = QStringLiteral(
"QGCImages");
194Q_DECLARE_LOGGING_CATEGORY(QGCAppMessageLog)
The main application and management class.
void qmlAttemptWindowClose()
void reportMissingParameter(int componentId, const QString &name)
void showRebootAppMessage(const QString &message, const QString &title=QString())
bool logOutput() const
Returns true if Qt debug output should be logged to a file.
void init()
Perform initialize which is common to both normal application running and unit tests.
static QString cachedParameterMetaDataFile()
QQuickWindow * mainRootWindow()
void removeCompressedSignal(const QMetaMethod &method)
void languageChanged(const QLocale &locale)
static QString cachedAirframeMetaDataFile()
void addCompressedSignal(const QMetaMethod &method)
Registers the signal such that only the last duplicate signal added is left in the queue.
QQmlApplicationEngine * qmlAppEngine() const
Although public, these methods are internal and should only be called by UnitTest code.
friend class UnitTest
Unit Test have access to creating and destroying singletons.
void showCriticalVehicleMessage(const QString &message)
Show non-modal vehicle message to the user.
bool runningUnitTests() const
QGCImageProvider * qgcImageProvider()
void setQmlAppEngine(QQmlApplicationEngine *engine)
uint64_t msecsSinceBoot() const
bool simpleBootTest() const
void resetRebootMessageDebounce()
void showAppMessage(const QString &message, const QString &title=QString())
Show modal application message to the user.
void showRebootVehicleMessage(const QString &message, const QString &title=QString())
Same as showRebootAppMessage() but the dialog also includes a button which reboots the active vehicle...
bool bootTestPassed() const
QLocale getCurrentLanguage() const
Get current language.
bool event(QEvent *e) final
This is used to expose images from ImageProtocolHandler.
Result of parsing command-line arguments.