Changed Radar Site mode to use its own selection (+default/follow)

This commit is contained in:
AdenKoperczak 2024-07-15 12:46:10 -04:00
parent 146055fb99
commit f7abda15c8
5 changed files with 228 additions and 92 deletions

View file

@ -106,16 +106,23 @@ common::Coordinate AlertManager::Impl::CurrentCoordinate(
} }
else if (locationMethod == types::LocationMethod::RadarSite) else if (locationMethod == types::LocationMethod::RadarSite)
{ {
std::string radarSiteSelection =
audioSettings.alert_radar_site().GetValue();
std::shared_ptr<config::RadarSite> radarSite; std::shared_ptr<config::RadarSite> radarSite;
if (radarSite_ == nullptr) if (radarSiteSelection == "default")
{ {
std::string siteId = std::string siteId = settings::GeneralSettings::Instance()
settings::GeneralSettings::Instance().default_radar_site().GetValue(); .default_radar_site()
.GetValue();
radarSite = config::RadarSite::Get(siteId); radarSite = config::RadarSite::Get(siteId);
} }
else if (radarSiteSelection == "follow")
{
radarSite = radarSite_;
}
else else
{ {
radarSite = radarSite_; radarSite = config::RadarSite::Get(radarSiteSelection);
} }
if (radarSite != nullptr) if (radarSite != nullptr)
@ -145,8 +152,6 @@ void AlertManager::Impl::HandleAlert(const types::TextEventKey& key,
auto alertRadius = units::length::kilometers<double>( auto alertRadius = units::length::kilometers<double>(
audioSettings.alert_radius().GetValue()); audioSettings.alert_radius().GetValue());
logger_->debug("alertRadius: {}", (double)alertRadius);
auto message = textEventManager_->message_list(key).at(messageIndex); auto message = textEventManager_->message_list(key).at(messageIndex);
for (auto& segment : message->segments()) for (auto& segment : message->segments())

View file

@ -38,6 +38,7 @@ public:
alertLatitude_.SetDefault(0.0); alertLatitude_.SetDefault(0.0);
alertLongitude_.SetDefault(0.0); alertLongitude_.SetDefault(0.0);
alertRadius_.SetDefault(0.0); alertRadius_.SetDefault(0.0);
alertRadarSite_.SetDefault("default");
ignoreMissingCodecs_.SetDefault(false); ignoreMissingCodecs_.SetDefault(false);
alertLatitude_.SetMinimum(-90.0); alertLatitude_.SetMinimum(-90.0);
@ -90,6 +91,7 @@ public:
SettingsVariable<std::string> alertLocationMethod_ {"alert_location_method"}; SettingsVariable<std::string> alertLocationMethod_ {"alert_location_method"};
SettingsVariable<double> alertLatitude_ {"alert_latitude"}; SettingsVariable<double> alertLatitude_ {"alert_latitude"};
SettingsVariable<double> alertLongitude_ {"alert_longitude"}; SettingsVariable<double> alertLongitude_ {"alert_longitude"};
SettingsVariable<std::string> alertRadarSite_ {"alert_radar_site"};
SettingsVariable<double> alertRadius_ {"alert_radius"}; SettingsVariable<double> alertRadius_ {"alert_radius"};
SettingsVariable<std::string> alertCounty_ {"alert_county"}; SettingsVariable<std::string> alertCounty_ {"alert_county"};
SettingsVariable<bool> ignoreMissingCodecs_ {"ignore_missing_codecs"}; SettingsVariable<bool> ignoreMissingCodecs_ {"ignore_missing_codecs"};
@ -106,6 +108,7 @@ AudioSettings::AudioSettings() :
&p->alertLocationMethod_, &p->alertLocationMethod_,
&p->alertLatitude_, &p->alertLatitude_,
&p->alertLongitude_, &p->alertLongitude_,
&p->alertRadarSite_,
&p->alertRadius_, &p->alertRadius_,
&p->alertCounty_, &p->alertCounty_,
&p->ignoreMissingCodecs_}); &p->ignoreMissingCodecs_});
@ -139,6 +142,11 @@ SettingsVariable<double>& AudioSettings::alert_longitude() const
return p->alertLongitude_; return p->alertLongitude_;
} }
SettingsVariable<std::string>& AudioSettings::alert_radar_site() const
{
return p->alertRadarSite_;
}
SettingsVariable<double>& AudioSettings::alert_radius() const SettingsVariable<double>& AudioSettings::alert_radius() const
{ {
return p->alertRadius_; return p->alertRadius_;

View file

@ -31,6 +31,7 @@ public:
SettingsVariable<double>& alert_latitude() const; SettingsVariable<double>& alert_latitude() const;
SettingsVariable<double>& alert_longitude() const; SettingsVariable<double>& alert_longitude() const;
SettingsVariable<double>& alert_radius() const; SettingsVariable<double>& alert_radius() const;
SettingsVariable<std::string>& alert_radar_site() const;
SettingsVariable<std::string>& alert_county() const; SettingsVariable<std::string>& alert_county() const;
SettingsVariable<bool>& alert_enabled(awips::Phenomenon phenomenon) const; SettingsVariable<bool>& alert_enabled(awips::Phenomenon phenomenon) const;
SettingsVariable<bool>& ignore_missing_codecs() const; SettingsVariable<bool>& ignore_missing_codecs() const;

View file

@ -105,6 +105,7 @@ public:
explicit SettingsDialogImpl(SettingsDialog* self) : explicit SettingsDialogImpl(SettingsDialog* self) :
self_ {self}, self_ {self},
radarSiteDialog_ {new RadarSiteDialog(self)}, radarSiteDialog_ {new RadarSiteDialog(self)},
alertAudioRadarSiteDialog_ {new RadarSiteDialog(self)},
gpsSourceDialog_ {new SerialPortDialog(self)}, gpsSourceDialog_ {new SerialPortDialog(self)},
countyDialog_ {new CountyDialog(self)}, countyDialog_ {new CountyDialog(self)},
fontDialog_ {new QFontDialog(self)}, fontDialog_ {new QFontDialog(self)},
@ -136,6 +137,7 @@ public:
&alertAudioLocationMethod_, &alertAudioLocationMethod_,
&alertAudioLatitude_, &alertAudioLatitude_,
&alertAudioLongitude_, &alertAudioLongitude_,
&alertAudioRadarSite_,
&alertAudioRadius_, &alertAudioRadius_,
&alertAudioCounty_, &alertAudioCounty_,
&hoverTextWrap_, &hoverTextWrap_,
@ -178,6 +180,7 @@ public:
void ShowColorDialog(QLineEdit* lineEdit, QFrame* frame = nullptr); void ShowColorDialog(QLineEdit* lineEdit, QFrame* frame = nullptr);
void UpdateRadarDialogLocation(const std::string& id); void UpdateRadarDialogLocation(const std::string& id);
void UpdateAlertRadarDialogLocation(const std::string& id);
QFont GetSelectedFont(); QFont GetSelectedFont();
void SelectFontCategory(types::FontCategory fontCategory); void SelectFontCategory(types::FontCategory fontCategory);
@ -202,6 +205,7 @@ public:
SettingsDialog* self_; SettingsDialog* self_;
RadarSiteDialog* radarSiteDialog_; RadarSiteDialog* radarSiteDialog_;
RadarSiteDialog* alertAudioRadarSiteDialog_;
SerialPortDialog* gpsSourceDialog_; SerialPortDialog* gpsSourceDialog_;
CountyDialog* countyDialog_; CountyDialog* countyDialog_;
QFontDialog* fontDialog_; QFontDialog* fontDialog_;
@ -255,6 +259,7 @@ public:
settings::SettingsInterface<std::string> alertAudioLocationMethod_ {}; settings::SettingsInterface<std::string> alertAudioLocationMethod_ {};
settings::SettingsInterface<double> alertAudioLatitude_ {}; settings::SettingsInterface<double> alertAudioLatitude_ {};
settings::SettingsInterface<double> alertAudioLongitude_ {}; settings::SettingsInterface<double> alertAudioLongitude_ {};
settings::SettingsInterface<std::string> alertAudioRadarSite_ {};
settings::SettingsInterface<double> alertAudioRadius_ {}; settings::SettingsInterface<double> alertAudioRadius_ {};
settings::SettingsInterface<std::string> alertAudioCounty_ {}; settings::SettingsInterface<std::string> alertAudioCounty_ {};
@ -343,6 +348,30 @@ void SettingsDialogImpl::ConnectSignals()
} }
}); });
QObject::connect(self_->ui->alertAudioRadarSiteSelectButton,
&QAbstractButton::clicked,
self_,
[this]() { alertAudioRadarSiteDialog_->show(); });
QObject::connect(alertAudioRadarSiteDialog_,
&RadarSiteDialog::accepted,
self_,
[this]()
{
std::string id =
alertAudioRadarSiteDialog_->radar_site();
std::shared_ptr<config::RadarSite> radarSite =
config::RadarSite::Get(id);
if (radarSite != nullptr)
{
self_->ui->alertAudioRadarSiteComboBox
->setCurrentText(QString::fromStdString(
RadarSiteLabel(radarSite)));
}
});
QObject::connect(self_->ui->gpsSourceSelectButton, QObject::connect(self_->ui->gpsSourceSelectButton,
&QAbstractButton::clicked, &QAbstractButton::clicked,
self_, self_,
@ -509,11 +538,18 @@ void SettingsDialogImpl::SetupGeneralTab()
const std::shared_ptr<config::RadarSite>& b) const std::shared_ptr<config::RadarSite>& b)
{ return a->id() < b->id(); }); { return a->id() < b->id(); });
// Add default and follow options to radar sites
self_->ui->alertAudioRadarSiteComboBox->addItem(
QString::fromStdString("default"));
self_->ui->alertAudioRadarSiteComboBox->addItem(
QString::fromStdString("follow"));
// Add sorted radar sites // Add sorted radar sites
for (std::shared_ptr<config::RadarSite>& radarSite : radarSites) for (std::shared_ptr<config::RadarSite>& radarSite : radarSites)
{ {
QString text = QString::fromStdString(RadarSiteLabel(radarSite)); QString text = QString::fromStdString(RadarSiteLabel(radarSite));
self_->ui->radarSiteComboBox->addItem(text); self_->ui->radarSiteComboBox->addItem(text);
self_->ui->alertAudioRadarSiteComboBox->addItem(text);
} }
defaultRadarSite_.SetSettingsVariable(generalSettings.default_radar_site()); defaultRadarSite_.SetSettingsVariable(generalSettings.default_radar_site());
@ -905,6 +941,8 @@ void SettingsDialogImpl::SetupAudioTab()
bool coordinateEntryEnabled = bool coordinateEntryEnabled =
locationMethod == types::LocationMethod::Fixed; locationMethod == types::LocationMethod::Fixed;
bool radarSiteEntryEnable =
locationMethod == types::LocationMethod::RadarSite;
bool radiusEntryEnable = bool radiusEntryEnable =
locationMethod == types::LocationMethod::Fixed || locationMethod == types::LocationMethod::Fixed ||
locationMethod == types::LocationMethod::Track || locationMethod == types::LocationMethod::Track ||
@ -921,6 +959,13 @@ void SettingsDialogImpl::SetupAudioTab()
self_->ui->resetAlertAudioLongitudeButton->setEnabled( self_->ui->resetAlertAudioLongitudeButton->setEnabled(
coordinateEntryEnabled); coordinateEntryEnabled);
self_->ui->alertAudioRadarSiteComboBox->setEnabled(
radarSiteEntryEnable);
self_->ui->alertAudioRadarSiteSelectButton->setEnabled(
radarSiteEntryEnable);
self_->ui->resetAlertAudioRadarSiteButton->setEnabled(
radarSiteEntryEnable);
self_->ui->alertAudioRadiusSpinBox->setEnabled( self_->ui->alertAudioRadiusSpinBox->setEnabled(
radiusEntryEnable); radiusEntryEnable);
self_->ui->resetAlertAudioRadiusButton->setEnabled( self_->ui->resetAlertAudioRadiusButton->setEnabled(
@ -997,12 +1042,48 @@ void SettingsDialogImpl::SetupAudioTab()
alertAudioLongitude_.SetResetButton( alertAudioLongitude_.SetResetButton(
self_->ui->resetAlertAudioLongitudeButton); self_->ui->resetAlertAudioLongitudeButton);
alertAudioRadarSite_.SetSettingsVariable(audioSettings.alert_radar_site());
alertAudioRadarSite_.SetMapFromValueFunction(
[](const std::string& id) -> std::string
{
// Get the radar site associated with the ID
std::shared_ptr<config::RadarSite> radarSite =
config::RadarSite::Get(id);
if (radarSite == nullptr)
{
// No radar site found, just return the ID
return id;
}
// Add location details to the radar site
return RadarSiteLabel(radarSite);
});
alertAudioRadarSite_.SetMapToValueFunction(
[](const std::string& text) -> std::string
{
// Find the position of location details
size_t pos = text.rfind(" (");
if (pos == std::string::npos)
{
// No location details found, just return the text
return text;
}
// Remove location details from the radar site
return text.substr(0, pos);
});
alertAudioRadarSite_.SetEditWidget(self_->ui->alertAudioRadarSiteComboBox);
alertAudioRadarSite_.SetResetButton(
self_->ui->resetAlertAudioRadarSiteButton);
UpdateAlertRadarDialogLocation(audioSettings.alert_radar_site().GetValue());
alertAudioRadius_.SetSettingsVariable(audioSettings.alert_radius()); alertAudioRadius_.SetSettingsVariable(audioSettings.alert_radius());
alertAudioRadius_.SetEditWidget(self_->ui->alertAudioRadiusSpinBox); alertAudioRadius_.SetEditWidget(self_->ui->alertAudioRadiusSpinBox);
alertAudioRadius_.SetResetButton( alertAudioRadius_.SetResetButton(
self_->ui->resetAlertAudioRadiusButton); self_->ui->resetAlertAudioRadiusButton);
alertAudioRadius_.SetUnitLabel(self_->ui->alertAudioRadiusUnitsLabel); alertAudioRadius_.SetUnitLabel(self_->ui->alertAudioRadiusUnitsLabel);
auto alertAudioRadiusUpdateUnits = [this](const std::string& newValue) auto alertAudioRadiusUpdateUnits = [this](const std::string& newValue)
{ {
types::DistanceUnits radiusUnits = types::DistanceUnits radiusUnits =
@ -1304,6 +1385,19 @@ void SettingsDialogImpl::UpdateRadarDialogLocation(const std::string& id)
} }
} }
void SettingsDialogImpl::UpdateAlertRadarDialogLocation(const std::string& id)
{
std::shared_ptr<config::RadarSite> radarSite = config::RadarSite::Get(id);
if (radarSite != nullptr)
{
alertAudioRadarSiteDialog_->HandleMapUpdate(radarSite->latitude(),
radarSite->longitude());
}
}
QFont SettingsDialogImpl::GetSelectedFont() QFont SettingsDialogImpl::GetSelectedFont()
{ {
std::string fontFamily = fontFamilies_.at(selectedFontCategory_) std::string fontFamily = fontFamilies_.at(selectedFontCategory_)

View file

@ -136,7 +136,7 @@
<rect> <rect>
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>270</width> <width>511</width>
<height>647</height> <height>647</height>
</rect> </rect>
</property> </property>
@ -610,7 +610,7 @@
<rect> <rect>
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>80</width> <width>66</width>
<height>18</height> <height>18</height>
</rect> </rect>
</property> </property>
@ -691,15 +691,32 @@
<string>Alerts</string> <string>Alerts</string>
</property> </property>
<layout class="QGridLayout" name="gridLayout_10"> <layout class="QGridLayout" name="gridLayout_10">
<item row="2" column="0"> <item row="3" column="6">
<widget class="QLabel" name="label_14"> <widget class="QToolButton" name="resetAlertAudioLongitudeButton">
<property name="text"> <property name="text">
<string>Latitude</string> <string>...</string>
</property>
<property name="icon">
<iconset resource="../../../../scwx-qt.qrc">
<normaloff>:/res/icons/font-awesome-6/rotate-left-solid.svg</normaloff>:/res/icons/font-awesome-6/rotate-left-solid.svg</iconset>
</property> </property>
</widget> </widget>
</item> </item>
<item row="0" column="1" colspan="2"> <item row="5" column="1" colspan="2">
<widget class="QLineEdit" name="alertAudioSoundLineEdit"/> <widget class="QDoubleSpinBox" name="alertAudioRadiusSpinBox">
<property name="decimals">
<number>2</number>
</property>
<property name="minimum">
<double>0.000000000000000</double>
</property>
<property name="maximum">
<double>9999999999999.000000000000000</double>
</property>
<property name="singleStep">
<double>0.010000000000000</double>
</property>
</widget>
</item> </item>
<item row="2" column="6"> <item row="2" column="6">
<widget class="QToolButton" name="resetAlertAudioLatitudeButton"> <widget class="QToolButton" name="resetAlertAudioLatitudeButton">
@ -712,11 +729,38 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="0" column="5"> <item row="1" column="1" colspan="2">
<widget class="QToolButton" name="alertAudioSoundStopButton"> <widget class="QComboBox" name="alertAudioLocationMethodComboBox">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
</widget>
</item>
<item row="7" column="0">
<widget class="QLabel" name="label_19">
<property name="text">
<string>County</string>
</property>
</widget>
</item>
<item row="0" column="6">
<widget class="QToolButton" name="resetAlertAudioSoundButton">
<property name="text">
<string>...</string>
</property>
<property name="icon"> <property name="icon">
<iconset resource="../../../../scwx-qt.qrc"> <iconset resource="../../../../scwx-qt.qrc">
<normaloff>:/res/icons/font-awesome-6/stop-solid.svg</normaloff>:/res/icons/font-awesome-6/stop-solid.svg</iconset> <normaloff>:/res/icons/font-awesome-6/rotate-left-solid.svg</normaloff>:/res/icons/font-awesome-6/rotate-left-solid.svg</iconset>
</property>
</widget>
</item>
<item row="5" column="3">
<widget class="QLabel" name="alertAudioRadiusUnitsLabel">
<property name="text">
<string/>
</property> </property>
</widget> </widget>
</item> </item>
@ -736,24 +780,6 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="5" column="3">
<widget class="QToolButton" name="alertAudioCountySelectButton">
<property name="text">
<string>...</string>
</property>
</widget>
</item>
<item row="0" column="6">
<widget class="QToolButton" name="resetAlertAudioSoundButton">
<property name="text">
<string>...</string>
</property>
<property name="icon">
<iconset resource="../../../../scwx-qt.qrc">
<normaloff>:/res/icons/font-awesome-6/rotate-left-solid.svg</normaloff>:/res/icons/font-awesome-6/rotate-left-solid.svg</iconset>
</property>
</widget>
</item>
<item row="1" column="6"> <item row="1" column="6">
<widget class="QToolButton" name="resetAlertAudioLocationMethodButton"> <widget class="QToolButton" name="resetAlertAudioLocationMethodButton">
<property name="text"> <property name="text">
@ -765,14 +791,23 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="0" column="4"> <item row="0" column="3">
<widget class="QToolButton" name="alertAudioSoundTestButton"> <widget class="QToolButton" name="alertAudioSoundSelectButton">
<property name="icon"> <property name="text">
<iconset resource="../../../../scwx-qt.qrc"> <string>...</string>
<normaloff>:/res/icons/font-awesome-6/play-solid.svg</normaloff>:/res/icons/font-awesome-6/play-solid.svg</iconset>
</property> </property>
</widget> </widget>
</item> </item>
<item row="7" column="3">
<widget class="QToolButton" name="alertAudioCountySelectButton">
<property name="text">
<string>...</string>
</property>
</widget>
</item>
<item row="0" column="1" colspan="2">
<widget class="QLineEdit" name="alertAudioSoundLineEdit"/>
</item>
<item row="2" column="1" colspan="2"> <item row="2" column="1" colspan="2">
<widget class="QDoubleSpinBox" name="alertAudioLatitudeSpinBox"> <widget class="QDoubleSpinBox" name="alertAudioLatitudeSpinBox">
<property name="decimals"> <property name="decimals">
@ -789,39 +824,16 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="3" column="0"> <item row="0" column="5">
<widget class="QLabel" name="label_16"> <widget class="QToolButton" name="alertAudioSoundStopButton">
<property name="text"> <property name="icon">
<string>Longitude</string> <iconset resource="../../../../scwx-qt.qrc">
</property> <normaloff>:/res/icons/font-awesome-6/stop-solid.svg</normaloff>:/res/icons/font-awesome-6/stop-solid.svg</iconset>
</widget>
</item>
<item row="5" column="0">
<widget class="QLabel" name="label_19">
<property name="text">
<string>County</string>
</property>
</widget>
</item>
<item row="0" column="3">
<widget class="QToolButton" name="alertAudioSoundSelectButton">
<property name="text">
<string>...</string>
</property>
</widget>
</item>
<item row="1" column="1" colspan="2">
<widget class="QComboBox" name="alertAudioLocationMethodComboBox">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property> </property>
</widget> </widget>
</item> </item>
<item row="5" column="6"> <item row="5" column="6">
<widget class="QToolButton" name="resetAlertAudioCountyButton"> <widget class="QToolButton" name="resetAlertAudioRadiusButton">
<property name="text"> <property name="text">
<string>...</string> <string>...</string>
</property> </property>
@ -831,6 +843,13 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="2" column="0">
<widget class="QLabel" name="label_14">
<property name="text">
<string>Latitude</string>
</property>
</widget>
</item>
<item row="0" column="0"> <item row="0" column="0">
<widget class="QLabel" name="label_17"> <widget class="QLabel" name="label_17">
<property name="text"> <property name="text">
@ -838,7 +857,7 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="5" column="2"> <item row="7" column="2">
<widget class="QLabel" name="alertAudioCountyLabel"> <widget class="QLabel" name="alertAudioCountyLabel">
<property name="sizePolicy"> <property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Preferred"> <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
@ -851,7 +870,15 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="5" column="1"> <item row="0" column="4">
<widget class="QToolButton" name="alertAudioSoundTestButton">
<property name="icon">
<iconset resource="../../../../scwx-qt.qrc">
<normaloff>:/res/icons/font-awesome-6/play-solid.svg</normaloff>:/res/icons/font-awesome-6/play-solid.svg</iconset>
</property>
</widget>
</item>
<item row="7" column="1">
<widget class="QLineEdit" name="alertAudioCountyLineEdit"> <widget class="QLineEdit" name="alertAudioCountyLineEdit">
<property name="sizePolicy"> <property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Fixed"> <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
@ -871,8 +898,8 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="3" column="6"> <item row="7" column="6">
<widget class="QToolButton" name="resetAlertAudioLongitudeButton"> <widget class="QToolButton" name="resetAlertAudioCountyButton">
<property name="text"> <property name="text">
<string>...</string> <string>...</string>
</property> </property>
@ -882,31 +909,36 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="4" column="0"> <item row="5" column="0">
<widget class="QLabel" name="alertAudioRadiusLabel"> <widget class="QLabel" name="alertAudioRadiusLabel">
<property name="text"> <property name="text">
<string>Radius</string> <string>Radius</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="4" column="1" colspan="2"> <item row="3" column="0">
<widget class="QDoubleSpinBox" name="alertAudioRadiusSpinBox"> <widget class="QLabel" name="label_16">
<property name="decimals"> <property name="text">
<number>2</number> <string>Longitude</string>
</property> </property>
<property name="minimum"> </widget>
<double>0.000000000000000</double> </item>
<item row="4" column="0">
<widget class="QLabel" name="label_28">
<property name="text">
<string>Radar Site</string>
</property> </property>
<property name="maximum"> </widget>
<double>9999999999999.000000000000000</double> </item>
</property> <item row="4" column="3">
<property name="singleStep"> <widget class="QToolButton" name="alertAudioRadarSiteSelectButton">
<double>0.010000000000000</double> <property name="text">
<string>...</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="4" column="6"> <item row="4" column="6">
<widget class="QToolButton" name="resetAlertAudioRadiusButton"> <widget class="QToolButton" name="resetAlertAudioRadarSiteButton">
<property name="text"> <property name="text">
<string>...</string> <string>...</string>
</property> </property>
@ -916,12 +948,8 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="4" column="3"> <item row="4" column="1" colspan="2">
<widget class="QLabel" name="alertAudioRadiusUnitsLabel"> <widget class="QComboBox" name="alertAudioRadarSiteComboBox"/>
<property name="text">
<string/>
</property>
</widget>
</item> </item>
</layout> </layout>
</widget> </widget>