mirror of
https://github.com/ciphervance/supercell-wx.git
synced 2025-11-01 10:00:06 +00:00
added inital radar site based alerts (only default radar site)
This commit is contained in:
parent
2bc971eb94
commit
dea53bddb4
7 changed files with 197 additions and 128 deletions
|
|
@ -6,6 +6,8 @@
|
||||||
#include <scwx/qt/types/location_types.hpp>
|
#include <scwx/qt/types/location_types.hpp>
|
||||||
#include <scwx/qt/util/geographic_lib.hpp>
|
#include <scwx/qt/util/geographic_lib.hpp>
|
||||||
#include <scwx/util/logger.hpp>
|
#include <scwx/util/logger.hpp>
|
||||||
|
#include <scwx/qt/config/radar_site.hpp>
|
||||||
|
#include <scwx/qt/settings/general_settings.hpp>
|
||||||
|
|
||||||
#include <boost/asio/post.hpp>
|
#include <boost/asio/post.hpp>
|
||||||
#include <boost/asio/thread_pool.hpp>
|
#include <boost/asio/thread_pool.hpp>
|
||||||
|
|
@ -85,8 +87,7 @@ common::Coordinate AlertManager::Impl::CurrentCoordinate(
|
||||||
settings::AudioSettings& audioSettings = settings::AudioSettings::Instance();
|
settings::AudioSettings& audioSettings = settings::AudioSettings::Instance();
|
||||||
common::Coordinate coordinate {};
|
common::Coordinate coordinate {};
|
||||||
|
|
||||||
if (locationMethod == types::LocationMethod::Fixed ||
|
if (locationMethod == types::LocationMethod::Fixed)
|
||||||
locationMethod == types::LocationMethod::Radius)
|
|
||||||
{
|
{
|
||||||
coordinate.latitude_ = audioSettings.alert_latitude().GetValue();
|
coordinate.latitude_ = audioSettings.alert_latitude().GetValue();
|
||||||
coordinate.longitude_ = audioSettings.alert_longitude().GetValue();
|
coordinate.longitude_ = audioSettings.alert_longitude().GetValue();
|
||||||
|
|
@ -101,6 +102,14 @@ common::Coordinate AlertManager::Impl::CurrentCoordinate(
|
||||||
coordinate.longitude_ = trackedCoordinate.longitude();
|
coordinate.longitude_ = trackedCoordinate.longitude();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if (locationMethod == types::LocationMethod::RadarSite)
|
||||||
|
{
|
||||||
|
std::string siteId =
|
||||||
|
settings::GeneralSettings::Instance().default_radar_site().GetValue();
|
||||||
|
auto radarSite = config::RadarSite::Get(siteId);
|
||||||
|
coordinate.latitude_ = radarSite->latitude();
|
||||||
|
coordinate.longitude_ = radarSite->longitude();
|
||||||
|
}
|
||||||
|
|
||||||
return coordinate;
|
return coordinate;
|
||||||
}
|
}
|
||||||
|
|
@ -119,6 +128,8 @@ void AlertManager::Impl::HandleAlert(const types::TextEventKey& key,
|
||||||
audioSettings.alert_location_method().GetValue());
|
audioSettings.alert_location_method().GetValue());
|
||||||
common::Coordinate currentCoordinate = CurrentCoordinate(locationMethod);
|
common::Coordinate currentCoordinate = CurrentCoordinate(locationMethod);
|
||||||
std::string alertCounty = audioSettings.alert_county().GetValue();
|
std::string alertCounty = audioSettings.alert_county().GetValue();
|
||||||
|
auto alertRadius =
|
||||||
|
units::length::meters<double>(audioSettings.alert_radius().GetValue());
|
||||||
|
|
||||||
auto message = textEventManager_->message_list(key).at(messageIndex);
|
auto message = textEventManager_->message_list(key).at(messageIndex);
|
||||||
|
|
||||||
|
|
@ -146,22 +157,16 @@ void AlertManager::Impl::HandleAlert(const types::TextEventKey& key,
|
||||||
bool activeAtLocation = (locationMethod == types::LocationMethod::All);
|
bool activeAtLocation = (locationMethod == types::LocationMethod::All);
|
||||||
|
|
||||||
if (locationMethod == types::LocationMethod::Fixed ||
|
if (locationMethod == types::LocationMethod::Fixed ||
|
||||||
locationMethod == types::LocationMethod::Track)
|
locationMethod == types::LocationMethod::Track ||
|
||||||
|
locationMethod == types::LocationMethod::RadarSite)
|
||||||
{
|
{
|
||||||
// Determine if the alert is active at the current coordinte
|
// Determine if the alert is active at the current coordinte
|
||||||
auto alertCoordinates = segment->codedLocation_->coordinates();
|
auto alertCoordinates = segment->codedLocation_->coordinates();
|
||||||
|
|
||||||
activeAtLocation = util::GeographicLib::AreaContainsPoint(
|
|
||||||
alertCoordinates, currentCoordinate);
|
|
||||||
}
|
|
||||||
else if (locationMethod == types::LocationMethod::Radius)
|
|
||||||
{
|
|
||||||
auto alertCoordinates = segment->codedLocation_->coordinates();
|
|
||||||
|
|
||||||
activeAtLocation = util::GeographicLib::AreaInRangeOfPoint(
|
activeAtLocation = util::GeographicLib::AreaInRangeOfPoint(
|
||||||
alertCoordinates,
|
alertCoordinates,
|
||||||
currentCoordinate,
|
currentCoordinate,
|
||||||
units::length::meters<double>(1e6));
|
alertRadius);
|
||||||
}
|
}
|
||||||
else if (locationMethod == types::LocationMethod::County)
|
else if (locationMethod == types::LocationMethod::County)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -37,12 +37,16 @@ public:
|
||||||
alertLocationMethod_.SetDefault(defaultAlertLocationMethodValue);
|
alertLocationMethod_.SetDefault(defaultAlertLocationMethodValue);
|
||||||
alertLatitude_.SetDefault(0.0);
|
alertLatitude_.SetDefault(0.0);
|
||||||
alertLongitude_.SetDefault(0.0);
|
alertLongitude_.SetDefault(0.0);
|
||||||
|
alertRadius_.SetDefault(0.0);
|
||||||
ignoreMissingCodecs_.SetDefault(false);
|
ignoreMissingCodecs_.SetDefault(false);
|
||||||
|
|
||||||
alertLatitude_.SetMinimum(-90.0);
|
alertLatitude_.SetMinimum(-90.0);
|
||||||
alertLatitude_.SetMaximum(90.0);
|
alertLatitude_.SetMaximum(90.0);
|
||||||
alertLongitude_.SetMinimum(-180.0);
|
alertLongitude_.SetMinimum(-180.0);
|
||||||
alertLongitude_.SetMaximum(180.0);
|
alertLongitude_.SetMaximum(180.0);
|
||||||
|
alertRadius_.SetMinimum(0.0);
|
||||||
|
alertRadius_.SetMaximum(9999999999);
|
||||||
|
|
||||||
|
|
||||||
alertLocationMethod_.SetValidator(
|
alertLocationMethod_.SetValidator(
|
||||||
SCWX_SETTINGS_ENUM_VALIDATOR(types::LocationMethod,
|
SCWX_SETTINGS_ENUM_VALIDATOR(types::LocationMethod,
|
||||||
|
|
@ -86,6 +90,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<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"};
|
||||||
|
|
||||||
|
|
@ -101,6 +106,7 @@ AudioSettings::AudioSettings() :
|
||||||
&p->alertLocationMethod_,
|
&p->alertLocationMethod_,
|
||||||
&p->alertLatitude_,
|
&p->alertLatitude_,
|
||||||
&p->alertLongitude_,
|
&p->alertLongitude_,
|
||||||
|
&p->alertRadius_,
|
||||||
&p->alertCounty_,
|
&p->alertCounty_,
|
||||||
&p->ignoreMissingCodecs_});
|
&p->ignoreMissingCodecs_});
|
||||||
RegisterVariables(p->variables_);
|
RegisterVariables(p->variables_);
|
||||||
|
|
@ -133,6 +139,11 @@ SettingsVariable<double>& AudioSettings::alert_longitude() const
|
||||||
return p->alertLongitude_;
|
return p->alertLongitude_;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SettingsVariable<double>& AudioSettings::alert_radius() const
|
||||||
|
{
|
||||||
|
return p->alertRadius_;
|
||||||
|
}
|
||||||
|
|
||||||
SettingsVariable<std::string>& AudioSettings::alert_county() const
|
SettingsVariable<std::string>& AudioSettings::alert_county() const
|
||||||
{
|
{
|
||||||
return p->alertCounty_;
|
return p->alertCounty_;
|
||||||
|
|
@ -166,6 +177,7 @@ bool operator==(const AudioSettings& lhs, const AudioSettings& rhs)
|
||||||
lhs.p->alertLocationMethod_ == rhs.p->alertLocationMethod_ &&
|
lhs.p->alertLocationMethod_ == rhs.p->alertLocationMethod_ &&
|
||||||
lhs.p->alertLatitude_ == rhs.p->alertLatitude_ &&
|
lhs.p->alertLatitude_ == rhs.p->alertLatitude_ &&
|
||||||
lhs.p->alertLongitude_ == rhs.p->alertLongitude_ &&
|
lhs.p->alertLongitude_ == rhs.p->alertLongitude_ &&
|
||||||
|
lhs.p->alertRadius_ == rhs.p->alertRadius_ &&
|
||||||
lhs.p->alertCounty_ == rhs.p->alertCounty_ &&
|
lhs.p->alertCounty_ == rhs.p->alertCounty_ &&
|
||||||
lhs.p->alertEnabled_ == rhs.p->alertEnabled_);
|
lhs.p->alertEnabled_ == rhs.p->alertEnabled_);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -30,6 +30,7 @@ public:
|
||||||
SettingsVariable<std::string>& alert_location_method() const;
|
SettingsVariable<std::string>& alert_location_method() const;
|
||||||
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<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;
|
||||||
|
|
|
||||||
|
|
@ -14,8 +14,8 @@ namespace types
|
||||||
|
|
||||||
static const std::unordered_map<LocationMethod, std::string>
|
static const std::unordered_map<LocationMethod, std::string>
|
||||||
locationMethodName_ {{LocationMethod::Fixed, "Fixed"},
|
locationMethodName_ {{LocationMethod::Fixed, "Fixed"},
|
||||||
{LocationMethod::Radius, "Radius"},
|
|
||||||
{LocationMethod::Track, "Track"},
|
{LocationMethod::Track, "Track"},
|
||||||
|
{LocationMethod::RadarSite, "RadarSite"},
|
||||||
{LocationMethod::County, "County"},
|
{LocationMethod::County, "County"},
|
||||||
{LocationMethod::All, "All"},
|
{LocationMethod::All, "All"},
|
||||||
{LocationMethod::Unknown, "?"}};
|
{LocationMethod::Unknown, "?"}};
|
||||||
|
|
|
||||||
|
|
@ -14,8 +14,8 @@ namespace types
|
||||||
enum class LocationMethod
|
enum class LocationMethod
|
||||||
{
|
{
|
||||||
Fixed,
|
Fixed,
|
||||||
Radius,
|
|
||||||
Track,
|
Track,
|
||||||
|
RadarSite,
|
||||||
County,
|
County,
|
||||||
All,
|
All,
|
||||||
Unknown
|
Unknown
|
||||||
|
|
|
||||||
|
|
@ -134,6 +134,7 @@ public:
|
||||||
&alertAudioLocationMethod_,
|
&alertAudioLocationMethod_,
|
||||||
&alertAudioLatitude_,
|
&alertAudioLatitude_,
|
||||||
&alertAudioLongitude_,
|
&alertAudioLongitude_,
|
||||||
|
&alertAudioRadius_,
|
||||||
&alertAudioCounty_,
|
&alertAudioCounty_,
|
||||||
&hoverTextWrap_,
|
&hoverTextWrap_,
|
||||||
&tooltipMethod_,
|
&tooltipMethod_,
|
||||||
|
|
@ -252,6 +253,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<double> alertAudioRadius_ {};
|
||||||
settings::SettingsInterface<std::string> alertAudioCounty_ {};
|
settings::SettingsInterface<std::string> alertAudioCounty_ {};
|
||||||
|
|
||||||
std::unordered_map<awips::Phenomenon, settings::SettingsInterface<bool>>
|
std::unordered_map<awips::Phenomenon, settings::SettingsInterface<bool>>
|
||||||
|
|
@ -474,6 +476,7 @@ void SettingsDialogImpl::ConnectSignals()
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case QDialogButtonBox::ButtonRole::ResetRole: // Restore Defaults
|
case QDialogButtonBox::ButtonRole::ResetRole: // Restore Defaults
|
||||||
|
logger_->info("ButtonRole Reset");
|
||||||
ResetToDefault();
|
ResetToDefault();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
@ -900,6 +903,10 @@ void SettingsDialogImpl::SetupAudioTab()
|
||||||
|
|
||||||
bool coordinateEntryEnabled =
|
bool coordinateEntryEnabled =
|
||||||
locationMethod == types::LocationMethod::Fixed;
|
locationMethod == types::LocationMethod::Fixed;
|
||||||
|
bool radiusEntryEnable =
|
||||||
|
locationMethod == types::LocationMethod::Fixed ||
|
||||||
|
locationMethod == types::LocationMethod::Track ||
|
||||||
|
locationMethod == types::LocationMethod::RadarSite;
|
||||||
bool countyEntryEnabled =
|
bool countyEntryEnabled =
|
||||||
locationMethod == types::LocationMethod::County;
|
locationMethod == types::LocationMethod::County;
|
||||||
|
|
||||||
|
|
@ -912,6 +919,11 @@ void SettingsDialogImpl::SetupAudioTab()
|
||||||
self_->ui->resetAlertAudioLongitudeButton->setEnabled(
|
self_->ui->resetAlertAudioLongitudeButton->setEnabled(
|
||||||
coordinateEntryEnabled);
|
coordinateEntryEnabled);
|
||||||
|
|
||||||
|
self_->ui->alertAudioRadiusSpinBox->setEnabled(
|
||||||
|
radiusEntryEnable);
|
||||||
|
self_->ui->resetAlertAudioRadiusButton->setEnabled(
|
||||||
|
radiusEntryEnable);
|
||||||
|
|
||||||
self_->ui->alertAudioCountyLineEdit->setEnabled(countyEntryEnabled);
|
self_->ui->alertAudioCountyLineEdit->setEnabled(countyEntryEnabled);
|
||||||
self_->ui->alertAudioCountySelectButton->setEnabled(
|
self_->ui->alertAudioCountySelectButton->setEnabled(
|
||||||
countyEntryEnabled);
|
countyEntryEnabled);
|
||||||
|
|
@ -983,6 +995,11 @@ void SettingsDialogImpl::SetupAudioTab()
|
||||||
alertAudioLongitude_.SetResetButton(
|
alertAudioLongitude_.SetResetButton(
|
||||||
self_->ui->resetAlertAudioLongitudeButton);
|
self_->ui->resetAlertAudioLongitudeButton);
|
||||||
|
|
||||||
|
alertAudioRadius_.SetSettingsVariable(audioSettings.alert_radius());
|
||||||
|
alertAudioRadius_.SetEditWidget(self_->ui->alertAudioRadiusSpinBox);
|
||||||
|
alertAudioRadius_.SetResetButton(
|
||||||
|
self_->ui->resetAlertAudioRadiusButton);
|
||||||
|
|
||||||
auto& alertAudioPhenomena = types::GetAlertAudioPhenomena();
|
auto& alertAudioPhenomena = types::GetAlertAudioPhenomena();
|
||||||
auto alertAudioLayout =
|
auto alertAudioLayout =
|
||||||
static_cast<QGridLayout*>(self_->ui->alertAudioGroupBox->layout());
|
static_cast<QGridLayout*>(self_->ui->alertAudioGroupBox->layout());
|
||||||
|
|
|
||||||
|
|
@ -698,6 +698,62 @@
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
<item row="0" column="1" colspan="2">
|
||||||
|
<widget class="QLineEdit" name="alertAudioSoundLineEdit"/>
|
||||||
|
</item>
|
||||||
|
<item row="2" column="6">
|
||||||
|
<widget class="QToolButton" name="resetAlertAudioLatitudeButton">
|
||||||
|
<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="0" column="5">
|
||||||
|
<widget class="QToolButton" name="alertAudioSoundStopButton">
|
||||||
|
<property name="icon">
|
||||||
|
<iconset resource="../../../../scwx-qt.qrc">
|
||||||
|
<normaloff>:/res/icons/font-awesome-6/stop-solid.svg</normaloff>:/res/icons/font-awesome-6/stop-solid.svg</iconset>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="3" column="1" colspan="2">
|
||||||
|
<widget class="QDoubleSpinBox" name="alertAudioLongitudeSpinBox">
|
||||||
|
<property name="decimals">
|
||||||
|
<number>4</number>
|
||||||
|
</property>
|
||||||
|
<property name="minimum">
|
||||||
|
<double>-180.000000000000000</double>
|
||||||
|
</property>
|
||||||
|
<property name="maximum">
|
||||||
|
<double>180.000000000000000</double>
|
||||||
|
</property>
|
||||||
|
<property name="singleStep">
|
||||||
|
<double>0.000100000000000</double>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</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">
|
||||||
|
|
@ -709,6 +765,30 @@
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
<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="2" column="1" colspan="2">
|
||||||
|
<widget class="QDoubleSpinBox" name="alertAudioLatitudeSpinBox">
|
||||||
|
<property name="decimals">
|
||||||
|
<number>4</number>
|
||||||
|
</property>
|
||||||
|
<property name="minimum">
|
||||||
|
<double>-90.000000000000000</double>
|
||||||
|
</property>
|
||||||
|
<property name="maximum">
|
||||||
|
<double>90.000000000000000</double>
|
||||||
|
</property>
|
||||||
|
<property name="singleStep">
|
||||||
|
<double>0.000100000000000</double>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
<item row="3" column="0">
|
<item row="3" column="0">
|
||||||
<widget class="QLabel" name="label_16">
|
<widget class="QLabel" name="label_16">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
|
|
@ -716,6 +796,13 @@
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</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">
|
<item row="0" column="3">
|
||||||
<widget class="QToolButton" name="alertAudioSoundSelectButton">
|
<widget class="QToolButton" name="alertAudioSoundSelectButton">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
|
|
@ -723,6 +810,60 @@
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</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>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="5" column="6">
|
||||||
|
<widget class="QToolButton" name="resetAlertAudioCountyButton">
|
||||||
|
<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="0" column="0">
|
||||||
|
<widget class="QLabel" name="label_17">
|
||||||
|
<property name="text">
|
||||||
|
<string>Sound</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="5" column="2">
|
||||||
|
<widget class="QLabel" name="alertAudioCountyLabel">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Expanding" vsizetype="Preferred">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string/>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="5" column="1">
|
||||||
|
<widget class="QLineEdit" name="alertAudioCountyLineEdit">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="readOnly">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
<item row="1" column="0">
|
<item row="1" column="0">
|
||||||
<widget class="QLabel" name="label_12">
|
<widget class="QLabel" name="label_12">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
|
|
@ -741,105 +882,31 @@
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="0" column="5">
|
|
||||||
<widget class="QToolButton" name="alertAudioSoundStopButton">
|
|
||||||
<property name="icon">
|
|
||||||
<iconset resource="../../../../scwx-qt.qrc">
|
|
||||||
<normaloff>:/res/icons/font-awesome-6/stop-solid.svg</normaloff>:/res/icons/font-awesome-6/stop-solid.svg</iconset>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="2" column="6">
|
|
||||||
<widget class="QToolButton" name="resetAlertAudioLatitudeButton">
|
|
||||||
<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="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="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="0" column="0">
|
|
||||||
<widget class="QLabel" name="label_17">
|
|
||||||
<property name="text">
|
|
||||||
<string>Sound</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="4" column="0">
|
<item row="4" column="0">
|
||||||
<widget class="QLabel" name="label_19">
|
<widget class="QLabel" name="label_28">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>County</string>
|
<string>Radius</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="3" column="1" colspan="2">
|
<item row="4" column="1" colspan="2">
|
||||||
<widget class="QDoubleSpinBox" name="alertAudioLongitudeSpinBox">
|
<widget class="QDoubleSpinBox" name="alertAudioRadiusSpinBox">
|
||||||
<property name="decimals">
|
<property name="decimals">
|
||||||
<number>4</number>
|
<number>4</number>
|
||||||
</property>
|
</property>
|
||||||
<property name="minimum">
|
<property name="minimum">
|
||||||
<double>-180.000000000000000</double>
|
<double>0.000000000000000</double>
|
||||||
</property>
|
</property>
|
||||||
<property name="maximum">
|
<property name="maximum">
|
||||||
<double>180.000000000000000</double>
|
<double>9999999999999.000000000000000</double>
|
||||||
</property>
|
</property>
|
||||||
<property name="singleStep">
|
<property name="singleStep">
|
||||||
<double>0.000100000000000</double>
|
<double>0.010000000000000</double>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="2" column="1" colspan="2">
|
|
||||||
<widget class="QDoubleSpinBox" name="alertAudioLatitudeSpinBox">
|
|
||||||
<property name="decimals">
|
|
||||||
<number>4</number>
|
|
||||||
</property>
|
|
||||||
<property name="minimum">
|
|
||||||
<double>-90.000000000000000</double>
|
|
||||||
</property>
|
|
||||||
<property name="maximum">
|
|
||||||
<double>90.000000000000000</double>
|
|
||||||
</property>
|
|
||||||
<property name="singleStep">
|
|
||||||
<double>0.000100000000000</double>
|
|
||||||
</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>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="0" column="1" colspan="2">
|
|
||||||
<widget class="QLineEdit" name="alertAudioSoundLineEdit"/>
|
|
||||||
</item>
|
|
||||||
<item row="4" column="6">
|
<item row="4" column="6">
|
||||||
<widget class="QToolButton" name="resetAlertAudioCountyButton">
|
<widget class="QToolButton" name="resetAlertAudioRadiusButton">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>...</string>
|
<string>...</string>
|
||||||
</property>
|
</property>
|
||||||
|
|
@ -849,39 +916,6 @@
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="4" column="3">
|
|
||||||
<widget class="QToolButton" name="alertAudioCountySelectButton">
|
|
||||||
<property name="text">
|
|
||||||
<string>...</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="4" column="2">
|
|
||||||
<widget class="QLabel" name="alertAudioCountyLabel">
|
|
||||||
<property name="sizePolicy">
|
|
||||||
<sizepolicy hsizetype="Expanding" vsizetype="Preferred">
|
|
||||||
<horstretch>0</horstretch>
|
|
||||||
<verstretch>0</verstretch>
|
|
||||||
</sizepolicy>
|
|
||||||
</property>
|
|
||||||
<property name="text">
|
|
||||||
<string/>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="4" column="1">
|
|
||||||
<widget class="QLineEdit" name="alertAudioCountyLineEdit">
|
|
||||||
<property name="sizePolicy">
|
|
||||||
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
|
|
||||||
<horstretch>0</horstretch>
|
|
||||||
<verstretch>0</verstretch>
|
|
||||||
</sizepolicy>
|
|
||||||
</property>
|
|
||||||
<property name="readOnly">
|
|
||||||
<bool>true</bool>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue