From de059e317e43fa1b94d77fd981be68b86bf6de6e Mon Sep 17 00:00:00 2001 From: dec05eba Date: Fri, 20 Apr 2018 04:25:14 +0200 Subject: Add chatbar. No mouse editing but keyboard editing is supported --- src/main.cpp | 41 ++++++++++++++++++++++++++++++++++++++++- 1 file changed, 40 insertions(+), 1 deletion(-) (limited to 'src/main.cpp') diff --git a/src/main.cpp b/src/main.cpp index 85f1075..481f73a 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1,7 +1,11 @@ -#include #include "../include/MessageBoard.hpp" #include "../include/User.hpp" +#include "../include/Chatbar.hpp" +#include +#include +#include +using namespace std; using namespace dchat; int main() @@ -31,6 +35,8 @@ int main() message->addText(u8"hello, world!"); messageBoard.addMessage(message); } + + Chatbar chatbar; while (window.isOpen()) { @@ -44,11 +50,44 @@ int main() sf::View view(sf::FloatRect(0.0f, 0.0f, event.size.width, event.size.height)); window.setView(view); } + else 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); } window.clear(); messageBoard.draw(window); + chatbar.draw(window); window.display(); } -- cgit v1.2.3