From d5c8f45ab9bb1178c25b16e28154ed16c584f502 Mon Sep 17 00:00:00 2001 From: Matt Lowe Date: Fri, 23 Jan 2015 02:09:01 +0100 Subject: [PATCH] Added buddy stars to chat --- cockatrice/cockatrice.qrc | 2 ++ cockatrice/resources/buddy_icon.svg | 56 +++++++++++++++++++++++++++++ cockatrice/src/chatview.cpp | 3 ++ cockatrice/src/pixmapgenerator.cpp | 16 +++++++++ cockatrice/src/pixmapgenerator.h | 8 +++++ 5 files changed, 85 insertions(+) create mode 100644 cockatrice/resources/buddy_icon.svg 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 @@ + + + + + + image/svg+xml + + + + + + + + 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