Commit bc10a8d2 authored by Gus Grubba's avatar Gus Grubba

Connection management

parent 1c29e15e
...@@ -42,9 +42,9 @@ AirMapManager::AirMapManager(QGCApplication* app, QGCToolbox* toolbox) ...@@ -42,9 +42,9 @@ AirMapManager::AirMapManager(QGCApplication* app, QGCToolbox* toolbox)
{ {
_logger = std::make_shared<qt::Logger>(); _logger = std::make_shared<qt::Logger>();
qt::register_types(); // TODO: still needed? qt::register_types(); // TODO: still needed?
_logger->logging_category().setEnabled(QtDebugMsg, false); _logger->logging_category().setEnabled(QtDebugMsg, true);
_logger->logging_category().setEnabled(QtInfoMsg, false); _logger->logging_category().setEnabled(QtInfoMsg, true);
_logger->logging_category().setEnabled(QtWarningMsg, false); _logger->logging_category().setEnabled(QtWarningMsg, true);
_dispatchingLogger = std::make_shared<qt::DispatchingLogger>(_logger); _dispatchingLogger = std::make_shared<qt::DispatchingLogger>(_logger);
connect(&_shared, &AirMapSharedState::error, this, &AirMapManager::_error); connect(&_shared, &AirMapSharedState::error, this, &AirMapManager::_error);
} }
...@@ -63,6 +63,7 @@ AirMapManager::setToolbox(QGCToolbox* toolbox) ...@@ -63,6 +63,7 @@ AirMapManager::setToolbox(QGCToolbox* toolbox)
{ {
AirspaceManager::setToolbox(toolbox); AirspaceManager::setToolbox(toolbox);
AirMapSettings* ap = toolbox->settingsManager()->airMapSettings(); AirMapSettings* ap = toolbox->settingsManager()->airMapSettings();
connect(ap->enableAirMap(), &Fact::rawValueChanged, this, &AirMapManager::_settingsChanged);
connect(ap->usePersonalApiKey(),&Fact::rawValueChanged, this, &AirMapManager::_settingsChanged); connect(ap->usePersonalApiKey(),&Fact::rawValueChanged, this, &AirMapManager::_settingsChanged);
connect(ap->apiKey(), &Fact::rawValueChanged, this, &AirMapManager::_settingsChanged); connect(ap->apiKey(), &Fact::rawValueChanged, this, &AirMapManager::_settingsChanged);
connect(ap->clientID(), &Fact::rawValueChanged, this, &AirMapManager::_settingsChanged); connect(ap->clientID(), &Fact::rawValueChanged, this, &AirMapManager::_settingsChanged);
...@@ -71,6 +72,13 @@ AirMapManager::setToolbox(QGCToolbox* toolbox) ...@@ -71,6 +72,13 @@ AirMapManager::setToolbox(QGCToolbox* toolbox)
_settingsChanged(); _settingsChanged();
} }
//-----------------------------------------------------------------------------
bool
AirMapManager::connected() const
{
return _shared.client() != NULL;
}
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
void void
AirMapManager::_error(const QString& what, const QString& airmapdMessage, const QString& airmapdDetails) AirMapManager::_error(const QString& what, const QString& airmapdMessage, const QString& airmapdDetails)
...@@ -84,29 +92,41 @@ void ...@@ -84,29 +92,41 @@ void
AirMapManager::_settingsChanged() AirMapManager::_settingsChanged()
{ {
qCDebug(AirMapManagerLog) << "AirMap settings changed"; qCDebug(AirMapManagerLog) << "AirMap settings changed";
_connectStatus.clear();
emit connectStatusChanged();
AirMapSettings* ap = _toolbox->settingsManager()->airMapSettings(); AirMapSettings* ap = _toolbox->settingsManager()->airMapSettings();
//-- If we are disabled, there is nothing else to do.
if (!ap->enableAirMap()->rawValue().toBool()) {
if(_shared.client()) {
delete _shared.client();
_shared.setClient(nullptr);
emit connectedChanged();
}
return;
}
AirMapSharedState::Settings settings; AirMapSharedState::Settings settings;
settings.apiKey = ap->apiKey()->rawValueString(); if(ap->usePersonalApiKey()->rawValue().toBool()) {
#if defined(QGC_AIRMAP_KEY_AVAILABLE) settings.apiKey = ap->apiKey()->rawValueString();
bool apiKeyChanged = settings.apiKey != _shared.settings().apiKey || settings.apiKey.isEmpty(); settings.clientID = ap->clientID()->rawValueString();
#else }
bool apiKeyChanged = settings.apiKey != _shared.settings().apiKey;
#endif
settings.clientID = ap->clientID()->rawValueString();
settings.userName = ap->userName()->rawValueString(); settings.userName = ap->userName()->rawValueString();
settings.password = ap->password()->rawValueString(); settings.password = ap->password()->rawValueString();
//-- If we have a hardwired key (and no custom key is present or enabled), set it. //-- If we have a hardwired key (and no custom key is present), set it.
#if defined(QGC_AIRMAP_KEY_AVAILABLE) #if defined(QGC_AIRMAP_KEY_AVAILABLE)
if(!ap->usePersonalApiKey()->rawValue().toBool() && (settings.apiKey.isEmpty() || settings.clientID.isEmpty())) { if(!ap->usePersonalApiKey()->rawValue().toBool()) {
settings.apiKey = kAirmapAPIKey; settings.apiKey = kAirmapAPIKey;
settings.clientID = kAirmapClientID; settings.clientID = kAirmapClientID;
} }
bool apiKeyChanged = settings.apiKey != _shared.settings().apiKey || settings.apiKey.isEmpty();
#else
bool apiKeyChanged = settings.apiKey != _shared.settings().apiKey;
#endif #endif
_shared.setSettings(settings); _shared.setSettings(settings);
//-- Need to re-create the client if the API key changed //-- Need to re-create the client if the API key changed
if (_shared.client() && apiKeyChanged) { if ((_shared.client() && apiKeyChanged) || !ap->enableAirMap()->rawValue().toBool()) {
delete _shared.client(); delete _shared.client();
_shared.setClient(nullptr); _shared.setClient(nullptr);
emit connectedChanged();
} }
if (!_shared.client() && settings.apiKey != "") { if (!_shared.client() && settings.apiKey != "") {
qCDebug(AirMapManagerLog) << "Creating AirMap client"; qCDebug(AirMapManagerLog) << "Creating AirMap client";
...@@ -119,16 +139,28 @@ AirMapManager::_settingsChanged() ...@@ -119,16 +139,28 @@ AirMapManager::_settingsChanged()
if (result) { if (result) {
qCDebug(AirMapManagerLog) << "Successfully created airmap::qt::Client instance"; qCDebug(AirMapManagerLog) << "Successfully created airmap::qt::Client instance";
_shared.setClient(result.value()); _shared.setClient(result.value());
emit connectedChanged();
_connectStatus = tr("AirMap Enabled");
emit connectStatusChanged();
} else { } else {
qWarning("Failed to create airmap::qt::Client instance"); qWarning("Failed to create airmap::qt::Client instance");
QString description = QString::fromStdString(result.error().description() ? result.error().description().get() : ""); QString description = QString::fromStdString(result.error().description() ? result.error().description().get() : "");
_error("Failed to create airmap::qt::Client instance", QString error = QString::fromStdString(result.error().message());
QString::fromStdString(result.error().message()), description); _error(tr("Failed to create airmap::qt::Client instance"),
error, description);
_connectStatus = error;
if(!description.isEmpty()) {
_connectStatus += "\n";
_connectStatus += description;
}
emit connectStatusChanged();
} }
}); });
} else { } else {
if(settings.apiKey == "") { if(settings.apiKey == "") {
qCDebug(AirMapManagerLog) << "No API key for AirMap"; _connectStatus = tr("No API key for AirMap");
emit connectStatusChanged();
qCDebug(AirMapManagerLog) << _connectStatus;
} }
} }
} }
......
...@@ -39,6 +39,8 @@ public: ...@@ -39,6 +39,8 @@ public:
QString providerName () const override { return QString("AirMap"); } QString providerName () const override { return QString("AirMap"); }
AirspaceVehicleManager* instantiateVehicle (const Vehicle& vehicle) override; AirspaceVehicleManager* instantiateVehicle (const Vehicle& vehicle) override;
bool connected () const override;
QString connectStatus () const override { return _connectStatus; }
protected: protected:
AirspaceRulesetsProvider* _instantiateRulesetsProvider () override; AirspaceRulesetsProvider* _instantiateRulesetsProvider () override;
...@@ -52,6 +54,7 @@ private slots: ...@@ -52,6 +54,7 @@ private slots:
void _settingsChanged (); void _settingsChanged ();
private: private:
QString _connectStatus;
AirMapSharedState _shared; AirMapSharedState _shared;
std::shared_ptr<airmap::qt::Logger> _logger; std::shared_ptr<airmap::qt::Logger> _logger;
std::shared_ptr<airmap::qt::DispatchingLogger> _dispatchingLogger; std::shared_ptr<airmap::qt::DispatchingLogger> _dispatchingLogger;
......
...@@ -37,7 +37,7 @@ QGCView { ...@@ -37,7 +37,7 @@ QGCView {
anchors.margins: ScreenTools.defaultFontPixelWidth anchors.margins: ScreenTools.defaultFontPixelWidth
property real _labelWidth: ScreenTools.defaultFontPixelWidth * 20 property real _labelWidth: ScreenTools.defaultFontPixelWidth * 20
property real _editFieldWidth: ScreenTools.defaultFontPixelWidth * 30 property real _editFieldWidth: ScreenTools.defaultFontPixelWidth * 20
property real _buttonWidth: ScreenTools.defaultFontPixelWidth * 18 property real _buttonWidth: ScreenTools.defaultFontPixelWidth * 18
property real _panelWidth: _qgcView.width * _internalWidthRatio property real _panelWidth: _qgcView.width * _internalWidthRatio
property Fact _enableAirMapFact: QGroundControl.settingsManager.airMapSettings.enableAirMap property Fact _enableAirMapFact: QGroundControl.settingsManager.airMapSettings.enableAirMap
...@@ -99,6 +99,47 @@ QGCView { ...@@ -99,6 +99,47 @@ QGCView {
} }
} }
//----------------------------------------------------------------- //-----------------------------------------------------------------
//-- Connection Status
Item {
width: _panelWidth
height: statusLabel.height
anchors.margins: ScreenTools.defaultFontPixelWidth
anchors.horizontalCenter: parent.horizontalCenter
visible: QGroundControl.settingsManager.appSettings.visible && _airMapEnabled
QGCLabel {
id: statusLabel
text: qsTr("Connection Status")
font.family: ScreenTools.demiboldFontFamily
}
}
Rectangle {
height: statusCol.height + (ScreenTools.defaultFontPixelHeight * 2)
width: _panelWidth
color: qgcPal.windowShade
visible: QGroundControl.settingsManager.appSettings.visible && _airMapEnabled
anchors.margins: ScreenTools.defaultFontPixelWidth
anchors.horizontalCenter: parent.horizontalCenter
Column {
id: statusCol
spacing: ScreenTools.defaultFontPixelHeight * 0.5
width: parent.width
anchors.centerIn: parent
QGCLabel {
text: QGroundControl.airspaceManager.connected ? qsTr("Connected") : qsTr("Not Connected")
color: QGroundControl.airspaceManager.connected ? qgcPal.colorGreen : qgcPal.colorRed
anchors.horizontalCenter: parent.horizontalCenter
}
QGCLabel {
text: QGroundControl.airspaceManager.connectStatus
visible: QGroundControl.airspaceManager.connectStatus != ""
wrapMode: Text.WordWrap
horizontalAlignment: Text.AlignHCenter
width: parent.width * 0.8
anchors.horizontalCenter: parent.horizontalCenter
}
}
}
//-----------------------------------------------------------------
//-- Login / Registration //-- Login / Registration
Item { Item {
width: _panelWidth width: _panelWidth
...@@ -128,6 +169,8 @@ QGCView { ...@@ -128,6 +169,8 @@ QGCView {
width: _editFieldWidth width: _editFieldWidth
enabled: _airMapEnabled enabled: _airMapEnabled
visible: _usernameFact.visible visible: _usernameFact.visible
Layout.fillWidth: true
Layout.minimumWidth: _editFieldWidth
property Fact _usernameFact: QGroundControl.settingsManager.airMapSettings.userName property Fact _usernameFact: QGroundControl.settingsManager.airMapSettings.userName
} }
QGCLabel { text: qsTr("Password:") } QGCLabel { text: qsTr("Password:") }
...@@ -137,6 +180,8 @@ QGCView { ...@@ -137,6 +180,8 @@ QGCView {
enabled: _airMapEnabled enabled: _airMapEnabled
visible: _passwordFact.visible visible: _passwordFact.visible
echoMode: TextInput.Password echoMode: TextInput.Password
Layout.fillWidth: true
Layout.minimumWidth: _editFieldWidth
property Fact _passwordFact: QGroundControl.settingsManager.airMapSettings.password property Fact _passwordFact: QGroundControl.settingsManager.airMapSettings.password
} }
Item { Item {
...@@ -168,11 +213,12 @@ QGCView { ...@@ -168,11 +213,12 @@ QGCView {
//----------------------------------------------------------------- //-----------------------------------------------------------------
//-- Pilot Profile //-- Pilot Profile
Item { Item {
//-- Disabled for now
width: _panelWidth width: _panelWidth
height: profileLabel.height height: profileLabel.height
anchors.margins: ScreenTools.defaultFontPixelWidth anchors.margins: ScreenTools.defaultFontPixelWidth
anchors.horizontalCenter: parent.horizontalCenter anchors.horizontalCenter: parent.horizontalCenter
visible: QGroundControl.settingsManager.appSettings.visible visible: false // QGroundControl.settingsManager.appSettings.visible
QGCLabel { QGCLabel {
id: profileLabel id: profileLabel
text: qsTr("Pilot Profile (WIP)") text: qsTr("Pilot Profile (WIP)")
...@@ -180,9 +226,11 @@ QGCView { ...@@ -180,9 +226,11 @@ QGCView {
} }
} }
Rectangle { Rectangle {
//-- Disabled for now
height: profileGrid.height + (ScreenTools.defaultFontPixelHeight * 2) height: profileGrid.height + (ScreenTools.defaultFontPixelHeight * 2)
width: _panelWidth width: _panelWidth
color: qgcPal.windowShade color: qgcPal.windowShade
visible: false // QGroundControl.settingsManager.appSettings.visible
anchors.margins: ScreenTools.defaultFontPixelWidth anchors.margins: ScreenTools.defaultFontPixelWidth
anchors.horizontalCenter: parent.horizontalCenter anchors.horizontalCenter: parent.horizontalCenter
GridLayout { GridLayout {
...@@ -208,11 +256,11 @@ QGCView { ...@@ -208,11 +256,11 @@ QGCView {
height: licenseLabel.height height: licenseLabel.height
anchors.margins: ScreenTools.defaultFontPixelWidth anchors.margins: ScreenTools.defaultFontPixelWidth
anchors.horizontalCenter: parent.horizontalCenter anchors.horizontalCenter: parent.horizontalCenter
visible: QGroundControl.settingsManager.appSettings.visible visible: QGroundControl.settingsManager.airMapSettings.usePersonalApiKey.visible
QGCLabel { QGCLabel {
id: licenseLabel id: licenseLabel
text: qsTr("License") text: qsTr("License")
font.family: ScreenTools.demiboldFontFamily font.family: ScreenTools.demiboldFontFamily
} }
} }
Rectangle { Rectangle {
...@@ -221,20 +269,18 @@ QGCView { ...@@ -221,20 +269,18 @@ QGCView {
color: qgcPal.windowShade color: qgcPal.windowShade
anchors.margins: ScreenTools.defaultFontPixelWidth anchors.margins: ScreenTools.defaultFontPixelWidth
anchors.horizontalCenter: parent.horizontalCenter anchors.horizontalCenter: parent.horizontalCenter
visible: QGroundControl.settingsManager.airMapSettings.usePersonalApiKey.visible
GridLayout { GridLayout {
id: licenseGrid id: licenseGrid
columns: 2 columns: 2
columnSpacing: ScreenTools.defaultFontPixelHeight * 2 columnSpacing: ScreenTools.defaultFontPixelHeight * 2
rowSpacing: ScreenTools.defaultFontPixelWidth * 0.25 rowSpacing: ScreenTools.defaultFontPixelWidth * 0.25
anchors.centerIn: parent anchors.centerIn: parent
QGCCheckBox { FactCheckBox {
id: hasPrivateKey id: hasPrivateKey
text: qsTr("Personal API Key") text: qsTr("Personal API Key")
onClicked: QGroundControl.settingsManager.airMapSettings.usePersonalApiKey = checked fact: QGroundControl.settingsManager.airMapSettings.usePersonalApiKey
Layout.columnSpan: 2 Layout.columnSpan: 2
Component.onCompleted: {
checked = QGroundControl.settingsManager.airMapSettings.usePersonalApiKey
}
} }
Item { Item {
width: 1 width: 1
...@@ -243,9 +289,9 @@ QGCView { ...@@ -243,9 +289,9 @@ QGCView {
Layout.columnSpan: 2 Layout.columnSpan: 2
} }
QGCLabel { text: qsTr("API Key:"); visible: hasPrivateKey.checked; } QGCLabel { text: qsTr("API Key:"); visible: hasPrivateKey.checked; }
FactTextField { fact: QGroundControl.settingsManager.airMapSettings.apiKey; width: _editFieldWidth * 2; visible: hasPrivateKey.checked; } FactTextField { fact: QGroundControl.settingsManager.airMapSettings.apiKey; width: _editFieldWidth * 2; visible: hasPrivateKey.checked; Layout.fillWidth: true; Layout.minimumWidth: _editFieldWidth * 2; }
QGCLabel { text: qsTr("Client ID:"); visible: hasPrivateKey.checked; } QGCLabel { text: qsTr("Client ID:"); visible: hasPrivateKey.checked; }
FactTextField { fact: QGroundControl.settingsManager.airMapSettings.clientID; width: _editFieldWidth * 2; visible: hasPrivateKey.checked; } FactTextField { fact: QGroundControl.settingsManager.airMapSettings.clientID; width: _editFieldWidth * 2; visible: hasPrivateKey.checked; Layout.fillWidth: true; Layout.minimumWidth: _editFieldWidth * 2; }
} }
} }
//----------------------------------------------------------------- //-----------------------------------------------------------------
......
...@@ -24,11 +24,11 @@ Item { ...@@ -24,11 +24,11 @@ Item {
property bool planView: true property bool planView: true
property color _airspaceColor: _validAdvisories ? getAispaceColor(QGroundControl.airspaceManager.advisories.airspaceColor) : _colorGray property color _airspaceColor: _validAdvisories ? getAispaceColor(QGroundControl.airspaceManager.advisories.airspaceColor) : _colorGray
property bool _validRules: QGroundControl.airspaceManager.ruleSets.valid property bool _validRules: QGroundControl.airspaceManager.connected && QGroundControl.airspaceManager.ruleSets.valid
property bool _validAdvisories: QGroundControl.airspaceManager.advisories.valid property bool _validAdvisories: QGroundControl.airspaceManager.connected && QGroundControl.airspaceManager.advisories.valid
property color _textColor: qgcPal.text property color _textColor: qgcPal.text
property bool _colapsed: !QGroundControl.airspaceManager.airspaceVisible property bool _colapsed: !QGroundControl.airspaceManager.airspaceVisible || !QGroundControl.airspaceManager.connected
property var _flightPermit: QGroundControl.airspaceManager.flightPlan.flightPermitStatus property int _flightPermit: QGroundControl.airspaceManager.flightPlan.flightPermitStatus
property bool _dirty: false property bool _dirty: false
readonly property real _radius: ScreenTools.defaultFontPixelWidth * 0.5 readonly property real _radius: ScreenTools.defaultFontPixelWidth * 0.5
...@@ -84,7 +84,7 @@ Item { ...@@ -84,7 +84,7 @@ Item {
id: colapsedRect id: colapsedRect
width: parent.width width: parent.width
height: _colapsed ? colapsedRow.height + ScreenTools.defaultFontPixelHeight : 0 height: _colapsed ? colapsedRow.height + ScreenTools.defaultFontPixelHeight : 0
color: _validAdvisories ? getAispaceColor(QGroundControl.airspaceManager.advisories.airspaceColor) : _colorGray color: QGroundControl.airspaceManager.connected ? (_validAdvisories ? getAispaceColor(QGroundControl.airspaceManager.advisories.airspaceColor) : _colorGray) : _colorGray
radius: _radius radius: _radius
visible: _colapsed visible: _colapsed
Row { Row {
...@@ -121,10 +121,16 @@ Item { ...@@ -121,10 +121,16 @@ Item {
} }
AirspaceWeather { AirspaceWeather {
iconHeight: ScreenTools.defaultFontPixelHeight * 2 iconHeight: ScreenTools.defaultFontPixelHeight * 2
visible: QGroundControl.airspaceManager.weatherInfo.valid visible: QGroundControl.airspaceManager.weatherInfo.valid && QGroundControl.airspaceManager.connected
contentColor: _textColor contentColor: _textColor
anchors.verticalCenter: parent.verticalCenter anchors.verticalCenter: parent.verticalCenter
} }
QGCLabel {
text: qsTr("Not Connected")
color: qgcPal.text
visible: !QGroundControl.airspaceManager.connected
anchors.verticalCenter: parent.verticalCenter
}
} }
QGCColoredImage { QGCColoredImage {
width: height width: height
...@@ -133,12 +139,14 @@ Item { ...@@ -133,12 +139,14 @@ Item {
source: "qrc:/airmap/expand.svg" source: "qrc:/airmap/expand.svg"
color: _textColor color: _textColor
fillMode: Image.PreserveAspectFit fillMode: Image.PreserveAspectFit
visible: QGroundControl.airspaceManager.connected
anchors.right: parent.right anchors.right: parent.right
anchors.rightMargin: ScreenTools.defaultFontPixelWidth anchors.rightMargin: ScreenTools.defaultFontPixelWidth
anchors.verticalCenter: parent.verticalCenter anchors.verticalCenter: parent.verticalCenter
} }
MouseArea { MouseArea {
anchors.fill: parent anchors.fill: parent
enabled: QGroundControl.airspaceManager.connected
onClicked: { onClicked: {
QGroundControl.airspaceManager.airspaceVisible = true QGroundControl.airspaceManager.airspaceVisible = true
} }
......
...@@ -63,6 +63,8 @@ public: ...@@ -63,6 +63,8 @@ public:
Q_PROPERTY(AirspaceRulesetsProvider* ruleSets READ ruleSets CONSTANT) Q_PROPERTY(AirspaceRulesetsProvider* ruleSets READ ruleSets CONSTANT)
Q_PROPERTY(AirspaceRestrictionProvider* airspaces READ airspaces CONSTANT) Q_PROPERTY(AirspaceRestrictionProvider* airspaces READ airspaces CONSTANT)
Q_PROPERTY(AirspaceFlightPlanProvider* flightPlan READ flightPlan CONSTANT) Q_PROPERTY(AirspaceFlightPlanProvider* flightPlan READ flightPlan CONSTANT)
Q_PROPERTY(bool connected READ connected NOTIFY connectedChanged)
Q_PROPERTY(QString connectStatus READ connectStatus NOTIFY connectStatusChanged)
Q_PROPERTY(bool airspaceVisible READ airspaceVisible WRITE setAirspaceVisible NOTIFY airspaceVisibleChanged) Q_PROPERTY(bool airspaceVisible READ airspaceVisible WRITE setAirspaceVisible NOTIFY airspaceVisibleChanged)
Q_INVOKABLE void setROI (const QGeoCoordinate& pointNW, const QGeoCoordinate& pointSE, bool planView); Q_INVOKABLE void setROI (const QGeoCoordinate& pointNW, const QGeoCoordinate& pointSE, bool planView);
...@@ -79,6 +81,8 @@ public: ...@@ -79,6 +81,8 @@ public:
virtual bool airspaceVisible () { return _airspaceVisible; } virtual bool airspaceVisible () { return _airspaceVisible; }
virtual void setAirspaceVisible (bool set) { _airspaceVisible = set; emit airspaceVisibleChanged(); } virtual void setAirspaceVisible (bool set) { _airspaceVisible = set; emit airspaceVisibleChanged(); }
virtual bool connected () const = 0;
virtual QString connectStatus () const { return QString(); }
/** /**
* Factory method to create an AirspaceVehicleManager object * Factory method to create an AirspaceVehicleManager object
...@@ -87,6 +91,8 @@ public: ...@@ -87,6 +91,8 @@ public:
signals: signals:
void airspaceVisibleChanged (); void airspaceVisibleChanged ();
void connectedChanged ();
void connectStatusChanged ();
protected: protected:
/** /**
......
...@@ -51,7 +51,7 @@ FlightMap { ...@@ -51,7 +51,7 @@ FlightMap {
property var _activeVehicle: QGroundControl.multiVehicleManager.activeVehicle property var _activeVehicle: QGroundControl.multiVehicleManager.activeVehicle
property var _activeVehicleCoordinate: _activeVehicle ? _activeVehicle.coordinate : QtPositioning.coordinate() property var _activeVehicleCoordinate: _activeVehicle ? _activeVehicle.coordinate : QtPositioning.coordinate()
property real _toolButtonTopMargin: parent.height - ScreenTools.availableHeight + (ScreenTools.defaultFontPixelHeight / 2) property real _toolButtonTopMargin: parent.height - ScreenTools.availableHeight + (ScreenTools.defaultFontPixelHeight / 2)
property bool _airspaceEnabled: QGroundControl.airmapSupported ? QGroundControl.settingsManager.airMapSettings.enableAirMap.rawValue : false property bool _airspaceEnabled: QGroundControl.airmapSupported ? (QGroundControl.settingsManager.airMapSettings.enableAirMap.rawValue && QGroundControl.airspaceManager.connected): false
property bool _disableVehicleTracking: false property bool _disableVehicleTracking: false
property bool _keepVehicleCentered: _mainIsMap ? false : true property bool _keepVehicleCentered: _mainIsMap ? false : true
...@@ -87,6 +87,10 @@ FlightMap { ...@@ -87,6 +87,10 @@ FlightMap {
} }
} }
on_AirspaceEnabledChanged: {
updateAirspace()
}
function pointInRect(point, rect) { function pointInRect(point, rect) {
return point.x > rect.x && return point.x > rect.x &&
point.x < rect.x + rect.width && point.x < rect.x + rect.width &&
......
Subproject commit d7854b7bcf1610bb42d89f4bae553744cbe4408c Subproject commit e84bb0a7a702320fedade6c83bbdf2324e3be8fb
...@@ -47,7 +47,7 @@ QGCView { ...@@ -47,7 +47,7 @@ QGCView {
readonly property var _defaultVehicleCoordinate: QtPositioning.coordinate(37.803784, -122.462276) readonly property var _defaultVehicleCoordinate: QtPositioning.coordinate(37.803784, -122.462276)
readonly property bool _waypointsOnlyMode: QGroundControl.corePlugin.options.missionWaypointsOnly readonly property bool _waypointsOnlyMode: QGroundControl.corePlugin.options.missionWaypointsOnly
property bool _airspaceEnabled: QGroundControl.airmapSupported ? QGroundControl.settingsManager.airMapSettings.enableAirMap.rawValue : false property bool _airspaceEnabled: QGroundControl.airmapSupported ? (QGroundControl.settingsManager.airMapSettings.enableAirMap.rawValue && QGroundControl.airspaceManager.connected): false
property var _planMasterController: masterController property var _planMasterController: masterController
property var _missionController: _planMasterController.missionController property var _missionController: _planMasterController.missionController
property var _geoFenceController: _planMasterController.geoFenceController property var _geoFenceController: _planMasterController.geoFenceController
...@@ -115,6 +115,7 @@ QGCView { ...@@ -115,6 +115,7 @@ QGCView {
if(QGroundControl.airmapSupported) { if(QGroundControl.airmapSupported) {
if(_airspaceEnabled) { if(_airspaceEnabled) {
planControlColapsed = QGroundControl.airspaceManager.airspaceVisible planControlColapsed = QGroundControl.airspaceManager.airspaceVisible
updateAirspace()
} else { } else {
planControlColapsed = false planControlColapsed = false
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment