diff --git a/src/Airmap/AirMap.SettingsGroup.json b/src/Airmap/AirMap.SettingsGroup.json index 4f61a0f8db818f6cffbba290fbe9e9faa768aa6a..e885095af54e511747b66fb69be810c7c097deea 100644 --- a/src/Airmap/AirMap.SettingsGroup.json +++ b/src/Airmap/AirMap.SettingsGroup.json @@ -1,4 +1,10 @@ [ +{ + "name": "usePersonalApiKey", + "shortDescription": "Use Personal AirMap API Key", + "type": "bool", + "defaultValue": false +}, { "name": "apiKey", "shortDescription": "AirMap API Key", diff --git a/src/Airmap/AirMapManager.cc b/src/Airmap/AirMapManager.cc index bf8560660ea6c4e6df25ad29fc1d5a2588a16620..dd1beb75a131589496deade9e8ee07ba0c990df8 100644 --- a/src/Airmap/AirMapManager.cc +++ b/src/Airmap/AirMapManager.cc @@ -63,10 +63,11 @@ AirMapManager::setToolbox(QGCToolbox* toolbox) { AirspaceManager::setToolbox(toolbox); AirMapSettings* ap = toolbox->settingsManager()->airMapSettings(); - connect(ap->apiKey(), &Fact::rawValueChanged, this, &AirMapManager::_settingsChanged); - connect(ap->clientID(), &Fact::rawValueChanged, this, &AirMapManager::_settingsChanged); - connect(ap->userName(), &Fact::rawValueChanged, this, &AirMapManager::_settingsChanged); - connect(ap->password(), &Fact::rawValueChanged, this, &AirMapManager::_settingsChanged); + connect(ap->usePersonalApiKey(),&Fact::rawValueChanged, this, &AirMapManager::_settingsChanged); + connect(ap->apiKey(), &Fact::rawValueChanged, this, &AirMapManager::_settingsChanged); + connect(ap->clientID(), &Fact::rawValueChanged, this, &AirMapManager::_settingsChanged); + connect(ap->userName(), &Fact::rawValueChanged, this, &AirMapManager::_settingsChanged); + connect(ap->password(), &Fact::rawValueChanged, this, &AirMapManager::_settingsChanged); _settingsChanged(); } @@ -94,9 +95,9 @@ AirMapManager::_settingsChanged() settings.clientID = ap->clientID()->rawValueString(); settings.userName = ap->userName()->rawValueString(); settings.password = ap->password()->rawValueString(); - //-- If we have a hardwired key (and no custom key), set it. + //-- If we have a hardwired key (and no custom key is present or enabled), set it. #if defined(QGC_AIRMAP_KEY_AVAILABLE) - if(settings.apiKey.isEmpty() || settings.clientID.isEmpty()) { + if(!ap->usePersonalApiKey()->rawValue().toBool() && (settings.apiKey.isEmpty() || settings.clientID.isEmpty())) { settings.apiKey = kAirmapAPIKey; settings.clientID = kAirmapClientID; } @@ -123,6 +124,10 @@ AirMapManager::_settingsChanged() QString::fromStdString(result.error().message()), description); } }); + } else { + if(settings.apiKey == "") { + qCDebug(AirMapManagerLog) << "No API key for AirMap"; + } } } diff --git a/src/Airmap/AirMapSettings.cc b/src/Airmap/AirMapSettings.cc index 62ad46a18ee19276a32f126fa1a170507559259e..788661718142feec3420b6fd58970a8d92ae2646 100644 --- a/src/Airmap/AirMapSettings.cc +++ b/src/Airmap/AirMapSettings.cc @@ -15,6 +15,7 @@ DECLARE_SETTINGGROUP(AirMap) { + INIT_SETTINGFACT(usePersonalApiKey); INIT_SETTINGFACT(apiKey); INIT_SETTINGFACT(clientID); INIT_SETTINGFACT(userName); @@ -25,6 +26,7 @@ DECLARE_SETTINGGROUP(AirMap) qmlRegisterUncreatableType("QGroundControl.SettingsManager", 1, 0, "AirMapSettings", "Reference only"); } +DECLARE_SETTINGSFACT(AirMapSettings, usePersonalApiKey) DECLARE_SETTINGSFACT(AirMapSettings, apiKey) DECLARE_SETTINGSFACT(AirMapSettings, clientID) DECLARE_SETTINGSFACT(AirMapSettings, userName) diff --git a/src/Airmap/AirMapSettings.h b/src/Airmap/AirMapSettings.h index d26cc6ebc227350d66f76393a102ef126e7c34a5..36c705cc59b3f25b7a32af5954e400db7aa9c070 100644 --- a/src/Airmap/AirMapSettings.h +++ b/src/Airmap/AirMapSettings.h @@ -19,6 +19,7 @@ public: DEFINE_SETTINGGROUP(AirMap) + DEFINE_SETTINGFACT(usePersonalApiKey) DEFINE_SETTINGFACT(apiKey) DEFINE_SETTINGFACT(clientID) DEFINE_SETTINGFACT(userName) diff --git a/src/Airmap/AirmapSettings.qml b/src/Airmap/AirmapSettings.qml index 1042a96f26672261d838968ed876baad3238de01..7efe9a4268f457b142b865e453774b670f958f60 100644 --- a/src/Airmap/AirmapSettings.qml +++ b/src/Airmap/AirmapSettings.qml @@ -230,10 +230,10 @@ QGCView { QGCCheckBox { id: hasPrivateKey text: qsTr("Personal API Key") + onClicked: QGroundControl.settingsManager.airMapSettings.usePersonalApiKey = checked Layout.columnSpan: 2 Component.onCompleted: { - if(QGroundControl.settingsManager.airMapSettings.apiKey !== "") - checked = true + checked = QGroundControl.settingsManager.airMapSettings.usePersonalApiKey } } Item {