20#ifndef QGC_NO_SERIAL_LINK
28#include <QtCore/QLineF>
29#include <QtCore/QSettings>
30#include <QtGui/QClipboard>
31#include <QtGui/QGuiApplication>
54#ifndef QGC_NO_SERIAL_LINK
63 settings.beginGroup(_flightMapPositionSettingsGroup);
64 _coord.setLatitude(settings.value(_flightMapPositionLatitudeSettingsKey, _coord.latitude()).toDouble());
65 _coord.setLongitude(settings.value(_flightMapPositionLongitudeSettingsKey, _coord.longitude()).toDouble());
66 _zoom = settings.value(_flightMapZoomSettingsKey, _zoom).toDouble();
67 _flightMapPositionSettledTimer.setSingleShot(
true);
68 _flightMapPositionSettledTimer.setInterval(1000);
69 (void) connect(&_flightMapPositionSettledTimer, &QTimer::timeout,
this, []() {
71 QSettings settingsInner;
72 settingsInner.beginGroup(_flightMapPositionSettingsGroup);
73 settingsInner.setValue(_flightMapPositionLatitudeSettingsKey, _coord.latitude());
74 settingsInner.setValue(_flightMapPositionLongitudeSettingsKey, _coord.longitude());
75 settingsInner.setValue(_flightMapZoomSettingsKey, _zoom);
78 if (!_flightMapPositionSettledTimer.isActive()) {
79 _flightMapPositionSettledTimer.start();
83 if (!_flightMapPositionSettledTimer.isActive()) {
84 _flightMapPositionSettledTimer.start();
96 settings.beginGroup(kQmlGlobalKeyName);
97 settings.setValue(key, value);
103 settings.beginGroup(kQmlGlobalKeyName);
104 return settings.value(key, defaultValue).toString();
110 settings.beginGroup(kQmlGlobalKeyName);
111 settings.setValue(key, value);
117 settings.beginGroup(kQmlGlobalKeyName);
118 return settings.value(key, defaultValue).toBool();
122static MockConfiguration::Options _mockLinkOptions(
bool sendStatusText,
bool enableCamera,
bool enableGimbal,
bool enableProximity,
bool apmStartFreshParams =
false)
139 Q_UNUSED(sendStatusText);
140 Q_UNUSED(enableCamera);
141 Q_UNUSED(enableGimbal);
142 Q_UNUSED(enableProximity);
143 Q_UNUSED(videoStreamType);
152 Q_UNUSED(sendStatusText);
153 Q_UNUSED(enableCamera);
154 Q_UNUSED(enableGimbal);
155 Q_UNUSED(enableProximity);
156 Q_UNUSED(videoStreamType);
165 Q_UNUSED(sendStatusText);
166 Q_UNUSED(enableCamera);
167 Q_UNUSED(enableGimbal);
168 Q_UNUSED(enableProximity);
169 Q_UNUSED(apmStartFreshParams);
170 Q_UNUSED(videoStreamType);
179 Q_UNUSED(sendStatusText);
180 Q_UNUSED(enableCamera);
181 Q_UNUSED(enableGimbal);
182 Q_UNUSED(enableProximity);
183 Q_UNUSED(apmStartFreshParams);
184 Q_UNUSED(videoStreamType);
193 Q_UNUSED(sendStatusText);
194 Q_UNUSED(enableCamera);
195 Q_UNUSED(enableGimbal);
196 Q_UNUSED(enableProximity);
197 Q_UNUSED(apmStartFreshParams);
198 Q_UNUSED(videoStreamType);
207 Q_UNUSED(sendStatusText);
208 Q_UNUSED(enableCamera);
209 Q_UNUSED(enableGimbal);
210 Q_UNUSED(enableProximity);
211 Q_UNUSED(apmStartFreshParams);
212 Q_UNUSED(videoStreamType);
221 for (
int i=0; i<sharedLinks.count(); i++) {
223 MockLink* mockLink = qobject_cast<MockLink*>(link);
258 QPointF intersectPoint;
260 auto intersect = QLineF(line1A, line1B).intersects(QLineF(line2A, line2B), &intersectPoint);
262 return intersect == QLineF::BoundedIntersection &&
263 intersectPoint != line1A && intersectPoint != line1B;
269 _coord.setLatitude(coordinate.latitude());
270 _coord.setLongitude(coordinate.longitude());
285 QString versionStr = QCoreApplication::applicationVersion();
286 if(QSysInfo::buildAbi().contains(
"32"))
288 versionStr += QStringLiteral(
" %1").arg(tr(
"32 bit"));
290 else if(QSysInfo::buildAbi().contains(
"64"))
292 versionStr += QStringLiteral(
" %1").arg(tr(
"64 bit"));
341 const QString& title,
344 QJSValue acceptFunction,
345 QJSValue closeFunction)
357 QGuiApplication::clipboard()->setText(text);
362 return _settingsManager->
flightMapSettings()->elevationMapProvider()->rawValue().toString();
367 return _settingsManager->
flightMapSettings()->elevationMapProvider()->rawValue().toString();
382 return QCoreApplication::applicationName();
#define QGC_LOGGING_CATEGORY(name, categoryStr)
static constexpr const char * parameterFileExtension
static constexpr const char * telemetryFileExtension
void testAudioOutput()
Tests the audio output. Will stop current output before test.
static AudioOutput * instance()
bool firmwareClassSupported(QGCMAVLink::FirmwareClass_t firmwareClass)
Returns true if the specified firmware class is supported by the system.
QList< QGCMAVLink::FirmwareClass_t > supportedFirmwareClasses()
Returns list of firmwares which are supported by the system.
QList< QGCMAVLink::VehicleClass_t > supportedVehicleClasses(QGCMAVLink::FirmwareClass_t firmwareClass)
Returns the list of supported vehicle types for the specified firmware.
static FirmwarePluginManager * instance()
static GPSManager * instance()
The link interface defines the interface for all links used to communicate with the ground station ap...
Manage communication links The Link Manager organizes the physical Links. It can manage arbitrary lin...
static LinkManager * instance()
QList< SharedLinkInterfacePtr > links()
Bag of named MAVLink signing keys; correct key per vehicle is auto-detected from incoming signed pack...
Manages a hierarchy of MissionCommandUIInfo.
static VideoStreamType videoStreamTypeFromInt(int value)
@ OptionAPMStartFreshParams
static MockLink * startGenericMockLink(MockConfiguration::Options options=MockConfiguration::OptionNone, MockConfiguration::FailureMode_t failureMode=MockConfiguration::FailNone, MockConfiguration::VideoStreamType videoStreamType=MockConfiguration::VideoStreamNone)
static MockLink * startAPMArduCopterMockLink(MockConfiguration::Options options=MockConfiguration::OptionNone, MockConfiguration::FailureMode_t failureMode=MockConfiguration::FailNone, MockConfiguration::VideoStreamType videoStreamType=MockConfiguration::VideoStreamNone)
static MockLink * startPX4MockLink(MockConfiguration::Options options=MockConfiguration::OptionNone, MockConfiguration::FailureMode_t failureMode=MockConfiguration::FailNone, MockConfiguration::VideoStreamType videoStreamType=MockConfiguration::VideoStreamNone)
static MockLink * startAPMArduSubMockLink(MockConfiguration::Options options=MockConfiguration::OptionNone, MockConfiguration::FailureMode_t failureMode=MockConfiguration::FailNone, MockConfiguration::VideoStreamType videoStreamType=MockConfiguration::VideoStreamNone)
static MockLink * startAPMArduPlaneMockLink(MockConfiguration::Options options=MockConfiguration::OptionNone, MockConfiguration::FailureMode_t failureMode=MockConfiguration::FailNone, MockConfiguration::VideoStreamType videoStreamType=MockConfiguration::VideoStreamNone)
static MockLink * startAPMArduRoverMockLink(MockConfiguration::Options options=MockConfiguration::OptionNone, MockConfiguration::FailureMode_t failureMode=MockConfiguration::FailNone, MockConfiguration::VideoStreamType videoStreamType=MockConfiguration::VideoStreamNone)
Extension mechanism for generic, non-firmware-specific customization of QGC.
static constexpr const FirmwareClass_t FirmwareClassPX4
static constexpr const FirmwareClass_t FirmwareClassArduPilot
QGCPalette is used in QML ui to expose color properties for the QGC palette.
void setFlightMapPosition(QGeoCoordinate &coordinate)
void setFlightMapZoom(double zoom)
static double flightMapZoom()
QString telemetryFileExtension(void) const
Q_INVOKABLE void startGenericMockLink(bool sendStatusText, bool enableCamera, bool enableGimbal, bool enableProximity=false, int videoStreamType=0)
void showMessageDialogRequested(QObject *owner, QString title, QString text, int buttons, QJSValue acceptFunction, QJSValue closeFunction)
QString elevationProviderName()
~QGroundControlQmlGlobal()
bool singleFirmwareSupport()
void flightMapPositionChanged(QGeoCoordinate flightMapPosition)
Q_INVOKABLE QString loadGlobalSetting(const QString &key, const QString &defaultValue)
Q_INVOKABLE void startAPMArduCopterMockLink(bool sendStatusText, bool enableCamera, bool enableGimbal, bool enableProximity=false, bool apmStartFreshParams=false, int videoStreamType=0)
Q_INVOKABLE void startAPMArduRoverMockLink(bool sendStatusText, bool enableCamera, bool enableGimbal, bool enableProximity=false, bool apmStartFreshParams=false, int videoStreamType=0)
@ AltitudeFrameCalcAboveTerrain
Q_INVOKABLE QString altitudeFrameExtraUnits(AltitudeFrame altFrame)
String shown in the FactTextField.extraUnits ui.
bool singleVehicleSupport()
bool px4ProFirmwareSupported()
QString elevationProviderNotice()
static QGeoCoordinate flightMapPosition()
void flightMapZoomChanged(double flightMapZoom)
Q_INVOKABLE void stopOneMockLink(void)
Q_INVOKABLE bool loadBoolGlobalSetting(const QString &key, bool defaultValue)
static QString qgcVersion()
QString parameterFileExtension(void) const
Q_INVOKABLE bool linesIntersect(QPointF xLine1, QPointF yLine1, QPointF xLine2, QPointF yLine2)
Q_INVOKABLE void startPX4MockLink(bool sendStatusText, bool enableCamera, bool enableGimbal, bool enableProximity=false, int videoStreamType=0)
Q_INVOKABLE void saveBoolGlobalSetting(const QString &key, bool value)
Q_INVOKABLE QString altitudeFrameShortDescription(AltitudeFrame altFrame)
String shown when a user needs to select an altitude frame.
Q_INVOKABLE void showMessageDialog(QObject *owner, const QString &title, const QString &text, int buttons=kDefaultMessageDialogButtons, QJSValue acceptFunction=QJSValue(), QJSValue closeFunction=QJSValue())
bool apmFirmwareSupported()
static Q_INVOKABLE void copyToClipboard(const QString &text)
Copy text to the system clipboard.
Q_INVOKABLE void startAPMArduSubMockLink(bool sendStatusText, bool enableCamera, bool enableGimbal, bool enableProximity=false, bool apmStartFreshParams=false, int videoStreamType=0)
Q_INVOKABLE void startAPMArduPlaneMockLink(bool sendStatusText, bool enableCamera, bool enableGimbal, bool enableProximity=false, bool apmStartFreshParams=false, int videoStreamType=0)
Q_INVOKABLE void saveGlobalSetting(const QString &key, const QString &value)
Q_INVOKABLE void testAudioOutput()
Provides access to all app settings.
FlightMapSettings * flightMapSettings() const