diff --git a/qt/mainwindow.cpp b/qt/mainwindow.cpp index ae371d9a4f..818cd8c35e 100644 --- a/qt/mainwindow.cpp +++ b/qt/mainwindow.cpp @@ -338,10 +338,34 @@ void MainWindow::CreateNavigationBar() } { - m_trafficEnableAction = pToolBar->addAction(QIcon(":/navig64/traffic.png"), tr("Show traffic"), - this, SLOT(OnTrafficEnabled())); - m_trafficEnableAction->setCheckable(true); - m_trafficEnableAction->setChecked(m_pDrawWidget->GetFramework().LoadTrafficEnabled()); + m_selectLayerTrafficAction = new QAction(QIcon(":/navig64/traffic.png"), tr("Traffic"), this); + m_selectLayerTrafficAction->setCheckable(true); + m_selectLayerTrafficAction->setChecked(m_pDrawWidget->GetFramework().LoadTrafficEnabled()); + connect(m_selectLayerTrafficAction, SIGNAL(triggered()), this, SLOT(OnTrafficEnabled())); + + m_selectLayerTransitAction = + new QAction(QIcon(":/navig64/subway.png"), tr("Public transport"), this); + m_selectLayerTransitAction->setCheckable(true); + m_selectLayerTransitAction->setChecked( + m_pDrawWidget->GetFramework().LoadTransitSchemeEnabled()); + connect(m_selectLayerTransitAction, SIGNAL(triggered()), this, SLOT(OnTransitEnabled())); + + m_selectLayerIsolinesAction = + new QAction(QIcon(":/navig64/isolines.png"), tr("Isolines"), this); + m_selectLayerIsolinesAction->setCheckable(true); + m_selectLayerIsolinesAction->setChecked(m_pDrawWidget->GetFramework().LoadIsolinesEnabled()); + connect(m_selectLayerIsolinesAction, SIGNAL(triggered()), this, SLOT(OnIsolinesEnabled())); + + auto layersMenu = new QMenu(); + layersMenu->addAction(m_selectLayerTrafficAction); + layersMenu->addAction(m_selectLayerTransitAction); + layersMenu->addAction(m_selectLayerIsolinesAction); + + m_selectLayerButton = new QToolButton(); + m_selectLayerButton->setPopupMode(QToolButton::MenuButtonPopup); + m_selectLayerButton->setMenu(layersMenu); + m_selectLayerButton->setIcon(QIcon(":/navig64/layers.png")); + pToolBar->addWidget(m_selectLayerButton); pToolBar->addSeparator(); m_bookmarksAction = pToolBar->addAction(QIcon(":/navig64/bookmark.png"), tr("Show bookmarks and tracks"), @@ -961,11 +985,61 @@ void MainWindow::OnRetryDownloadClicked() m_pDrawWidget->RetryToDownloadCountry(m_lastCountry); } +void MainWindow::SetEnabledTraffic(bool enable) +{ + m_selectLayerTrafficAction->setChecked(enable); + m_pDrawWidget->GetFramework().GetTrafficManager().SetEnabled(enable); + m_pDrawWidget->GetFramework().SaveTrafficEnabled(enable); +} + +void MainWindow::SetEnabledTransit(bool enable) +{ + m_selectLayerTransitAction->setChecked(enable); + m_pDrawWidget->GetFramework().GetTransitManager().EnableTransitSchemeMode(enable); + m_pDrawWidget->GetFramework().SaveTransitSchemeEnabled(enable); +} + +void MainWindow::SetEnabledIsolines(bool enable) +{ + m_selectLayerIsolinesAction->setChecked(enable); + m_pDrawWidget->GetFramework().GetIsolinesManager().SetEnabled(enable); + m_pDrawWidget->GetFramework().SaveIsolonesEnabled(enable); +} + void MainWindow::OnTrafficEnabled() { - bool const enabled = m_trafficEnableAction->isChecked(); - m_pDrawWidget->GetFramework().GetTrafficManager().SetEnabled(enabled); - m_pDrawWidget->GetFramework().SaveTrafficEnabled(enabled); + bool const enabled = m_selectLayerTrafficAction->isChecked(); + SetEnabledTraffic(enabled); + + if (enabled) + { + SetEnabledTransit(false); + SetEnabledIsolines(false); + } +} + +void MainWindow::OnTransitEnabled() +{ + bool const enabled = m_selectLayerTransitAction->isChecked(); + SetEnabledTransit(enabled); + + if (enabled) + { + SetEnabledIsolines(false); + SetEnabledTraffic(false); + } +} + +void MainWindow::OnIsolinesEnabled() +{ + bool const enabled = m_selectLayerIsolinesAction->isChecked(); + SetEnabledIsolines(enabled); + + if (enabled) + { + SetEnabledTraffic(false); + SetEnabledTransit(false); + } } void MainWindow::OnRulerEnabled() diff --git a/qt/mainwindow.hpp b/qt/mainwindow.hpp index d11680e7b7..6695739118 100644 --- a/qt/mainwindow.hpp +++ b/qt/mainwindow.hpp @@ -45,9 +45,15 @@ class MainWindow : public QMainWindow, location::LocationObserver QAction * m_selectionMode = nullptr; QAction * m_clearSelection = nullptr; QAction * m_pSearchAction = nullptr; - QAction * m_trafficEnableAction = nullptr; + QAction * m_bookmarksAction = nullptr; QAction * m_rulerAction = nullptr; + + QToolButton * m_selectLayerButton = nullptr; + QAction * m_selectLayerTrafficAction = nullptr; + QAction * m_selectLayerTransitAction = nullptr; + QAction * m_selectLayerIsolinesAction = nullptr; + QAction * m_selectionCityBoundariesMode = nullptr; QAction * m_selectionCityRoadsMode = nullptr; QAction * m_selectionMwmsBordersMode = nullptr; @@ -118,6 +124,13 @@ protected Q_SLOTS: void OnClearSelection(); void OnTrafficEnabled(); + void OnTransitEnabled(); + void OnIsolinesEnabled(); + + void SetEnabledTraffic(bool enable); + void SetEnabledTransit(bool enable); + void SetEnabledIsolines(bool enable); + void OnRulerEnabled(); void OnStartPointSelected(); void OnFinishPointSelected();