aboutsummaryrefslogtreecommitdiff
path: root/src/Channel.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/Channel.cpp')
-rw-r--r--src/Channel.cpp79
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);
+ }
+}