Added button to go to page 2, fixed string issue.

This commit is contained in:
Yohan Boujon 2025-05-08 18:35:16 +02:00
parent c90b0bcabb
commit f63c6e83a8
3 changed files with 22 additions and 8 deletions

View file

@ -16,13 +16,15 @@ private:
ftxui::Element transform(ftxui::InputState state); ftxui::Element transform(ftxui::InputState state);
ftxui::Element render_input(); ftxui::Element render_input();
ftxui::Element render_log(); ftxui::Element render_log();
ftxui::Element render_status(); ftxui::Component render_status();
bool catch_event(ftxui::Event event); bool catch_event(ftxui::Event event);
void change_screen();
std::string _input_str; std::string _input_str;
ftxui::InputOption _input_option; ftxui::InputOption _input_option;
bool _input_selected; bool _input_selected;
ftxui::Component _input_component; ftxui::Component _input_component;
ftxui::Component _button;
}; };
#endif // HEADER_PAGE1_FTXUI #endif // HEADER_PAGE1_FTXUI

View file

@ -22,7 +22,7 @@ static char time_buffer[11];
inline static const char *get_time_str(uint64_t epoch) inline static const char *get_time_str(uint64_t epoch)
{ {
std::tm epoch_time; 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)); 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); snprintf(time_buffer, 11, "[%02d:%02d:%02d]", epoch_time.tm_hour, epoch_time.tm_min, epoch_time.tm_sec);
return time_buffer; return time_buffer;
@ -85,7 +85,7 @@ ftxui::Element Page1::render_log()
if (logger.type == LoggerType::PRINT) if (logger.type == LoggerType::PRINT)
{ {
log_lines.push_back(hbox({text(get_time_str(logger.epoch)) | color(Color::GrayDark), 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) else if (logger.type == LoggerType::COMMAND)
{ {
@ -101,9 +101,22 @@ ftxui::Element Page1::render_log()
flex; 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<size_t>(1));
} }
Page1::Page1(EventHandler &handler) Page1::Page1(EventHandler &handler)
@ -128,8 +141,7 @@ Page1::Page1(EventHandler &handler)
Component log = Renderer([&]() Component log = Renderer([&]()
{ return render_log(); }); { return render_log(); });
Component status = Renderer([&]() Component status = render_status();
{ return render_status(); });
_page = Container::Vertical({ _page = Container::Vertical({
Container::Horizontal({log, Container::Horizontal({log,

View file

@ -12,7 +12,7 @@ inline const std::vector<std::string> create_entries(const size_t num)
{ {
std::vector<std::string> ret; std::vector<std::string> ret;
for (size_t i = 0; i < num; i++) 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; return ret;
} }