ChatHistory.cpp 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. #include "ChatHistory.h"
  2. #include <Bild.h>
  3. #include <Scroll.h>
  4. ChatHistory::ChatHistory()
  5. : Framework::ZeichnungHintergrund()
  6. {
  7. setStyle(Style::Sichtbar | Style::Erlaubt | Style::VScroll);
  8. setVertikalScrollPos(0);
  9. setMausEreignis(Framework::_ret1ME);
  10. }
  11. void ChatHistory::addMessage(ChatMessage* message)
  12. {
  13. messages.add(message);
  14. scrollToBottom = 1;
  15. }
  16. void ChatHistory::render(Framework::Bild& rObj)
  17. {
  18. ZeichnungHintergrund::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. setVertikalScrollPos(y);
  41. scrollToBottom = 0;
  42. }
  43. return ZeichnungHintergrund::tick(tickVal);
  44. }