aboutsummaryrefslogtreecommitdiff
path: root/cli/component.hpp
diff options
context:
space:
mode:
authorEugen Wissner <belka@caraus.de>2025-03-28 17:21:46 +0100
committerEugen Wissner <belka@caraus.de>2025-03-28 17:21:46 +0100
commit86ea47342b4a87c25c3daac1fe87d784990d65d6 (patch)
tree1420f87669c571352f47e11919c6f9eedca63fe7 /cli/component.hpp
parent7906bd3ecbd7fa3855c9ee346911feada20438d3 (diff)
downloadkazbek-86ea47342b4a87c25c3daac1fe87d784990d65d6.tar.gz
katja: Make an interactive loop
Diffstat (limited to 'cli/component.hpp')
-rw-r--r--cli/component.hpp33
1 files changed, 33 insertions, 0 deletions
diff --git a/cli/component.hpp b/cli/component.hpp
new file mode 100644
index 0000000..a6c1f0d
--- /dev/null
+++ b/cli/component.hpp
@@ -0,0 +1,33 @@
+#pragma once
+
+#include <ftxui/component/component_base.hpp>
+
+#include "katja/repository.hpp"
+
+namespace katja
+{
+class UpdatesPage : public ftxui::ComponentBase
+{
+ std::vector<package_identifier> updatable;
+
+public:
+ explicit UpdatesPage(std::vector<package_identifier>&& updatable)
+ : updatable(std::move(updatable))
+ {
+ }
+
+ ftxui::Element Render() override
+ {
+ std::vector<std::shared_ptr<ftxui::Node>> lines;
+
+ for (const auto& package_identifier : this->updatable)
+ {
+ auto line = ftxui::text(package_identifier.to_string()) | color(ftxui::Color::SkyBlue2);
+ lines.push_back(line);
+ }
+ ftxui::Element summary = ftxui::text(" Updates (" + std::to_string(lines.size()) + ")");
+
+ return ftxui::window(summary, ftxui::vbox(lines));
+ }
+};
+}