ChatHistory.cpp 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. #include "ChatHistory.h"
  2. #include <Image.h>
  3. #include <Scroll.h>
  4. ChatHistory::ChatHistory()
  5. : Framework::DrawableBackground()
  6. {
  7. setStyle(Style::Visible | Style::Allowed | Style::VScroll);
  8. setVerticalScrollPos(0);
  9. setMouseEvent(Framework::_ret1ME);
  10. }
  11. void ChatHistory::addMessage(ChatMessage* message)
  12. {
  13. messages.add(message);
  14. scrollToBottom = 1;
  15. }
  16. void ChatHistory::render(Framework::Image& rObj)
  17. {
  18. DrawableBackground::render(rObj);
  19. if (!rObj.setDrawOptions(innenPosition, innenSize)) return;
  20. rObj.addScrollOffset(
  21. horizontalScrollBar ? horizontalScrollBar->getScroll() : 0,
  22. vertikalScrollBar ? vertikalScrollBar->getScroll() : 0);
  23. for (ChatMessage* msg : messages)
  24. msg->render(rObj);
  25. rObj.releaseDrawOptions();
  26. }
  27. bool ChatHistory::tick(double tickVal)
  28. {
  29. int y = 0;
  30. for (ChatMessage* msg : messages)
  31. {
  32. msg->setPosition(0, y);
  33. msg->setWidth(innenSize.x);
  34. rend |= msg->tick(tickVal);
  35. y += msg->getHeight();
  36. }
  37. vertikalScrollBar->update(y, innenSize.y);
  38. if (scrollToBottom)
  39. {
  40. setVerticalScrollPos(y);
  41. scrollToBottom = 0;
  42. }
  43. return DrawableBackground::tick(tickVal);
  44. }