Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions src/Android/AndroidInterface.cc
Original file line number Diff line number Diff line change
Expand Up @@ -118,11 +118,13 @@ bool checkStoragePermissions()
futurePermissionResult = QtAndroidPrivate::requestPermission(permission);
permissionResult = futurePermissionResult.result();
if (permissionResult == QtAndroidPrivate::PermissionResult::Denied) {
qCWarning(AndroidInterfaceLog) << "Denied:" << permission;
return false;
}
}
}

qCDebug(AndroidInterfaceLog) << "checkStoragePermissions Accepted";
return true;
}

Expand Down
2 changes: 0 additions & 2 deletions src/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -46,8 +46,6 @@ add_subdirectory(QtLocationPlugin)
target_sources(${CMAKE_PROJECT_NAME}
PRIVATE
main.cc
CmdLineOptParser.cc
CmdLineOptParser.h
pch.h
QGCApplication.cc
QGCApplication.h
Expand Down
56 changes: 0 additions & 56 deletions src/CmdLineOptParser.cc

This file was deleted.

31 changes: 0 additions & 31 deletions src/CmdLineOptParser.h

This file was deleted.

43 changes: 19 additions & 24 deletions src/QGCApplication.cc
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,6 @@

#include "QGCLogging.h"
#include "AudioOutput.h"
#include "CmdLineOptParser.h"
#include "FollowMe.h"
#include "JoystickManager.h"
#include "JsonHelper.h"
Expand All @@ -36,11 +35,13 @@
#include "MultiVehicleManager.h"
#include "ParameterManager.h"
#include "PositionManager.h"
#include "QGCCommandLineParser.h"
#include "QGCCorePlugin.h"
#include "QGCFileDownload.h"
#include "QGCImageProvider.h"
#include "QGCLoggingCategory.h"
#include "SettingsManager.h"
#include "MavlinkSettings.h"
#include "AppSettings.h"
#include "UDPLink.h"
#include "Vehicle.h"
Expand All @@ -53,32 +54,22 @@

QGC_LOGGING_CATEGORY(QGCApplicationLog, "qgc.qgcapplication")

QGCApplication::QGCApplication(int &argc, char *argv[], bool unitTesting, bool simpleBootTest)
QGCApplication::QGCApplication(int &argc, char *argv[], const QGCCommandLineParser::CommandLineParseResult &cli)
: QApplication(argc, argv)
, _runningUnitTests(unitTesting)
, _simpleBootTest(simpleBootTest)
, _runningUnitTests(cli.runningUnitTests)
, _simpleBootTest(cli.simpleBootTest)
, _fakeMobile(cli.fakeMobile)
, _logOutput(cli.logOutput)
, _systemId(cli.systemId.value_or(0))
{
_msecsElapsedTime.start();

// Setup for network proxy support
QNetworkProxyFactory::setUseSystemConfiguration(true);

// Parse command line options
bool fClearSettingsOptions = false; // Clear stored settings
bool fClearCache = false; // Clear parameter/airframe caches
bool logging = false; // Turn on logging
QString loggingOptions;

CmdLineOpt_t rgCmdLineOptions[] = {
{ "--clear-settings", &fClearSettingsOptions, nullptr },
{ "--clear-cache", &fClearCache, nullptr },
{ "--logging", &logging, &loggingOptions },
{ "--fake-mobile", &_fakeMobile, nullptr },
{ "--log-output", &_logOutput, nullptr },
// Add additional command line option flags here
};

ParseCmdLineOptions(argc, argv, rgCmdLineOptions, std::size(rgCmdLineOptions), false);
bool fClearSettingsOptions = cli.clearSettingsOptions; // Clear stored settings
const bool fClearCache = cli.clearCache; // Clear parameter/airframe caches
const QString loggingOptions = cli.loggingOptions.value_or(QString(""));

// Set up timer for delayed missing fact display
_missingParamsDelayedDisplayTimer.setSingleShot(true);
Expand All @@ -87,7 +78,7 @@ QGCApplication::QGCApplication(int &argc, char *argv[], bool unitTesting, bool s

// Set application information
QString applicationName;
if (_runningUnitTests || simpleBootTest) {
if (_runningUnitTests || _simpleBootTest) {
// We don't want unit tests to use the same QSettings space as the normal app. So we tweak the app
// name. Also we want to run unit tests with clean settings every time.
applicationName = QStringLiteral("%1_unittest").arg(QGC_APP_NAME);
Expand Down Expand Up @@ -117,7 +108,7 @@ QGCApplication::QGCApplication(int &argc, char *argv[], bool unitTesting, bool s
// The setting will delete all settings on this boot
fClearSettingsOptions |= settings.contains(_deleteAllSettingsKey);

if (_runningUnitTests || simpleBootTest) {
if (_runningUnitTests || _simpleBootTest) {
// Unit tests run with clean settings
fClearSettingsOptions = true;
}
Expand Down Expand Up @@ -219,13 +210,17 @@ QGCApplication::~QGCApplication()
void QGCApplication::init()
{
SettingsManager::instance()->init();
if (_systemId > 0) {
qCDebug(QGCApplicationLog) << "Setting MAVLink System ID to:" << _systemId;
SettingsManager::instance()->mavlinkSettings()->gcsMavlinkSystemID()->setRawValue(_systemId);
}

// Although this should really be in _initForNormalAppBoot putting it here allowws us to create unit tests which pop up more easily
if(QFontDatabase::addApplicationFont(":/fonts/opensans") < 0) {
if (QFontDatabase::addApplicationFont(":/fonts/opensans") < 0) {
qCWarning(QGCApplicationLog) << "Could not load /fonts/opensans font";
}

if(QFontDatabase::addApplicationFont(":/fonts/opensans-demibold") < 0) {
if (QFontDatabase::addApplicationFont(":/fonts/opensans-demibold") < 0) {
qCWarning(QGCApplicationLog) << "Could not load /fonts/opensans-demibold font";
}

Expand Down
11 changes: 8 additions & 3 deletions src/QGCApplication.h
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,10 @@
#include <QtCore/QTranslator>
#include <QtWidgets/QApplication>

namespace QGCCommandLineParser {
struct CommandLineParseResult;
}

class QQmlApplicationEngine;
class QQuickWindow;
class QGCImageProvider;
Expand Down Expand Up @@ -50,7 +54,7 @@ class QGCApplication : public QApplication
/// Unit Test have access to creating and destroying singletons
friend class UnitTest;
public:
QGCApplication(int &argc, char *argv[], bool unitTesting, bool simpleBootTest);
QGCApplication(int &argc, char *argv[], const QGCCommandLineParser::CommandLineParseResult &args);
~QGCApplication();

/// Sets the persistent flag to delete all settings the next time QGroundControl is started.
Expand Down Expand Up @@ -140,14 +144,15 @@ private slots:

bool _runningUnitTests = false;
bool _simpleBootTest = false;
bool _fakeMobile = false; ///< true: Fake ui into displaying mobile interface
bool _logOutput = false; ///< true: Log Qt debug output to file
quint8 _systemId = 0; ///< MAVLink system ID, 0 means not set

static constexpr int _missingParamsDelayedDisplayTimerTimeout = 1000; ///< Timeout to wait for next missing fact to come in before display
QTimer _missingParamsDelayedDisplayTimer; ///< Timer use to delay missing fact display
QList<QPair<int,QString>> _missingParams; ///< List of missing parameter component id:name

QQmlApplicationEngine *_qmlAppEngine = nullptr;
bool _logOutput = false; ///< true: Log Qt debug output to file
bool _fakeMobile = false; ///< true: Fake ui into displaying mobile interface
bool _settingsUpgraded = false; ///< true: Settings format has been upgrade to new version
int _majorVersion = 0;
int _minorVersion = 0;
Expand Down
2 changes: 2 additions & 0 deletions src/Utilities/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@ target_sources(${CMAKE_PROJECT_NAME}
Platform.h
QGC.cc
QGC.h
QGCCommandLineParser.cc
QGCCommandLineParser.h
QGCLogging.cc
QGCLogging.h
QGCLoggingCategory.cc
Expand Down
28 changes: 25 additions & 3 deletions src/Utilities/Platform.cc
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,14 @@
#include <QtCore/QCoreApplication>
#include <QtCore/QProcessEnvironment>

#include "QGCCommandLineParser.h"

#ifdef Q_OS_ANDROID
#include "AndroidInterface.h"
#endif

#if !defined(Q_OS_IOS) && !defined(Q_OS_ANDROID)
#include "SignalHandler.h"
#include "SignalHandler.h"
#endif

#if defined(Q_OS_MACOS)
Expand Down Expand Up @@ -126,7 +132,7 @@ void setWindowsErrorModes(bool quietWindowsAsserts)

} // namespace

void Platform::setupPreApp(bool quietWindowsAsserts)
void Platform::setupPreApp(const QGCCommandLineParser::CommandLineParseResult &cli)
{
#ifdef Q_OS_UNIX
if (!qEnvironmentVariableIsSet("QT_ASSUME_STDERR_HAS_CONSOLE")) {
Expand All @@ -138,15 +144,27 @@ void Platform::setupPreApp(bool quietWindowsAsserts)
#endif

#ifdef Q_OS_WIN
// (void) qputenv("QT_OPENGL_BUGLIST", ":/opengl/resources/opengl/buglist.json");
if (!qEnvironmentVariableIsSet("QT_WIN_DEBUG_CONSOLE")) {
(void) qputenv("QT_WIN_DEBUG_CONSOLE", "attach");
}
setWindowsErrorModes(quietWindowsAsserts);
setWindowsErrorModes(cli.quietWindowsAsserts);
#endif

#ifdef Q_OS_MACOS
disableAppNapViaInfoDict();
#endif

if (cli.useDesktopGL) {
QCoreApplication::setAttribute(Qt::AA_UseDesktopOpenGL);
}

if (cli.useSwRast) {
QCoreApplication::setAttribute(Qt::AA_UseSoftwareOpenGL);
}

QCoreApplication::setAttribute(Qt::AA_ShareOpenGLContexts);
QCoreApplication::setAttribute(Qt::AA_CompressTabletEvents);
}

void Platform::setupPostApp()
Expand All @@ -155,4 +173,8 @@ void Platform::setupPostApp()
SignalHandler* signalHandler = new SignalHandler(QCoreApplication::instance());
(void) signalHandler->setupSignalHandlers();
#endif

#ifdef Q_OS_ANDROID
AndroidInterface::checkStoragePermissions();
#endif
}
6 changes: 5 additions & 1 deletion src/Utilities/Platform.h
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,14 @@

#pragma once

namespace QGCCommandLineParser {
struct CommandLineParseResult;
}

namespace Platform {

// Call before constructing Q(Core)Application.
void setupPreApp(bool quietWindowsAsserts);
void setupPreApp(const QGCCommandLineParser::CommandLineParseResult &cli);

// Call after Q(Core)Application exists and logging is installed.
void setupPostApp();
Expand Down
Loading
Loading