diff options
Diffstat (limited to 'src/inputManager.cpp')
| -rw-r--r-- | src/inputManager.cpp | 70 |
1 files changed, 0 insertions, 70 deletions
diff --git a/src/inputManager.cpp b/src/inputManager.cpp deleted file mode 100644 index d392081..0000000 --- a/src/inputManager.cpp +++ /dev/null @@ -1,70 +0,0 @@ -#include "inputManager.hpp" -#include "IOManager.hpp" -#include "chatManager.hpp" -#include "commandHandler.hpp" -#include "log.hpp" -#include "renderManager.hpp" -#include "scroller.hpp" - -CInputManager::CInputManager() - : m_input(ftxui::Input(&m_szInput, "Type here...", {.transform = [](ftxui::InputState state) { - state.element |= ftxui::bgcolor(ftxui::Color::HSVA(0, 0, 0, 0)); - state.element |= ftxui::color(ftxui::Color::White); - return state.element; }, .multiline = false, .on_enter = [&] { - if (m_szInput.empty()) - return; - - g_pCommandHandler->isCommand(m_szInput) ? g_pCommandHandler->handleCommand(m_szInput) : g_pChatManager->newMessage({.msg = m_szInput, .username = "Server"}); - m_szInput.clear(); }}) // NOLINT - ) - , inputComponent(ftxui::Renderer(m_input, [&] { - return ftxui::hbox({ - ftxui::text("> "), - m_input->Render(), - }); - })) - , logComponent(ftxui::Renderer([] { - std::vector<ftxui::Element> messages; - for (const auto &[chat, log, custom] : g_pIOManager->getIO()) { - if (chat && !chat->msg.empty()) { - std::string username = chat->username; - if (username.back() == '\n') - username.pop_back(); - messages.push_back(ftxui::window(ftxui::text(username), ftxui::paragraph(chat->msg))); - } else if (log && !log->log.empty()) - messages.push_back(ftxui::window(ftxui::text(NFormatter::fmt(log->type, "")), ftxui::paragraph(log->log))); - else if (custom) - messages.push_back(ftxui::window(ftxui::text(custom->first), ftxui::paragraph(custom->second))); - } - - return ftxui::vbox(messages); - })) { - - log(LOG, "InputManager: initialized"); -} - -CInputManager::~CInputManager() { - log(SYS, "InputManager: bye"); -} - -void CInputManager::updateIO() { - logComponent->OnEvent(ftxui::Event::Custom); - g_pRenderManager->screen.PostEvent(ftxui::Event::Custom); -} - -void CInputManager::inputLoop() { - container = logComponent |= ftxui::Scroller; - container = ftxui::ResizableSplitBottom(inputComponent, container, &bottomSize); - - // FIXME: this shit spams TakeFocus(not ideal for power etc reasons) - // consider: custom loop, or just only allow focus to be inputComponent somehow - container |= ftxui::CatchEvent([&](ftxui::Event) { - inputComponent->TakeFocus(); - return false; - }); - g_pRenderManager->setRenderer(ftxui::Renderer(container, [this] { - return container->Render() | ftxui::border; - })); - inputComponent->TakeFocus(); - g_pRenderManager->enterLoop(); -} |
