presence: add indicators in smartlist

Presence indicators are now displayed in the smartlist. It is placed
at the bottom left of an avatar and is refreshed automatically when
presence status is modified.

Change-Id: I4acf8a0df0d8a0f03ac013388bf5fc5d417afcb5
Reviewed-by: Olivier Soldano <olivier.soldano@savoirfairelinux.com>
diff --git a/smartlistdelegate.cpp b/smartlistdelegate.cpp
index e9411ed..cf56ed5 100644
--- a/smartlistdelegate.cpp
+++ b/smartlistdelegate.cpp
@@ -98,6 +98,16 @@
         painter->drawText(pastilleRect, Qt::AlignCenter, messageCountText);
     }
 
+    // Presence indicator
+    QPainterPath outerCircle, innerCircle;
+    QPointF center(rectAvatar.left() + sizeImage_/6, (rectAvatar.bottom() - sizeImage_/6) + 1);
+    qreal outerCRadius = sizeImage_ / 6, innerCRadius = outerCRadius * 0.75;
+    outerCircle.addEllipse(center, outerCRadius, outerCRadius);
+    innerCircle.addEllipse(center, innerCRadius, innerCRadius);
+    if (index.data(static_cast<int>(Ring::Role::IsPresent)).value<bool>()) {
+        painter->fillPath(outerCircle, Qt::white);
+        painter->fillPath(innerCircle, RingTheme::green_);
+    }
     font.setPointSize(fontSize_);
     QPen pen(painter->pen());