-#include "uistyle.h"
-
-ChatLineModelItem::ChatLineModelItem(const Message &msg) : MessageModelItem(msg) {
- QtUiStyle::StyledMessage m = QtUi::style()->styleMessage(msg);
-
- _timestamp.plainText = m.timestamp.plainText;
- _sender.plainText = m.sender.plainText;
- _contents.plainText = m.contents.plainText;
-
- _timestamp.formatList = m.timestamp.formatList;
- _sender.formatList = m.sender.formatList;
- _contents.formatList = m.contents.formatList;
-
- computeWrapList();
+#include "qtuistyle.h"
+
+// This Struct is taken from Harfbuzz. We use it only to calc it's size.
+// we use a shared memory region so we do not have to malloc a buffer area for every line
+typedef struct {
+ /*HB_LineBreakType*/ unsigned lineBreakType :2;
+ /*HB_Bool*/ unsigned whiteSpace :1; /* A unicode whitespace character, except NBSP, ZWNBSP */
+ /*HB_Bool*/ unsigned charStop :1; /* Valid cursor position (for left/right arrow) */
+ /*HB_Bool*/ unsigned wordBoundary :1;
+ /*HB_Bool*/ unsigned sentenceBoundary :1;
+ unsigned unused :2;
+} HB_CharAttributes_Dummy;
+
+
+unsigned char *ChatLineModelItem::TextBoundaryFinderBuffer = (unsigned char *)malloc(512 * sizeof(HB_CharAttributes_Dummy));
+int ChatLineModelItem::TextBoundaryFinderBufferSize = 512 * (sizeof(HB_CharAttributes_Dummy) / sizeof(unsigned char));
+
+// ****************************************
+// the actual ChatLineModelItem
+// ****************************************
+ChatLineModelItem::ChatLineModelItem(const Message &msg)
+ : MessageModelItem(),
+ _styledMsg(msg)
+{
+ if(!msg.sender().contains('!'))
+ _styledMsg.setFlags(msg.flags() |= Message::ServerMsg);