From 66ef65fe2f45ade1a804e24d28df01cbc2b8a75e Mon Sep 17 00:00:00 2001 From: Dan Paulat Date: Sun, 5 Nov 2023 06:32:47 -0600 Subject: [PATCH] Force placefile refresh button --- .../scwx/qt/manager/placefile_manager.cpp | 11 ++++++++ .../scwx/qt/manager/placefile_manager.hpp | 2 ++ .../scwx/qt/ui/placefile_settings_widget.cpp | 27 +++++++++++++++++++ .../scwx/qt/ui/placefile_settings_widget.ui | 12 ++++++++- 4 files changed, 51 insertions(+), 1 deletion(-) diff --git a/scwx-qt/source/scwx/qt/manager/placefile_manager.cpp b/scwx-qt/source/scwx/qt/manager/placefile_manager.cpp index 60b4047f..4b1b0550 100644 --- a/scwx-qt/source/scwx/qt/manager/placefile_manager.cpp +++ b/scwx-qt/source/scwx/qt/manager/placefile_manager.cpp @@ -508,6 +508,17 @@ void PlacefileManager::RemoveUrl(const std::string& urlString) Q_EMIT PlacefileRemoved(urlString); } +void PlacefileManager::Refresh(const std::string& name) +{ + std::shared_lock lock {p->placefileRecordLock_}; + + auto it = p->placefileRecordMap_.find(name); + if (it != p->placefileRecordMap_.cend()) + { + it->second->UpdateAsync(); + } +} + void PlacefileManager::Impl::PlacefileRecord::Update() { logger_->debug("Update: {}", name_); diff --git a/scwx-qt/source/scwx/qt/manager/placefile_manager.hpp b/scwx-qt/source/scwx/qt/manager/placefile_manager.hpp index 235b6e65..17b39b2f 100644 --- a/scwx-qt/source/scwx/qt/manager/placefile_manager.hpp +++ b/scwx-qt/source/scwx/qt/manager/placefile_manager.hpp @@ -41,6 +41,8 @@ public: bool thresholded = false); void RemoveUrl(const std::string& urlString); + void Refresh(const std::string& name); + static std::shared_ptr Instance(); signals: diff --git a/scwx-qt/source/scwx/qt/ui/placefile_settings_widget.cpp b/scwx-qt/source/scwx/qt/ui/placefile_settings_widget.cpp index ddc5dda6..a23a3f0c 100644 --- a/scwx-qt/source/scwx/qt/ui/placefile_settings_widget.cpp +++ b/scwx-qt/source/scwx/qt/ui/placefile_settings_widget.cpp @@ -56,6 +56,7 @@ PlacefileSettingsWidget::PlacefileSettingsWidget(QWidget* parent) : ui->setupUi(this); ui->removeButton->setEnabled(false); + ui->refreshButton->setEnabled(false); ui->placefileView->setModel(p->placefileProxyModel_); @@ -114,6 +115,31 @@ void PlacefileSettingsWidgetImpl::ConnectSignals() } }); + QObject::connect(self_->ui->refreshButton, + &QPushButton::clicked, + self_, + [this]() + { + auto selectionModel = + self_->ui->placefileView->selectionModel(); + + // Get selected URL string + QModelIndex selected = + selectionModel + ->selectedRows(static_cast( + model::PlacefileModel::Column::Placefile)) + .first(); + QVariant data = self_->ui->placefileView->model()->data( + selected, types::ItemDataRole::SortRole); + std::string urlString = data.toString().toStdString(); + + // Refresh placefile + if (!urlString.empty()) + { + placefileManager_->Refresh(urlString); + } + }); + QObject::connect( openUrlDialog_, &OpenUrlDialog::accepted, @@ -143,6 +169,7 @@ void PlacefileSettingsWidgetImpl::ConnectSignals() bool itemSelected = selected.size() > 0; self_->ui->removeButton->setEnabled(itemSelected); + self_->ui->refreshButton->setEnabled(itemSelected); }); } diff --git a/scwx-qt/source/scwx/qt/ui/placefile_settings_widget.ui b/scwx-qt/source/scwx/qt/ui/placefile_settings_widget.ui index e5f3595b..b95ab784 100644 --- a/scwx-qt/source/scwx/qt/ui/placefile_settings_widget.ui +++ b/scwx-qt/source/scwx/qt/ui/placefile_settings_widget.ui @@ -84,7 +84,17 @@ false - &Remove + R&emove + + + + + + + false + + + &Refresh