aboutsummaryrefslogtreecommitdiff
path: root/cli/main.cpp
diff options
context:
space:
mode:
authorEugen Wissner <belka@caraus.de>2025-04-05 14:23:44 +0200
committerEugen Wissner <belka@caraus.de>2025-04-05 14:23:44 +0200
commit24ecc7becd7a59d151f7ae14645b7b762452b168 (patch)
treeafa91f3fae38ac87c1fbe5edb040eca462a3caf7 /cli/main.cpp
parentff3c508ceb185d631aea7fed93329525d77a1704 (diff)
downloadkazbek-24ecc7becd7a59d151f7ae14645b7b762452b168.tar.gz
katja: Use the tab container for pages
Diffstat (limited to 'cli/main.cpp')
-rw-r--r--cli/main.cpp43
1 files changed, 1 insertions, 42 deletions
diff --git a/cli/main.cpp b/cli/main.cpp
index d5f8cf3..c2d91ca 100644
--- a/cli/main.cpp
+++ b/cli/main.cpp
@@ -1,6 +1,5 @@
#include <filesystem>
-#include <ftxui/component/component.hpp>
#include <ftxui/component/screen_interactive.hpp>
#include <ftxui/dom/elements.hpp>
#include <toml.hpp>
@@ -9,46 +8,6 @@
#include "katja/database.hpp"
#include "component.hpp"
-class MyContainer final : public ftxui::ComponentBase
-{
-public:
- std::vector<std::string> menu_entries;
- std::vector<ftxui::Component> menu_pages;
- int menu_selected{ 0 };
- ftxui::Component menu;
- std::function<void()> on_enter;
-
- MyContainer(std::vector<std::pair<std::string, ftxui::Component>> pages)
- {
- std::transform(std::cbegin(pages), std::cend(pages), std::back_inserter(this->menu_entries),
- [](const std::pair<std::string, ftxui::Component>& pair) { return pair.first; });
- std::transform(std::cbegin(pages), std::cend(pages), std::back_inserter(this->menu_pages),
- [](const std::pair<std::string, ftxui::Component>& pair) { return pair.second; });
-
- ftxui::MenuOption menu_option = ftxui::MenuOption::Horizontal();
- menu = ftxui::Menu(&this->menu_entries, &this->menu_selected, menu_option);
- }
-
- ftxui::Element Render() override
- {
- return ftxui::vbox({
- this->menu->Render(),
- this->menu_pages.at(this->menu_selected)->Render()
- });
- }
-
- bool OnEvent(ftxui::Event event) override
- {
- if (event.character() == "q")
- {
- on_enter();
- return true;
- }
- return menu->OnEvent(event);
- }
-};
-
-
int main(int argc, const char **argv)
{
auto configuration = toml::parse("config/katja.toml");
@@ -62,7 +21,7 @@ int main(int argc, const char **argv)
auto screen = ftxui::ScreenInteractive::Fullscreen();
- auto container = std::make_shared<MyContainer>(std::vector<std::pair<std::string, ftxui::Component>>{
+ auto container = std::make_shared<katja::PageContainer>(std::vector<std::pair<std::string, katja::Page>>{
{ "Home", std::make_shared<katja::WelcomePage>() },
{ "Updates", std::make_shared<katja::UpdatesPage>(std::move(updates)) },
{ "Search", std::make_shared<katja::SearchPage>() }