diff options
author | HampusM <hampus@hampusmat.com> | 2022-05-02 22:36:21 +0200 |
---|---|---|
committer | HampusM <hampus@hampusmat.com> | 2022-06-13 17:56:58 +0200 |
commit | fb080f6fb911b1831c176a06259e384772541dd5 (patch) | |
tree | e18140e700cd974f84a5630f41fcb0b496b7e772 /src/interfaces | |
parent | 40d02748924aa7c48b04cf948204d8dacdfbbc74 (diff) |
refactor: seperate statusline related concerns
Diffstat (limited to 'src/interfaces')
-rw-r--r-- | src/interfaces/status_manager.hpp | 28 | ||||
-rw-r--r-- | src/interfaces/status_updater.hpp | 23 | ||||
-rw-r--r-- | src/interfaces/statusline.hpp | 16 | ||||
-rw-r--r-- | src/interfaces/statusline_subscriber_adapter.hpp | 17 |
4 files changed, 57 insertions, 27 deletions
diff --git a/src/interfaces/status_manager.hpp b/src/interfaces/status_manager.hpp new file mode 100644 index 0000000..afc8416 --- /dev/null +++ b/src/interfaces/status_manager.hpp @@ -0,0 +1,28 @@ +#pragma once + +#include "interfaces/statusline.hpp" + +#include <yacppdic/factory.hpp> + +#include <memory> +#include <string_view> + +// NOLINTNEXTLINE(cppcoreguidelines-special-member-functions) +class IStatusManager +{ +public: + virtual ~IStatusManager() = default; + + virtual void set_section_title( + const StatusLineSection §ion, + const std::string_view &title + ) noexcept = 0; + + virtual void set_section_body( + const StatusLineSection §ion, + const std::string_view &body + ) noexcept = 0; +}; + +using IStatusManagerFactory = yacppdic::Factory< + std::unique_ptr<IStatusManager>(const std::shared_ptr<IStatusLine> &statusline)>; diff --git a/src/interfaces/status_updater.hpp b/src/interfaces/status_updater.hpp deleted file mode 100644 index 4b2ceb1..0000000 --- a/src/interfaces/status_updater.hpp +++ /dev/null @@ -1,23 +0,0 @@ -#pragma once - -#include "interfaces/generation_tracker.hpp" -#include "interfaces/statusline.hpp" -#include "interfaces/subscriber.hpp" - -#include "engine/data/vector2.hpp" - -#include <yacppdic/factory.hpp> - -#include <memory> - -// NOLINTNEXTLINE(cppcoreguidelines-special-member-functions) -class IStatusUpdater : public ISubscriber<Vector2> -{ -public: - void update(const Vector2 &context) noexcept override = 0; -}; - -using IStatusUpdaterFactory = yacppdic::Factory<std::unique_ptr<IStatusUpdater>( - const std::shared_ptr<IStatusLine> &statusline, - const std::shared_ptr<IGenerationTracker> &generation_tracker -)>; diff --git a/src/interfaces/statusline.hpp b/src/interfaces/statusline.hpp index 0da295e..2b61d24 100644 --- a/src/interfaces/statusline.hpp +++ b/src/interfaces/statusline.hpp @@ -9,8 +9,12 @@ enum StatusLineSection { - A, - B + A = 0, + B = 1, + C = 2, + D = 3, + E = 4, + F = 5 }; // NOLINTNEXTLINE(cppcoreguidelines-special-member-functions) @@ -22,9 +26,13 @@ public: virtual void initialize_background() noexcept = 0; virtual void set_status( - StatusLineSection section, - const std::string_view &status_str + const StatusLineSection §ion, + const std::string_view &status, + std::size_t start = 1UL ) noexcept = 0; + + virtual void + set_section_length(const StatusLineSection §ion, uint32_t length) noexcept = 0; }; using IStatusLineFactory = yacppdic::Factory<std::unique_ptr<IStatusLine>( diff --git a/src/interfaces/statusline_subscriber_adapter.hpp b/src/interfaces/statusline_subscriber_adapter.hpp new file mode 100644 index 0000000..53543f7 --- /dev/null +++ b/src/interfaces/statusline_subscriber_adapter.hpp @@ -0,0 +1,17 @@ +#pragma once + +#include "interfaces/status_manager.hpp" +#include "interfaces/statusline.hpp" +#include "interfaces/subscriber.hpp" + +#include <yacppdic/factory.hpp> + +#include <memory> +#include <vector> + +template <typename Context> +using IStatusLineSubscriberAdapterFactory = + yacppdic::Factory<std::unique_ptr<ISubscriber<Context>>( + const std::shared_ptr<IStatusManager> &status_manager, + std::vector<StatusLineSection> sections + )>; |