mirror of
				https://github.com/ciphervance/supercell-wx.git
				synced 2025-10-31 05:10:04 +00:00 
			
		
		
		
	Radar site selection dialog in settings
This commit is contained in:
		
							parent
							
								
									9b5b841903
								
							
						
					
					
						commit
						a6974e31a2
					
				
					 2 changed files with 73 additions and 23 deletions
				
			
		|  | @ -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(); | ||||
| 
 | ||||
|    SettingsDialog* self_; | ||||
|    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
 | ||||
|  |  | |||
|  | @ -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> | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Dan Paulat
						Dan Paulat