ui: instant messaging ui update

- rounded corners, use Arial font, anti-aliasing, misc.
- style sync with instantmessagingwidget

Change-Id: I0b214550110dc45593a3e45094324ee6da6e740c
Tuleap: #148
diff --git a/imdelegate.cpp b/imdelegate.cpp
index f5c3c0f..e670a9a 100644
--- a/imdelegate.cpp
+++ b/imdelegate.cpp
@@ -1,5 +1,5 @@
 /***************************************************************************
- * Copyright (C) 2015-2016 by Savoir-faire Linux                                *
+ * Copyright (C) 2015-2016 by Savoir-faire Linux                           *
  * Author: Edric Ladent Milaret <edric.ladent-milaret@savoirfairelinux.com>*
  *                                                                         *
  * This program is free software; you can redistribute it and/or modify    *
@@ -56,9 +56,11 @@
 {
     QStyleOptionViewItem opt = option;
     initStyleOption(&opt, index);
-
     painter->setRenderHint(QPainter::Antialiasing);
 
+    opt.font = fontMsg_;
+    painter->setFont(fontMsg_);
+
     if (index.isValid()) {
         auto msg = index.data(Qt::DisplayRole).toString();
         opt.text.clear();
@@ -75,27 +77,29 @@
         formatMsg(index, msg);
 
         QRect textRect = getBoundingRect(dir, msg, opt);
-        QRect bubbleRect(textRect.left() - bubblePadding_,
-                         textRect.top() - bubblePadding_,
-                         textRect.width() + bubblePadding_,
-                         textRect.height() + bubblePadding_);
-        bubbleRect.setBottom(bubbleRect.bottom() + bubblePadding_);
-        bubbleRect.setRight(bubbleRect.right() + bubblePadding_);
+
+        QRect bubbleRect(textRect.left() - padding_,
+                         textRect.top() - padding_,
+                         textRect.width() + 2 * padding_,
+                         textRect.height() + 2 * padding_ );
+
         opt.decorationSize = iconSize_;
-        opt.decorationPosition = (dir == Qt::AlignRight ? QStyleOptionViewItem::Right : QStyleOptionViewItem::Left);
+        opt.decorationPosition = (dir == Qt::AlignRight ?
+                                      QStyleOptionViewItem::Right : QStyleOptionViewItem::Left);
         opt.decorationAlignment = Qt::AlignTop | Qt::AlignHCenter;
         style->drawControl(QStyle::CE_ItemViewItem, &opt, painter, opt.widget);
 
-        painter->save();
-        QPen pen(blue, padding_);
-        if (dir == Qt::AlignRight)
-            pen.setColor(grey);
         QPainterPath path;
         path.addRoundedRect(bubbleRect, padding_, padding_);
-        painter->setPen(pen);
-        painter->fillPath(path, pen.color());
-        painter->drawPath(path);
-        painter->restore();
+
+        if (dir == Qt::AlignRight) {
+            painter->fillPath(path, blue_);
+            painter->setPen(Qt::white);
+        }
+        else {
+            painter->fillPath(path, Qt::white);
+            painter->setPen(Qt::black);
+        }
 
         painter->drawText(textRect, Qt::AlignLeft | Qt::AlignTop | Qt::TextWordWrap, msg);
     }
@@ -108,16 +112,16 @@
     QRect textRect;
 
     if (dir == Qt::AlignRight) {
-        textRect = textFontMetrics.boundingRect(option.rect.left(),
-                                                option.rect.top() + padding_,
-                                                option.rect.width() - iconSize_.width() - 2 * padding_,
+        textRect = textFontMetrics.boundingRect(option.rect.left() + 2 * padding_,
+                                                option.rect.top() + 2 * padding_,
+                                                option.rect.width() - iconSize_.width() - 4 * padding_,
                                                 0,
                                                 dir|Qt::AlignTop|Qt::TextWordWrap,
                                                 msg);
     } else {
         textRect = textFontMetrics.boundingRect(option.rect.left() + iconSize_.width() + 2 * padding_,
-                                                option.rect.top() + padding_,
-                                                option.rect.width() - iconSize_.width(),
+                                                option.rect.top() + 2 * padding_,
+                                                option.rect.width() - iconSize_.width() - 4 * padding_ ,
                                                 0,
                                                 dir|Qt::AlignTop|Qt::TextWordWrap,
                                                 msg);
@@ -129,6 +133,9 @@
 ImDelegate::sizeHint(const QStyleOptionViewItem& option,
                      const QModelIndex& index) const
 {
+    QStyleOptionViewItem opt = option;
+    opt.font = fontMsg_;
+
     QString msg = index.data(Qt::DisplayRole).toString();
 
     auto dir = index.data(
@@ -138,13 +145,13 @@
 
     formatMsg(index, msg);
 
-    QRect subheaderRect = getBoundingRect(dir, msg, option);
+    QRect boundingRect = getBoundingRect(dir, msg, opt);
 
-    QSize size(option.rect.width(), subheaderRect.height() + 3 * padding_);
+    QSize size(option.rect.width(), boundingRect.height() + padding_);
 
     /* Keep the minimum height needed. */
     if(size.height() < iconSize_.height())
-        size.setHeight(iconSize_.height() + 3 * padding_);
+        size.setHeight(iconSize_.height() + padding_);
 
     return size;
 }