From da7cedddfff3ddb32e34b85d6cd9be14e9938d94 Mon Sep 17 00:00:00 2001 From: Dan Paulat Date: Wed, 22 Nov 2023 07:33:28 -0600 Subject: [PATCH] Add track location checkbox to map settings group --- scwx-qt/source/scwx/qt/main/main_window.cpp | 34 +++++++++++++++++++++ scwx-qt/source/scwx/qt/main/main_window.ui | 11 +++++-- 2 files changed, 43 insertions(+), 2 deletions(-) diff --git a/scwx-qt/source/scwx/qt/main/main_window.cpp b/scwx-qt/source/scwx/qt/main/main_window.cpp index d07ca41c..e480aeea 100644 --- a/scwx-qt/source/scwx/qt/main/main_window.cpp +++ b/scwx-qt/source/scwx/qt/main/main_window.cpp @@ -4,6 +4,7 @@ #include #include #include +#include #include #include #include @@ -34,6 +35,7 @@ #include #include +#include #include #include #include @@ -61,6 +63,7 @@ class MainWindowImpl : public QObject public: explicit MainWindowImpl(MainWindow* mainWindow) : + uuid_ {boost::uuids::random_generator()()}, mainWindow_ {mainWindow}, settings_ {}, activeMap_ {nullptr}, @@ -82,6 +85,7 @@ public: settingsDialog_ {nullptr}, updateDialog_ {nullptr}, placefileManager_ {manager::PlacefileManager::Instance()}, + positionManager_ {manager::PositionManager::Instance()}, textEventManager_ {manager::TextEventManager::Instance()}, timelineManager_ {manager::TimelineManager::Instance()}, updateManager_ {manager::UpdateManager::Instance()}, @@ -117,6 +121,11 @@ public: settings_.setApiKey(QString {mapProviderApiKey.c_str()}); settings_.setCacheDatabasePath(QString {cacheDbPath.c_str()}); settings_.setCacheDatabaseMaximumSize(20 * 1024 * 1024); + + if (settings::GeneralSettings::Instance().track_location().GetValue()) + { + positionManager_->TrackLocation(uuid_, true); + } } ~MainWindowImpl() { threadPool_.join(); } @@ -146,6 +155,8 @@ public: boost::asio::thread_pool threadPool_ {1u}; + boost::uuids::uuid uuid_; + MainWindow* mainWindow_; QMapLibreGL::Settings settings_; map::MapProvider mapProvider_; @@ -172,6 +183,7 @@ public: ui::UpdateDialog* updateDialog_; std::shared_ptr placefileManager_; + std::shared_ptr positionManager_; std::shared_ptr textEventManager_; std::shared_ptr timelineManager_; std::shared_ptr updateManager_; @@ -244,9 +256,13 @@ MainWindow::MainWindow(QWidget* parent) : p->mapSettingsGroup_ = new ui::CollapsibleGroup(tr("Map Settings"), this); p->mapSettingsGroup_->GetContentsLayout()->addWidget(ui->mapStyleLabel); p->mapSettingsGroup_->GetContentsLayout()->addWidget(ui->mapStyleComboBox); + p->mapSettingsGroup_->GetContentsLayout()->addWidget( + ui->trackLocationCheckBox); ui->radarToolboxScrollAreaContents->layout()->replaceWidget( ui->mapSettingsGroupBox, p->mapSettingsGroup_); ui->mapSettingsGroupBox->setVisible(false); + ui->trackLocationCheckBox->setChecked( + settings::GeneralSettings::Instance().track_location().GetValue()); // Add Level 2 Products p->level2ProductsGroup_ = @@ -846,6 +862,24 @@ void MainWindowImpl::ConnectOtherSignals() } } }); + connect(mainWindow_->ui->trackLocationCheckBox, + &QCheckBox::stateChanged, + mainWindow_, + [this](int state) + { + bool trackingEnabled = (state == Qt::CheckState::Checked); + + settings::GeneralSettings::Instance().track_location().StageValue( + trackingEnabled); + + for (std::size_t i = 0; i < maps_.size(); ++i) + { + // maps_[i]->SetTrackLocation(trackingEnabled); + } + + // Turn on location tracking (location manager) + positionManager_->TrackLocation(uuid_, trackingEnabled); + }); connect(level2ProductsWidget_, &ui::Level2ProductsWidget::RadarProductSelected, mainWindow_, diff --git a/scwx-qt/source/scwx/qt/main/main_window.ui b/scwx-qt/source/scwx/qt/main/main_window.ui index 9cd627eb..56c659f3 100644 --- a/scwx-qt/source/scwx/qt/main/main_window.ui +++ b/scwx-qt/source/scwx/qt/main/main_window.ui @@ -39,7 +39,7 @@ 0 0 1024 - 21 + 22 @@ -142,7 +142,7 @@ 0 0 157 - 702 + 697 @@ -244,6 +244,13 @@ + + + + Track Location + + +