From 24ecc7becd7a59d151f7ae14645b7b762452b168 Mon Sep 17 00:00:00 2001 From: Eugen Wissner Date: Sat, 5 Apr 2025 14:23:44 +0200 Subject: katja: Use the tab container for pages --- cli/component.hpp | 37 ++++++++++++++++++++++++++++++++++--- 1 file changed, 34 insertions(+), 3 deletions(-) (limited to 'cli/component.hpp') diff --git a/cli/component.hpp b/cli/component.hpp index 7fe9c6d..fe02d0b 100644 --- a/cli/component.hpp +++ b/cli/component.hpp @@ -1,27 +1,58 @@ #pragma once +#include #include +#include #include "katja/repository.hpp" namespace katja { - class WelcomePage final : public ftxui::ComponentBase + class PageBase : public ftxui::ComponentBase { + public: + virtual void Load() = 0; + }; + + using Page = std::shared_ptr; + + class PageContainer final : public ftxui::ComponentBase + { + int menu_selected{ 0 }; + ftxui::Component menu; + ftxui::Component content; + std::vector menu_entries; + + public: + std::function on_enter; + + PageContainer(std::vector> pages); + ftxui::Element Render() override; + bool OnEvent(ftxui::Event event) override; }; - class UpdatesPage final : public ftxui::ComponentBase + class WelcomePage final : public PageBase + { + public: + void Load() override; + ftxui::Element Render() override; + }; + + class UpdatesPage final : public PageBase { std::vector updatable; public: explicit UpdatesPage(std::vector&& updatable); + void Load() override; ftxui::Element Render() override; }; - class SearchPage final : public ftxui::ComponentBase + class SearchPage final : public PageBase { + public: + void Load() override; }; } -- cgit v1.2.3