From a89c20c697e740d47ea34e4d786b395ce195920a Mon Sep 17 00:00:00 2001 From: Dan Paulat Date: Sun, 26 Nov 2023 22:31:14 -0600 Subject: [PATCH] Media Manager stub --- scwx-qt/scwx-qt.cmake | 2 + .../source/scwx/qt/manager/media_manager.cpp | 45 +++++++++++++++++++ .../source/scwx/qt/manager/media_manager.hpp | 32 +++++++++++++ 3 files changed, 79 insertions(+) create mode 100644 scwx-qt/source/scwx/qt/manager/media_manager.cpp create mode 100644 scwx-qt/source/scwx/qt/manager/media_manager.hpp diff --git a/scwx-qt/scwx-qt.cmake b/scwx-qt/scwx-qt.cmake index c026000b..8b15dfe5 100644 --- a/scwx-qt/scwx-qt.cmake +++ b/scwx-qt/scwx-qt.cmake @@ -79,6 +79,7 @@ set(SRC_GL_DRAW source/scwx/qt/gl/draw/draw_item.cpp source/scwx/qt/gl/draw/placefile_triangles.cpp source/scwx/qt/gl/draw/rectangle.cpp) set(HDR_MANAGER source/scwx/qt/manager/font_manager.hpp + source/scwx/qt/manager/media_manager.hpp source/scwx/qt/manager/placefile_manager.hpp source/scwx/qt/manager/position_manager.hpp source/scwx/qt/manager/radar_product_manager.hpp @@ -89,6 +90,7 @@ set(HDR_MANAGER source/scwx/qt/manager/font_manager.hpp source/scwx/qt/manager/timeline_manager.hpp source/scwx/qt/manager/update_manager.hpp) set(SRC_MANAGER source/scwx/qt/manager/font_manager.cpp + source/scwx/qt/manager/media_manager.cpp source/scwx/qt/manager/placefile_manager.cpp source/scwx/qt/manager/position_manager.cpp source/scwx/qt/manager/radar_product_manager.cpp diff --git a/scwx-qt/source/scwx/qt/manager/media_manager.cpp b/scwx-qt/source/scwx/qt/manager/media_manager.cpp new file mode 100644 index 00000000..23896e63 --- /dev/null +++ b/scwx-qt/source/scwx/qt/manager/media_manager.cpp @@ -0,0 +1,45 @@ +#include +#include + +namespace scwx +{ +namespace qt +{ +namespace manager +{ + +static const std::string logPrefix_ = "scwx::qt::manager::media_manager"; +static const auto logger_ = scwx::util::Logger::Create(logPrefix_); + +class MediaManager::Impl +{ +public: + explicit Impl() {} + + ~Impl() {} +}; + +MediaManager::MediaManager() : p(std::make_unique()) {} +MediaManager::~MediaManager() = default; + +std::shared_ptr MediaManager::Instance() +{ + static std::weak_ptr mediaManagerReference_ {}; + static std::mutex instanceMutex_ {}; + + std::unique_lock lock(instanceMutex_); + + std::shared_ptr mediaManager = mediaManagerReference_.lock(); + + if (mediaManager == nullptr) + { + mediaManager = std::make_shared(); + mediaManagerReference_ = mediaManager; + } + + return mediaManager; +} + +} // namespace manager +} // namespace qt +} // namespace scwx diff --git a/scwx-qt/source/scwx/qt/manager/media_manager.hpp b/scwx-qt/source/scwx/qt/manager/media_manager.hpp new file mode 100644 index 00000000..958bfc82 --- /dev/null +++ b/scwx-qt/source/scwx/qt/manager/media_manager.hpp @@ -0,0 +1,32 @@ +#pragma once + +#include + +#include + +namespace scwx +{ +namespace qt +{ +namespace manager +{ + +class MediaManager : public QObject +{ + Q_OBJECT + Q_DISABLE_COPY_MOVE(MediaManager) + +public: + explicit MediaManager(); + ~MediaManager(); + + static std::shared_ptr Instance(); + +private: + class Impl; + std::unique_ptr p; +}; + +} // namespace manager +} // namespace qt +} // namespace scwx