Add storm track settings to level 3 products widget

This commit is contained in:
Dan Paulat 2024-02-25 00:15:53 -06:00
parent 5e0f69018b
commit 5f191a8468

View file

@ -1,12 +1,16 @@
#include <scwx/qt/ui/level3_products_widget.hpp> #include <scwx/qt/ui/level3_products_widget.hpp>
#include <scwx/qt/ui/flow_layout.hpp> #include <scwx/qt/ui/flow_layout.hpp>
#include <scwx/qt/settings/product_settings.hpp>
#include <scwx/qt/settings/settings_interface.hpp>
#include <scwx/util/logger.hpp> #include <scwx/util/logger.hpp>
#include <execution> #include <execution>
#include <shared_mutex> #include <shared_mutex>
#include <QCheckBox>
#include <QMenu> #include <QMenu>
#include <QToolButton> #include <QToolButton>
#include <QVBoxLayout>
namespace scwx namespace scwx
{ {
@ -25,13 +29,17 @@ class Level3ProductsWidgetImpl : public QObject
public: public:
explicit Level3ProductsWidgetImpl(Level3ProductsWidget* self) : explicit Level3ProductsWidgetImpl(Level3ProductsWidget* self) :
self_ {self}, self_ {self},
layout_ {new ui::FlowLayout(self)}, layout_ {new QVBoxLayout(self)},
productsWidget_ {new QWidget(self)},
productsLayout_ {new ui::FlowLayout(productsWidget_)},
categoryButtons_ {}, categoryButtons_ {},
productTiltMap_ {}, productTiltMap_ {},
awipsProductMap_ {}, awipsProductMap_ {},
awipsProductMutex_ {} awipsProductMutex_ {}
{ {
layout_->setContentsMargins(0, 0, 0, 0); layout_->setContentsMargins(0, 0, 0, 0);
layout_->addWidget(productsWidget_);
productsLayout_->setContentsMargins(0, 0, 0, 0);
for (common::Level3ProductCategory category : for (common::Level3ProductCategory category :
common::Level3ProductCategoryIterator()) common::Level3ProductCategoryIterator())
@ -42,7 +50,7 @@ public:
toolButton->setStatusTip( toolButton->setStatusTip(
tr(common::GetLevel3CategoryDescription(category).c_str())); tr(common::GetLevel3CategoryDescription(category).c_str()));
toolButton->setPopupMode(QToolButton::MenuButtonPopup); toolButton->setPopupMode(QToolButton::MenuButtonPopup);
layout_->addWidget(toolButton); productsLayout_->addWidget(toolButton);
categoryButtons_.push_back(toolButton); categoryButtons_.push_back(toolButton);
QObject::connect(toolButton, QObject::connect(toolButton,
@ -99,6 +107,26 @@ public:
toolButton->setEnabled(false); toolButton->setEnabled(false);
} }
// Storm Tracking Information
QCheckBox* stiPastEnableCheckBox = new QCheckBox();
QCheckBox* stiForecastEnableCheckBox = new QCheckBox();
stiPastEnableCheckBox->setText(QObject::tr("Storm Tracks (Past)"));
stiForecastEnableCheckBox->setText(
QObject::tr("Storm Tracks (Forecast)"));
layout_->addWidget(stiPastEnableCheckBox);
layout_->addWidget(stiForecastEnableCheckBox);
auto& productSettings = settings::ProductSettings::Instance();
stiPastEnabled_.SetSettingsVariable(productSettings.sti_past_enabled());
stiForecastEnabled_.SetSettingsVariable(
productSettings.sti_forecast_enabled());
stiPastEnabled_.SetEditWidget(stiPastEnableCheckBox);
stiForecastEnabled_.SetEditWidget(stiForecastEnableCheckBox);
} }
~Level3ProductsWidgetImpl() = default; ~Level3ProductsWidgetImpl() = default;
@ -109,6 +137,8 @@ public:
Level3ProductsWidget* self_; Level3ProductsWidget* self_;
QLayout* layout_; QLayout* layout_;
QWidget* productsWidget_;
QLayout* productsLayout_;
std::list<QToolButton*> categoryButtons_; std::list<QToolButton*> categoryButtons_;
std::unordered_map<common::Level3ProductCategory, std::unordered_map<common::Level3ProductCategory,
std::unordered_map<std::string, QMenu*>> std::unordered_map<std::string, QMenu*>>
@ -118,6 +148,9 @@ public:
std::unordered_map<QAction*, std::string> awipsProductMap_; std::unordered_map<QAction*, std::string> awipsProductMap_;
std::shared_mutex awipsProductMutex_; std::shared_mutex awipsProductMutex_;
settings::SettingsInterface<bool> stiPastEnabled_ {};
settings::SettingsInterface<bool> stiForecastEnabled_ {};
}; };
Level3ProductsWidget::Level3ProductsWidget(QWidget* parent) : Level3ProductsWidget::Level3ProductsWidget(QWidget* parent) :