mirror of
				https://github.com/ciphervance/supercell-wx.git
				synced 2025-10-31 10:20:04 +00:00 
			
		
		
		
	Update alert line labels with the edit line dialog
This commit is contained in:
		
							parent
							
								
									0108799718
								
							
						
					
					
						commit
						9182d170de
					
				
					 1 changed files with 79 additions and 31 deletions
				
			
		|  | @ -80,6 +80,7 @@ public: | ||||||
|    QListWidget*    phenomenonListView_; |    QListWidget*    phenomenonListView_; | ||||||
| 
 | 
 | ||||||
|    EditLineDialog* editLineDialog_; |    EditLineDialog* editLineDialog_; | ||||||
|  |    LineLabel*      activeLineLabel_ {nullptr}; | ||||||
| 
 | 
 | ||||||
|    boost::unordered_flat_map<awips::Phenomenon, QWidget*> phenomenonPages_ {}; |    boost::unordered_flat_map<awips::Phenomenon, QWidget*> phenomenonPages_ {}; | ||||||
| }; | }; | ||||||
|  | @ -93,37 +94,12 @@ AlertPaletteSettingsWidget::~AlertPaletteSettingsWidget() = default; | ||||||
| 
 | 
 | ||||||
| void AlertPaletteSettingsWidget::Impl::SetupUi() | void AlertPaletteSettingsWidget::Impl::SetupUi() | ||||||
| { | { | ||||||
|    // Setup primary widget layout
 |    // Setup phenomenon index pane
 | ||||||
|    QGridLayout* gridLayout = new QGridLayout(self_); |    QLabel* phenomenonLabel = new QLabel(tr("Phenomenon:"), self_); | ||||||
|    gridLayout->setContentsMargins(0, 0, 0, 0); |    phenomenonPagesWidget_->setSizePolicy(QSizePolicy::Policy::MinimumExpanding, | ||||||
|    self_->setLayout(gridLayout); |  | ||||||
| 
 |  | ||||||
|    QWidget* phenomenonIndexPane = new QWidget(self_); |  | ||||||
|    phenomenonPagesWidget_->setSizePolicy(QSizePolicy::Policy::Expanding, |  | ||||||
|                                          QSizePolicy::Policy::Preferred); |                                          QSizePolicy::Policy::Preferred); | ||||||
| 
 | 
 | ||||||
|    gridLayout->addWidget(phenomenonIndexPane, 0, 0); |  | ||||||
|    gridLayout->addWidget(phenomenonPagesWidget_, 0, 1); |  | ||||||
| 
 |  | ||||||
|    QSpacerItem* spacer = |  | ||||||
|       new QSpacerItem(0, 0, QSizePolicy::Minimum, QSizePolicy::Expanding); |  | ||||||
|    gridLayout->addItem(spacer, 1, 0); |  | ||||||
| 
 |  | ||||||
|    // Setup phenomenon index pane
 |  | ||||||
|    QVBoxLayout* phenomenonIndexLayout = new QVBoxLayout(self_); |  | ||||||
|    phenomenonIndexPane->setLayout(phenomenonIndexLayout); |  | ||||||
| 
 |  | ||||||
|    QLabel* phenomenonLabel = new QLabel(tr("Phenomenon:"), self_); |  | ||||||
|    phenomenonListView_->setSizePolicy(QSizePolicy::Policy::Minimum, |  | ||||||
|                                       QSizePolicy::Policy::Expanding); |  | ||||||
| 
 |  | ||||||
|    phenomenonIndexLayout->addWidget(phenomenonLabel); |  | ||||||
|    phenomenonIndexLayout->addWidget(phenomenonListView_); |  | ||||||
| 
 |  | ||||||
|    // Setup stacked widget
 |    // Setup stacked widget
 | ||||||
|    auto& paletteSettings = settings::PaletteSettings::Instance(); |  | ||||||
|    Q_UNUSED(paletteSettings); |  | ||||||
| 
 |  | ||||||
|    for (auto& phenomenon : settings::PaletteSettings::alert_phenomena()) |    for (auto& phenomenon : settings::PaletteSettings::alert_phenomena()) | ||||||
|    { |    { | ||||||
|       QWidget* phenomenonWidget = CreateStackedWidgetPage(phenomenon); |       QWidget* phenomenonWidget = CreateStackedWidgetPage(phenomenon); | ||||||
|  | @ -136,11 +112,31 @@ void AlertPaletteSettingsWidget::Impl::SetupUi() | ||||||
|    } |    } | ||||||
| 
 | 
 | ||||||
|    phenomenonListView_->setCurrentRow(0); |    phenomenonListView_->setCurrentRow(0); | ||||||
|  | 
 | ||||||
|  |    // Create phenomenon index pane layout
 | ||||||
|  |    QVBoxLayout* phenomenonIndexLayout = new QVBoxLayout(self_); | ||||||
|  |    phenomenonIndexLayout->addWidget(phenomenonLabel); | ||||||
|  |    phenomenonIndexLayout->addWidget(phenomenonListView_); | ||||||
|  | 
 | ||||||
|  |    QWidget* phenomenonIndexPane = new QWidget(self_); | ||||||
|  |    phenomenonIndexPane->setLayout(phenomenonIndexLayout); | ||||||
|  | 
 | ||||||
|  |    // Create primary widget layout
 | ||||||
|  |    QGridLayout* gridLayout = new QGridLayout(self_); | ||||||
|  |    gridLayout->setContentsMargins(0, 0, 0, 0); | ||||||
|  |    gridLayout->addWidget(phenomenonIndexPane, 0, 0); | ||||||
|  |    gridLayout->addWidget(phenomenonPagesWidget_, 0, 1); | ||||||
|  | 
 | ||||||
|  |    QSpacerItem* spacer = | ||||||
|  |       new QSpacerItem(0, 0, QSizePolicy::Minimum, QSizePolicy::Expanding); | ||||||
|  |    gridLayout->addItem(spacer, 1, 0); | ||||||
|  | 
 | ||||||
|  |    self_->setLayout(gridLayout); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void AlertPaletteSettingsWidget::Impl::ConnectSignals() | void AlertPaletteSettingsWidget::Impl::ConnectSignals() | ||||||
| { | { | ||||||
|    QObject::connect( |    connect( | ||||||
|       phenomenonListView_->selectionModel(), |       phenomenonListView_->selectionModel(), | ||||||
|       &QItemSelectionModel::selectionChanged, |       &QItemSelectionModel::selectionChanged, | ||||||
|       self_, |       self_, | ||||||
|  | @ -168,6 +164,31 @@ void AlertPaletteSettingsWidget::Impl::ConnectSignals() | ||||||
|             } |             } | ||||||
|          } |          } | ||||||
|       }); |       }); | ||||||
|  | 
 | ||||||
|  |    connect( | ||||||
|  |       editLineDialog_, | ||||||
|  |       &EditLineDialog::accepted, | ||||||
|  |       self_, | ||||||
|  |       [this]() | ||||||
|  |       { | ||||||
|  |          // If the active line label was set
 | ||||||
|  |          if (activeLineLabel_ != nullptr) | ||||||
|  |          { | ||||||
|  |             // Update the active line label with selected line settings
 | ||||||
|  |             activeLineLabel_->set_border_color(editLineDialog_->border_color()); | ||||||
|  |             activeLineLabel_->set_highlight_color( | ||||||
|  |                editLineDialog_->highlight_color()); | ||||||
|  |             activeLineLabel_->set_line_color(editLineDialog_->line_color()); | ||||||
|  | 
 | ||||||
|  |             activeLineLabel_->set_border_width(editLineDialog_->border_width()); | ||||||
|  |             activeLineLabel_->set_highlight_width( | ||||||
|  |                editLineDialog_->highlight_width()); | ||||||
|  |             activeLineLabel_->set_line_width(editLineDialog_->line_width()); | ||||||
|  | 
 | ||||||
|  |             // Reset the active line label
 | ||||||
|  |             activeLineLabel_ = nullptr; | ||||||
|  |          } | ||||||
|  |       }); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void AlertPaletteSettingsWidget::Impl::SelectPhenomenon( | void AlertPaletteSettingsWidget::Impl::SelectPhenomenon( | ||||||
|  | @ -229,9 +250,36 @@ QWidget* AlertPaletteSettingsWidget::Impl::CreateStackedWidgetPage( | ||||||
| void AlertPaletteSettingsWidget::Impl::AddPhenomenonLine( | void AlertPaletteSettingsWidget::Impl::AddPhenomenonLine( | ||||||
|    const std::string& name, QGridLayout* layout, int row) |    const std::string& name, QGridLayout* layout, int row) | ||||||
| { | { | ||||||
|  |    QToolButton* toolButton = new QToolButton(self_); | ||||||
|  |    toolButton->setText(tr("...")); | ||||||
|  | 
 | ||||||
|  |    LineLabel* lineLabel = new LineLabel(self_); | ||||||
|  | 
 | ||||||
|    layout->addWidget(new QLabel(tr(name.c_str()), self_), row, 0); |    layout->addWidget(new QLabel(tr(name.c_str()), self_), row, 0); | ||||||
|    layout->addWidget(new LineLabel(self_), row, 1); |    layout->addWidget(lineLabel, row, 1); | ||||||
|    layout->addWidget(new QToolButton(self_), row, 2); |    layout->addWidget(toolButton, row, 2); | ||||||
|  | 
 | ||||||
|  |    connect( | ||||||
|  |       toolButton, | ||||||
|  |       &QAbstractButton::clicked, | ||||||
|  |       self_, | ||||||
|  |       [this, lineLabel]() | ||||||
|  |       { | ||||||
|  |          // Set the active line label for when the dialog is finished
 | ||||||
|  |          activeLineLabel_ = lineLabel; | ||||||
|  | 
 | ||||||
|  |          // Initialize dialog with current line settings
 | ||||||
|  |          editLineDialog_->set_border_color(lineLabel->border_color()); | ||||||
|  |          editLineDialog_->set_highlight_color(lineLabel->highlight_color()); | ||||||
|  |          editLineDialog_->set_line_color(lineLabel->line_color()); | ||||||
|  | 
 | ||||||
|  |          editLineDialog_->set_border_width(lineLabel->border_width()); | ||||||
|  |          editLineDialog_->set_highlight_width(lineLabel->highlight_width()); | ||||||
|  |          editLineDialog_->set_line_width(lineLabel->line_width()); | ||||||
|  | 
 | ||||||
|  |          // Show the dialog
 | ||||||
|  |          editLineDialog_->show(); | ||||||
|  |       }); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| } // namespace ui
 | } // namespace ui
 | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Dan Paulat
						Dan Paulat