From ac92b53a36db41223328eb41f34e6a2ad8c69929 Mon Sep 17 00:00:00 2001 From: Dan Paulat Date: Thu, 30 Nov 2023 22:51:24 -0600 Subject: [PATCH] Latitude/longitude text boxes are controlled by position manager when method is track --- scwx-qt/source/scwx/qt/ui/settings_dialog.cpp | 48 +++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/scwx-qt/source/scwx/qt/ui/settings_dialog.cpp b/scwx-qt/source/scwx/qt/ui/settings_dialog.cpp index 296e33e0..5bf68ddb 100644 --- a/scwx-qt/source/scwx/qt/ui/settings_dialog.cpp +++ b/scwx-qt/source/scwx/qt/ui/settings_dialog.cpp @@ -4,6 +4,7 @@ #include #include #include +#include #include #include #include @@ -28,6 +29,7 @@ #include #include #include +#include #include #include @@ -194,6 +196,9 @@ public: types::FontCategory selectedFontCategory_ {types::FontCategory::Unknown}; + std::shared_ptr positionManager_ { + manager::PositionManager::Instance()}; + settings::SettingsInterface defaultRadarSite_ {}; settings::SettingsInterface gridWidth_ {}; settings::SettingsInterface gridHeight_ {}; @@ -802,6 +807,27 @@ void SettingsDialogImpl::SetupPalettesAlertsTab() void SettingsDialogImpl::SetupAudioTab() { + QObject::connect(self_->ui->alertAudioLocationMethodComboBox, + &QComboBox::currentTextChanged, + self_, + [this](const QString& text) + { + types::LocationMethod locationMethod = + types::GetLocationMethod(text.toStdString()); + + bool coordinateEntryEnabled = + locationMethod == types::LocationMethod::Fixed; + + self_->ui->alertAudioLatitudeSpinBox->setEnabled( + coordinateEntryEnabled); + self_->ui->alertAudioLongitudeSpinBox->setEnabled( + coordinateEntryEnabled); + self_->ui->resetAlertAudioLatitudeButton->setEnabled( + coordinateEntryEnabled); + self_->ui->resetAlertAudioLongitudeButton->setEnabled( + coordinateEntryEnabled); + }); + settings::AudioSettings& audioSettings = settings::AudioSettings::Instance(); for (const auto& locationMethod : types::LocationMethodIterator()) @@ -862,6 +888,28 @@ void SettingsDialogImpl::SetupAudioTab() audioSettings.alert_enabled(phenomenon)); alertAudioEnabled.SetEditWidget(alertAudioCheckbox); } + + QObject::connect( + positionManager_.get(), + &manager::PositionManager::PositionUpdated, + self_, + [this](const QGeoPositionInfo& info) + { + settings::AudioSettings& audioSettings = + settings::AudioSettings::Instance(); + + if (info.isValid() && + types::GetLocationMethod( + audioSettings.alert_location_method().GetValue()) == + types::LocationMethod::Track) + { + QGeoCoordinate coordinate = info.coordinate(); + self_->ui->alertAudioLatitudeSpinBox->setValue( + coordinate.latitude()); + self_->ui->alertAudioLongitudeSpinBox->setValue( + coordinate.longitude()); + } + }); } void SettingsDialogImpl::SetupTextTab()