From 97a2d9ab301594bdeded8ef851a50b91adbb589e Mon Sep 17 00:00:00 2001 From: johndoe6345789 Date: Sat, 10 Jan 2026 02:19:35 +0000 Subject: [PATCH] ROADMAP.md --- .../impl/soundboard_state_service.cpp | 26 +++++++++++++ .../impl/soundboard_state_service.hpp | 23 ++++++++++++ .../interfaces/i_soundboard_state_service.hpp | 15 ++++++++ src/services/interfaces/soundboard_types.hpp | 37 +++++++++++++++++++ 4 files changed, 101 insertions(+) create mode 100644 src/services/impl/soundboard_state_service.cpp create mode 100644 src/services/impl/soundboard_state_service.hpp create mode 100644 src/services/interfaces/i_soundboard_state_service.hpp create mode 100644 src/services/interfaces/soundboard_types.hpp diff --git a/src/services/impl/soundboard_state_service.cpp b/src/services/impl/soundboard_state_service.cpp new file mode 100644 index 0000000..15baad9 --- /dev/null +++ b/src/services/impl/soundboard_state_service.cpp @@ -0,0 +1,26 @@ +#include "soundboard_state_service.hpp" + +namespace sdl3cpp::services::impl { + +SoundboardStateService::SoundboardStateService(std::shared_ptr logger) + : logger_(std::move(logger)), + statusMessage_("Select a clip to play") { + if (logger_) { + logger_->Trace("SoundboardStateService", "SoundboardStateService", + "status=" + statusMessage_); + } +} + +void SoundboardStateService::SetStatusMessage(std::string message) { + statusMessage_ = std::move(message); + if (logger_) { + logger_->Trace("SoundboardStateService", "SetStatusMessage", + "status=" + statusMessage_); + } +} + +const std::string& SoundboardStateService::GetStatusMessage() const { + return statusMessage_; +} + +} // namespace sdl3cpp::services::impl diff --git a/src/services/impl/soundboard_state_service.hpp b/src/services/impl/soundboard_state_service.hpp new file mode 100644 index 0000000..0e059d8 --- /dev/null +++ b/src/services/impl/soundboard_state_service.hpp @@ -0,0 +1,23 @@ +#pragma once + +#include "../interfaces/i_logger.hpp" +#include "../interfaces/i_soundboard_state_service.hpp" + +#include +#include + +namespace sdl3cpp::services::impl { + +class SoundboardStateService final : public ISoundboardStateService { +public: + explicit SoundboardStateService(std::shared_ptr logger); + + void SetStatusMessage(std::string message) override; + const std::string& GetStatusMessage() const override; + +private: + std::shared_ptr logger_; + std::string statusMessage_; +}; + +} // namespace sdl3cpp::services::impl diff --git a/src/services/interfaces/i_soundboard_state_service.hpp b/src/services/interfaces/i_soundboard_state_service.hpp new file mode 100644 index 0000000..d61cfda --- /dev/null +++ b/src/services/interfaces/i_soundboard_state_service.hpp @@ -0,0 +1,15 @@ +#pragma once + +#include + +namespace sdl3cpp::services { + +class ISoundboardStateService { +public: + virtual ~ISoundboardStateService() = default; + + virtual void SetStatusMessage(std::string message) = 0; + virtual const std::string& GetStatusMessage() const = 0; +}; + +} // namespace sdl3cpp::services diff --git a/src/services/interfaces/soundboard_types.hpp b/src/services/interfaces/soundboard_types.hpp new file mode 100644 index 0000000..5c54825 --- /dev/null +++ b/src/services/interfaces/soundboard_types.hpp @@ -0,0 +1,37 @@ +#pragma once + +#include +#include +#include +#include + +namespace sdl3cpp::services { + +struct SoundboardClip { + std::string id; + std::string label; + std::filesystem::path path; +}; + +struct SoundboardCategory { + std::string id; + std::string name; + std::filesystem::path basePath; + std::vector clips; +}; + +struct SoundboardCatalog { + std::filesystem::path packageRoot; + std::vector categories; +}; + +struct SoundboardSelection { + bool hasSelection = false; + std::uint64_t requestId = 0; + std::string categoryId; + std::string clipId; + std::string label; + std::filesystem::path path; +}; + +} // namespace sdl3cpp::services