diff --git a/cockatrice/cockatrice.qrc b/cockatrice/cockatrice.qrc
index f8ce1bb8f..73fa3f87e 100644
--- a/cockatrice/cockatrice.qrc
+++ b/cockatrice/cockatrice.qrc
@@ -54,6 +54,8 @@
resources/genders/male.svg
resources/genders/female.svg
resources/genders/unknown.svg
+
+ resources/buddy_icon.svg
resources/countries/ar.svg
resources/countries/at.svg
diff --git a/cockatrice/resources/buddy_icon.svg b/cockatrice/resources/buddy_icon.svg
new file mode 100644
index 000000000..e487714aa
--- /dev/null
+++ b/cockatrice/resources/buddy_icon.svg
@@ -0,0 +1,56 @@
+
+
diff --git a/cockatrice/src/chatview.cpp b/cockatrice/src/chatview.cpp
index 5d85f58ce..cc93859d5 100644
--- a/cockatrice/src/chatview.cpp
+++ b/cockatrice/src/chatview.cpp
@@ -133,6 +133,9 @@ void ChatView::appendMessage(QString message, QString sender, UserLevelFlags use
if (!sender.isEmpty()) {
const int pixelSize = QFontInfo(cursor.charFormat().font()).pixelSize();
cursor.insertImage(UserLevelPixmapGenerator::generatePixmap(pixelSize, userLevel).toImage(), QString::number(pixelSize) + "_" + QString::number((int) userLevel));
+ QMap buddyList = tabSupervisor->getUserListsTab()->getBuddyList()->getUsers();
+ if (buddyList.contains(sender))
+ cursor.insertImage(PixmapGenerator::generatePixmap(pixelSize, ":/resources/buddy_icon.svg").toImage());
cursor.insertText(" ");
}
cursor.setCharFormat(senderFormat);
diff --git a/cockatrice/src/pixmapgenerator.cpp b/cockatrice/src/pixmapgenerator.cpp
index 8bae48539..1a50f23a5 100644
--- a/cockatrice/src/pixmapgenerator.cpp
+++ b/cockatrice/src/pixmapgenerator.cpp
@@ -160,4 +160,20 @@ QPixmap UserLevelPixmapGenerator::generatePixmap(int height, UserLevelFlags user
return pixmap;
}
+QMap PixmapGenerator::pmCache;
+QPixmap PixmapGenerator::generatePixmap(int height, QString resourceName) {
+ if (pmCache.contains(resourceName))
+ return pmCache.value(resourceName);
+
+ QSvgRenderer svg(resourceName);
+ int width = (int) round(height * (double) svg.defaultSize().width() / (double) svg.defaultSize().height());
+ QPixmap pixmap(width, height);
+ pixmap.fill(Qt::transparent);
+ QPainter painter(&pixmap);
+ svg.render(&painter, QRectF(0, 0, width, height));
+
+ pmCache.insert(resourceName, pixmap);
+ return pixmap;
+}
+
QMap UserLevelPixmapGenerator::pmCache;
diff --git a/cockatrice/src/pixmapgenerator.h b/cockatrice/src/pixmapgenerator.h
index 67a8b2b2e..a7ead3a26 100644
--- a/cockatrice/src/pixmapgenerator.h
+++ b/cockatrice/src/pixmapgenerator.h
@@ -54,4 +54,12 @@ public:
static void clear() { pmCache.clear(); }
};
+class PixmapGenerator {
+private:
+ static QMap pmCache;
+public:
+ static QPixmap generatePixmap(int height, QString resourceName);
+ static void clear() { pmCache.clear(); }
+};
+
#endif