From 81eb3b1af3ca83034474e559f06bd2f3ce125a3e Mon Sep 17 00:00:00 2001 From: Dan Paulat Date: Sun, 14 May 2023 08:36:21 -0500 Subject: [PATCH] Add timeline manager --- scwx-qt/scwx-qt.cmake | 2 + .../scwx/qt/manager/timeline_manager.cpp | 48 +++++++++++++++++++ .../scwx/qt/manager/timeline_manager.hpp | 31 ++++++++++++ 3 files changed, 81 insertions(+) create mode 100644 scwx-qt/source/scwx/qt/manager/timeline_manager.cpp create mode 100644 scwx-qt/source/scwx/qt/manager/timeline_manager.hpp diff --git a/scwx-qt/scwx-qt.cmake b/scwx-qt/scwx-qt.cmake index b56ec7cb..cf084fa1 100644 --- a/scwx-qt/scwx-qt.cmake +++ b/scwx-qt/scwx-qt.cmake @@ -65,12 +65,14 @@ set(HDR_MANAGER source/scwx/qt/manager/radar_product_manager.hpp source/scwx/qt/manager/resource_manager.hpp source/scwx/qt/manager/settings_manager.hpp source/scwx/qt/manager/text_event_manager.hpp + source/scwx/qt/manager/timeline_manager.hpp source/scwx/qt/manager/update_manager.hpp) set(SRC_MANAGER source/scwx/qt/manager/radar_product_manager.cpp source/scwx/qt/manager/radar_product_manager_notifier.cpp source/scwx/qt/manager/resource_manager.cpp source/scwx/qt/manager/settings_manager.cpp source/scwx/qt/manager/text_event_manager.cpp + source/scwx/qt/manager/timeline_manager.cpp source/scwx/qt/manager/update_manager.cpp) set(HDR_MAP source/scwx/qt/map/alert_layer.hpp source/scwx/qt/map/color_table_layer.hpp diff --git a/scwx-qt/source/scwx/qt/manager/timeline_manager.cpp b/scwx-qt/source/scwx/qt/manager/timeline_manager.cpp new file mode 100644 index 00000000..ebf7d43a --- /dev/null +++ b/scwx-qt/source/scwx/qt/manager/timeline_manager.cpp @@ -0,0 +1,48 @@ +#include +#include + +namespace scwx +{ +namespace qt +{ +namespace manager +{ + +static const std::string logPrefix_ = "scwx::qt::manager::timeline_manager"; +static const auto logger_ = scwx::util::Logger::Create(logPrefix_); + +class TimelineManager::Impl +{ +public: + explicit Impl(TimelineManager* self) : self_ {self} {} + + ~Impl() {} + + TimelineManager* self_; +}; + +TimelineManager::TimelineManager() : p(std::make_unique(this)) {} +TimelineManager::~TimelineManager() = default; + +std::shared_ptr TimelineManager::Instance() +{ + static std::weak_ptr timelineManagerReference_ {}; + static std::mutex instanceMutex_ {}; + + std::unique_lock lock(instanceMutex_); + + std::shared_ptr timelineManager = + timelineManagerReference_.lock(); + + if (timelineManager == nullptr) + { + timelineManager = std::make_shared(); + timelineManagerReference_ = timelineManager; + } + + return timelineManager; +} + +} // namespace manager +} // namespace qt +} // namespace scwx diff --git a/scwx-qt/source/scwx/qt/manager/timeline_manager.hpp b/scwx-qt/source/scwx/qt/manager/timeline_manager.hpp new file mode 100644 index 00000000..f37eadd3 --- /dev/null +++ b/scwx-qt/source/scwx/qt/manager/timeline_manager.hpp @@ -0,0 +1,31 @@ +#pragma once + +#include + +#include + +namespace scwx +{ +namespace qt +{ +namespace manager +{ + +class TimelineManager : public QObject +{ + Q_OBJECT + +public: + explicit TimelineManager(); + ~TimelineManager(); + + static std::shared_ptr Instance(); + +private: + class Impl; + std::unique_ptr p; +}; + +} // namespace manager +} // namespace qt +} // namespace scwx