Radar site selection dialog in settings

This commit is contained in:
Dan Paulat 2022-12-21 15:41:49 -06:00
parent 9b5b841903
commit a6974e31a2
2 changed files with 73 additions and 23 deletions

View file

@ -5,6 +5,7 @@
#include <scwx/qt/config/radar_site.hpp> #include <scwx/qt/config/radar_site.hpp>
#include <scwx/qt/manager/settings_manager.hpp> #include <scwx/qt/manager/settings_manager.hpp>
#include <scwx/qt/settings/settings_interface.hpp> #include <scwx/qt/settings/settings_interface.hpp>
#include <scwx/qt/ui/radar_site_dialog.hpp>
#include <format> #include <format>
@ -46,14 +47,22 @@ static const std::array<std::pair<std::string, std::string>, 17>
class SettingsDialogImpl class SettingsDialogImpl
{ {
public: public:
explicit SettingsDialogImpl(SettingsDialog* self) : self_ {self} {} explicit SettingsDialogImpl(SettingsDialog* self) :
self_ {self}, radarSiteDialog_ {new RadarSiteDialog(self)}
{
}
~SettingsDialogImpl() = default; ~SettingsDialogImpl() = default;
void ConnectSignals();
void SetupGeneralTab(); void SetupGeneralTab();
void SetupPalettesColorTablesTab(); void SetupPalettesColorTablesTab();
void SetupPalettesAlertsTab(); void SetupPalettesAlertsTab();
SettingsDialog* self_; static std::string
RadarSiteLabel(std::shared_ptr<config::RadarSite>& radarSite);
SettingsDialog* self_;
RadarSiteDialog* radarSiteDialog_;
settings::SettingsInterface<std::string> defaultRadarSite_ {}; settings::SettingsInterface<std::string> defaultRadarSite_ {};
settings::SettingsInterface<std::vector<std::int64_t>> fontSizes_ {}; settings::SettingsInterface<std::vector<std::int64_t>> fontSizes_ {};
@ -82,10 +91,7 @@ SettingsDialog::SettingsDialog(QWidget* parent) :
// Palettes > Alerts // Palettes > Alerts
p->SetupPalettesAlertsTab(); p->SetupPalettesAlertsTab();
connect(ui->listWidget, p->ConnectSignals();
&QListWidget::currentRowChanged,
ui->stackedWidget,
&QStackedWidget::setCurrentIndex);
} }
SettingsDialog::~SettingsDialog() SettingsDialog::~SettingsDialog()
@ -93,6 +99,39 @@ SettingsDialog::~SettingsDialog()
delete ui; delete ui;
} }
void SettingsDialogImpl::ConnectSignals()
{
QObject::connect(self_->ui->listWidget,
&QListWidget::currentRowChanged,
self_->ui->stackedWidget,
&QStackedWidget::setCurrentIndex);
QObject::connect(self_->ui->radarSiteSelectButton,
&QAbstractButton::clicked,
self_,
[this]() { radarSiteDialog_->show(); });
QObject::connect(radarSiteDialog_,
&RadarSiteDialog::accepted,
self_,
[this]()
{
std::string id = radarSiteDialog_->radar_site();
std::shared_ptr<config::RadarSite> radarSite =
config::RadarSite::Get(id);
if (radarSite != nullptr)
{
self_->ui->radarSiteComboBox->setCurrentText(
QString::fromStdString(RadarSiteLabel(radarSite)));
}
});
// TODO: HandleMapUpdate for RadarSiteDialog, based on currently selected
// radar site
}
void SettingsDialogImpl::SetupGeneralTab() void SettingsDialogImpl::SetupGeneralTab()
{ {
auto radarSites = config::RadarSite::GetAll(); auto radarSites = config::RadarSite::GetAll();
@ -107,8 +146,7 @@ void SettingsDialogImpl::SetupGeneralTab()
// 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( QString text = QString::fromStdString(RadarSiteLabel(radarSite));
std::format("{} ({})", radarSite->id(), radarSite->location_name()));
self_->ui->radarSiteComboBox->addItem(text); self_->ui->radarSiteComboBox->addItem(text);
} }
@ -130,8 +168,7 @@ void SettingsDialogImpl::SetupGeneralTab()
} }
// Add location details to the radar site // Add location details to the radar site
return std::format( return RadarSiteLabel(radarSite);
"{} ({})", radarSite->id(), radarSite->location_name());
}); });
defaultRadarSite_.SetMapToValueFunction( defaultRadarSite_.SetMapToValueFunction(
[](const std::string& text) -> std::string [](const std::string& text) -> std::string
@ -268,6 +305,12 @@ void SettingsDialogImpl::SetupPalettesAlertsTab()
} }
} }
std::string SettingsDialogImpl::RadarSiteLabel(
std::shared_ptr<config::RadarSite>& radarSite)
{
return std::format("{} ({})", radarSite->id(), radarSite->location_name());
}
} // namespace ui } // namespace ui
} // namespace qt } // namespace qt
} // namespace scwx } // namespace scwx

View file

@ -126,7 +126,7 @@
<item row="3" column="2"> <item row="3" column="2">
<widget class="QSpinBox" name="gridHeightSpinBox"/> <widget class="QSpinBox" name="gridHeightSpinBox"/>
</item> </item>
<item row="2" column="3"> <item row="2" column="4">
<widget class="QToolButton" name="resetGridWidthButton"> <widget class="QToolButton" name="resetGridWidthButton">
<property name="text"> <property name="text">
<string>...</string> <string>...</string>
@ -137,7 +137,7 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="4" column="3"> <item row="4" column="4">
<widget class="QToolButton" name="resetMapboxApiKeyButton"> <widget class="QToolButton" name="resetMapboxApiKeyButton">
<property name="text"> <property name="text">
<string>...</string> <string>...</string>
@ -148,7 +148,7 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="0" column="3"> <item row="0" column="4">
<widget class="QToolButton" name="resetRadarSiteButton"> <widget class="QToolButton" name="resetRadarSiteButton">
<property name="text"> <property name="text">
<string>...</string> <string>...</string>
@ -165,7 +165,7 @@
<item row="0" column="2"> <item row="0" column="2">
<widget class="QComboBox" name="radarSiteComboBox"/> <widget class="QComboBox" name="radarSiteComboBox"/>
</item> </item>
<item row="3" column="3"> <item row="3" column="4">
<widget class="QToolButton" name="resetGridHeightButton"> <widget class="QToolButton" name="resetGridHeightButton">
<property name="text"> <property name="text">
<string>...</string> <string>...</string>
@ -176,6 +176,9 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="1" column="2">
<widget class="QLineEdit" name="fontSizesLineEdit"/>
</item>
<item row="4" column="0"> <item row="4" column="0">
<widget class="QLabel" name="label_4"> <widget class="QLabel" name="label_4">
<property name="text"> <property name="text">
@ -183,6 +186,17 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="1" column="4">
<widget class="QToolButton" name="resetFontSizesButton">
<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="4" column="2"> <item row="4" column="2">
<widget class="QLineEdit" name="mapboxApiKeyLineEdit"/> <widget class="QLineEdit" name="mapboxApiKeyLineEdit"/>
</item> </item>
@ -200,18 +214,11 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="1" column="2"> <item row="0" column="3">
<widget class="QLineEdit" name="fontSizesLineEdit"/> <widget class="QToolButton" name="radarSiteSelectButton">
</item>
<item row="1" column="3">
<widget class="QToolButton" name="resetFontSizesButton">
<property name="text"> <property name="text">
<string>...</string> <string>...</string>
</property> </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> </widget>
</item> </item>
</layout> </layout>