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

View file

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