From f63c6e83a82c172ac96d0f093000771769c6ba5a Mon Sep 17 00:00:00 2001 From: Yohan Boujon Date: Thu, 8 May 2025 18:35:16 +0200 Subject: [PATCH] Added button to go to page 2, fixed string issue. --- include/pages/page1.h | 4 +++- src/pages/page1.cpp | 24 ++++++++++++++++++------ src/pages/page2.cpp | 2 +- 3 files changed, 22 insertions(+), 8 deletions(-) diff --git a/include/pages/page1.h b/include/pages/page1.h index 650cb32..7450d05 100644 --- a/include/pages/page1.h +++ b/include/pages/page1.h @@ -16,13 +16,15 @@ private: ftxui::Element transform(ftxui::InputState state); ftxui::Element render_input(); ftxui::Element render_log(); - ftxui::Element render_status(); + ftxui::Component render_status(); bool catch_event(ftxui::Event event); + void change_screen(); std::string _input_str; ftxui::InputOption _input_option; bool _input_selected; ftxui::Component _input_component; + ftxui::Component _button; }; #endif // HEADER_PAGE1_FTXUI \ No newline at end of file diff --git a/src/pages/page1.cpp b/src/pages/page1.cpp index ddaf79e..676a8e9 100644 --- a/src/pages/page1.cpp +++ b/src/pages/page1.cpp @@ -22,7 +22,7 @@ static char time_buffer[11]; inline static const char *get_time_str(uint64_t epoch) { std::tm epoch_time; - const std::time_t time_epoch = epoch/1000; + const std::time_t time_epoch = epoch / 1000; memcpy(&epoch_time, localtime(&time_epoch), sizeof(struct tm)); snprintf(time_buffer, 11, "[%02d:%02d:%02d]", epoch_time.tm_hour, epoch_time.tm_min, epoch_time.tm_sec); return time_buffer; @@ -85,7 +85,7 @@ ftxui::Element Page1::render_log() if (logger.type == LoggerType::PRINT) { log_lines.push_back(hbox({text(get_time_str(logger.epoch)) | color(Color::GrayDark), - text(" "+logger.str)})); + text(" " + logger.str)})); } else if (logger.type == LoggerType::COMMAND) { @@ -101,9 +101,22 @@ ftxui::Element Page1::render_log() flex; } -ftxui::Element Page1::render_status() +ftxui::Component Page1::render_status() { - return window(text("status") | hcenter | bold, text("content") | center | dim, BorderStyle::EMPTY) | flex | size(WIDTH, GREATER_THAN, 30); + _button = Button("Go to Page2", [&] + { return change_screen(); }); + + return Renderer(_button, [this] + { return window( + text("status") | hcenter | bold, + vbox({text("content") | center | dim, + _button->Render() | center})) | + flex | size(WIDTH, GREATER_THAN, 30); }); +} + +void Page1::change_screen() +{ + this->send_event(EventType::SWITCH_SCREEN, static_cast(1)); } Page1::Page1(EventHandler &handler) @@ -128,8 +141,7 @@ Page1::Page1(EventHandler &handler) Component log = Renderer([&]() { return render_log(); }); - Component status = Renderer([&]() - { return render_status(); }); + Component status = render_status(); _page = Container::Vertical({ Container::Horizontal({log, diff --git a/src/pages/page2.cpp b/src/pages/page2.cpp index 35cdb09..74cd8f4 100644 --- a/src/pages/page2.cpp +++ b/src/pages/page2.cpp @@ -12,7 +12,7 @@ inline const std::vector create_entries(const size_t num) { std::vector ret; for (size_t i = 0; i < num; i++) - ret.push_back("Sample " + std::to_string(num)); + ret.push_back("Sample " + std::to_string(i)); return ret; }