#include "../include/Channel.hpp" #include using namespace std; namespace dchat { Channel::Channel() : messageBoard(sf::Vector2u(1.0f, 1.0f)), localOfflineUser("You") { { Message *message = new Message(&localOfflineUser); message->addText(u8"hello, worldåäö1!"); message->addImage("https://discordemoji.com/assets/emoji/playtime.png"); messageBoard.addMessage(message); } { Message *message = new Message(&localOfflineUser); message->addText(u8"hello, world2!"); messageBoard.addMessage(message); } { Message *message = new Message(&localOfflineUser); message->addText(u8"hello, world3!"); messageBoard.addMessage(message); } } Channel::~Channel() { } void Channel::processEvent(const sf::Event &event) { if(event.type == sf::Event::TextEntered) { if(event.text.unicode == 8) // backspace chatbar.removePreviousChar(); else if(event.text.unicode == 13) // enter { Message *message = new Message(&localOfflineUser); auto chatbarMsgUtf8 = chatbar.getString().toUtf8(); string msg; msg.resize(chatbarMsgUtf8.size()); memcpy(&msg[0], chatbarMsgUtf8.data(), chatbarMsgUtf8.size()); message->addText(msg); messageBoard.addMessage(message); chatbar.clear(); } else if(event.text.unicode == 127) // delete { chatbar.removeNextChar(); } else { chatbar.addChar(event.text.unicode); } } else if(event.type == sf::Event::KeyPressed) { if(event.key.code == sf::Keyboard::Left) chatbar.moveCaretLeft(); else if(event.key.code == sf::Keyboard::Right) chatbar.moveCaretRight(); } messageBoard.processEvent(event); } void Channel::draw(sf::RenderWindow &window, Cache &cache) { messageBoard.draw(window, cache); chatbar.draw(window); } }