From e45172ea1b3a7c24af0025eb0b3882e4cb553014 Mon Sep 17 00:00:00 2001 From: tux3 Date: Thu, 21 Jan 2016 04:47:26 +0100 Subject: [PATCH] Fix #944: Allow transparent avatars --- src/widget/form/chatform.cpp | 4 +-- src/widget/form/groupchatform.cpp | 2 +- src/widget/friendwidget.cpp | 11 +++--- src/widget/groupwidget.cpp | 6 ++-- src/widget/maskablepixmapwidget.cpp | 54 ----------------------------- src/widget/maskablepixmapwidget.h | 4 +-- 6 files changed, 12 insertions(+), 69 deletions(-) diff --git a/src/widget/form/chatform.cpp b/src/widget/form/chatform.cpp index 50f9e8092..3fe1b468f 100644 --- a/src/widget/form/chatform.cpp +++ b/src/widget/form/chatform.cpp @@ -72,7 +72,7 @@ ChatForm::ChatForm(Friend* chatFriend) nameLabel->setText(f->getDisplayedName()); - avatar->setPixmap(QPixmap(":/img/contact_dark.svg"), Qt::transparent); + avatar->setPixmap(QPixmap(":/img/contact_dark.svg")); statusMessageLabel = new CroppingLabel(); statusMessageLabel->setObjectName("statusLabel"); @@ -673,7 +673,7 @@ void ChatForm::onAvatarRemoved(uint32_t FriendId) if (FriendId != f->getFriendID()) return; - avatar->setPixmap(QPixmap(":/img/contact_dark.svg"), Qt::transparent); + avatar->setPixmap(QPixmap(":/img/contact_dark.svg")); } void ChatForm::loadHistory(QDateTime since, bool processUndelivered) diff --git a/src/widget/form/groupchatform.cpp b/src/widget/form/groupchatform.cpp index e837d01ec..49eabf169 100644 --- a/src/widget/form/groupchatform.cpp +++ b/src/widget/form/groupchatform.cpp @@ -63,7 +63,7 @@ GroupChatForm::GroupChatForm(Group* chatGroup) nusersLabel->setObjectName("statusLabel"); retranslateUi(); - avatar->setPixmap(Style::scaleSvgImage(":/img/group_dark.svg", avatar->width(), avatar->height()), Qt::transparent); + avatar->setPixmap(Style::scaleSvgImage(":/img/group_dark.svg", avatar->width(), avatar->height())); msgEdit->setObjectName("group"); diff --git a/src/widget/friendwidget.cpp b/src/widget/friendwidget.cpp index 59cf07522..c8e5e06cb 100644 --- a/src/widget/friendwidget.cpp +++ b/src/widget/friendwidget.cpp @@ -49,7 +49,7 @@ FriendWidget::FriendWidget(int FriendId, QString id) , isDefaultAvatar{true} , historyLoaded{false} { - avatar->setPixmap(QPixmap(":/img/contact.svg"), Qt::transparent); + avatar->setPixmap(QPixmap(":/img/contact.svg")); statusPic.setPixmap(QPixmap(":/img/status/dot_offline.svg")); statusPic.setMargin(3); nameLabel->setText(id); @@ -261,7 +261,7 @@ void FriendWidget::setAsActiveChatroom() setActive(true); if (isDefaultAvatar) - avatar->setPixmap(QPixmap(":img/contact_dark.svg"), Qt::transparent); + avatar->setPixmap(QPixmap(":img/contact_dark.svg")); } void FriendWidget::setAsInactiveChatroom() @@ -269,7 +269,7 @@ void FriendWidget::setAsInactiveChatroom() setActive(false); if (isDefaultAvatar) - avatar->setPixmap(QPixmap(":img/contact.svg"), Qt::transparent); + avatar->setPixmap(QPixmap(":img/contact.svg")); } void FriendWidget::updateStatusLight() @@ -365,7 +365,6 @@ void FriendWidget::onAvatarChange(int FriendId, const QPixmap& pic) isDefaultAvatar = false; avatar->setPixmap(pic); - avatar->autopickBackground(); } void FriendWidget::onAvatarRemoved(int FriendId) @@ -376,9 +375,9 @@ void FriendWidget::onAvatarRemoved(int FriendId) isDefaultAvatar = true; if (isActive()) - avatar->setPixmap(QPixmap(":/img/contact_dark.svg"), Qt::transparent); + avatar->setPixmap(QPixmap(":/img/contact_dark.svg")); else - avatar->setPixmap(QPixmap(":/img/contact.svg"), Qt::transparent); + avatar->setPixmap(QPixmap(":/img/contact.svg")); } void FriendWidget::mousePressEvent(QMouseEvent *ev) diff --git a/src/widget/groupwidget.cpp b/src/widget/groupwidget.cpp index a4cbec9e6..3a2e8eb2a 100644 --- a/src/widget/groupwidget.cpp +++ b/src/widget/groupwidget.cpp @@ -39,7 +39,7 @@ GroupWidget::GroupWidget(int GroupId, QString Name) : groupId{GroupId} { - avatar->setPixmap(Style::scaleSvgImage(":img/group.svg", avatar->width(), avatar->height()), Qt::transparent); + avatar->setPixmap(Style::scaleSvgImage(":img/group.svg", avatar->width(), avatar->height())); statusPic.setPixmap(QPixmap(":img/status/dot_online.svg")); statusPic.setMargin(3); nameLabel->setText(Name); @@ -164,13 +164,13 @@ void GroupWidget::onUserListChanged() void GroupWidget::setAsActiveChatroom() { setActive(true); - avatar->setPixmap(Style::scaleSvgImage(":img/group_dark.svg", avatar->width(), avatar->height()), Qt::transparent); + avatar->setPixmap(Style::scaleSvgImage(":img/group_dark.svg", avatar->width(), avatar->height())); } void GroupWidget::setAsInactiveChatroom() { setActive(false); - avatar->setPixmap(Style::scaleSvgImage(":img/group.svg", avatar->width(), avatar->height()), Qt::transparent); + avatar->setPixmap(Style::scaleSvgImage(":img/group.svg", avatar->width(), avatar->height())); } void GroupWidget::updateStatusLight() diff --git a/src/widget/maskablepixmapwidget.cpp b/src/widget/maskablepixmapwidget.cpp index bb2bf8fa9..3791c8a5d 100644 --- a/src/widget/maskablepixmapwidget.cpp +++ b/src/widget/maskablepixmapwidget.cpp @@ -23,7 +23,6 @@ MaskablePixmapWidget::MaskablePixmapWidget(QWidget *parent, QSize size, QString maskName) : QWidget(parent) , maskName(maskName) - , backgroundColor(Qt::white) , clickable(false) { setSize(size); @@ -34,43 +33,6 @@ MaskablePixmapWidget::~MaskablePixmapWidget() delete renderTarget; } -void MaskablePixmapWidget::autopickBackground() -{ - QImage pic = pixmap.toImage(); - - if (pic.isNull()) - return; - - int r = 0; - int g = 0; - int b = 0; - int weight = 0; - - for (int x=0;xclickable = clickable; @@ -81,25 +43,12 @@ void MaskablePixmapWidget::setClickable(bool clickable) unsetCursor(); } -void MaskablePixmapWidget::setPixmap(const QPixmap &pmap, const QColor &background) -{ - if (!pmap.isNull()) - { - unscaled = pmap; - pixmap = pmap.scaled(width() - 2, height() - 2, Qt::KeepAspectRatioByExpanding, Qt::SmoothTransformation); - backgroundColor = background; - manualColor = true; - update(); - } -} - void MaskablePixmapWidget::setPixmap(const QPixmap &pmap) { if (!pmap.isNull()) { unscaled = pmap; pixmap = pmap.scaled(width() - 2, height() - 2, Qt::KeepAspectRatioByExpanding, Qt::SmoothTransformation); - autopickBackground(); update(); } } @@ -122,8 +71,6 @@ void MaskablePixmapWidget::setSize(QSize size) if (!unscaled.isNull()) { pixmap = unscaled.scaled(width() - 2, height() - 2, Qt::KeepAspectRatioByExpanding, Qt::SmoothTransformation); - if (!manualColor) - autopickBackground(); update(); } } @@ -136,7 +83,6 @@ void MaskablePixmapWidget::paintEvent(QPaintEvent *) QPainter painter(renderTarget); painter.setCompositionMode(QPainter::CompositionMode_SourceOver); - painter.fillRect(0,0,width(),height(),backgroundColor); painter.drawPixmap(offset,pixmap); painter.setCompositionMode(QPainter::CompositionMode_DestinationIn); painter.drawPixmap(0,0,mask); diff --git a/src/widget/maskablepixmapwidget.h b/src/widget/maskablepixmapwidget.h index 9cfad272e..f709b6c5b 100644 --- a/src/widget/maskablepixmapwidget.h +++ b/src/widget/maskablepixmapwidget.h @@ -30,7 +30,6 @@ public: ~MaskablePixmapWidget(); void autopickBackground(); void setClickable(bool clickable); - void setPixmap(const QPixmap &pmap, const QColor &background); void setPixmap(const QPixmap &pmap); QPixmap getPixmap() const; void setSize(QSize size); @@ -47,8 +46,7 @@ private: QPixmap* renderTarget = nullptr; // pointer to dynamically call the constructor QSize size; QString maskName; - QColor backgroundColor; - bool clickable, manualColor = false; + bool clickable; }; #endif // MASKABLEPIXMAPWIDGET_H