diff options
Diffstat (limited to 'src/Channel.cpp')
-rw-r--r-- | src/Channel.cpp | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/src/Channel.cpp b/src/Channel.cpp new file mode 100644 index 0000000..0fc7ec5 --- /dev/null +++ b/src/Channel.cpp @@ -0,0 +1,79 @@ +#include "../include/Channel.hpp" +#include <cstring> + +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/think_fish.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); + } +} |