Index: src/psipopup.cpp =================================================================== --- src/psipopup.cpp (revision 1061) +++ src/psipopup.cpp (working copy) @@ -31,6 +31,7 @@ #include "psiiconset.h" #include "iconlabel.h" #include "psioptions.h" +#include "avatars.h" #include #include @@ -68,7 +69,7 @@ void init(const PsiIcon *titleIcon, QString titleText, PsiAccount *_acc, PopupType type); QString clipText(QString); - QBoxLayout *createContactInfo(const PsiIcon *icon, QString text); + QBoxLayout *createContactInfo(const QPixmap *avatar, const PsiIcon *icon, QString text); private slots: void popupDestroyed(); @@ -193,11 +194,21 @@ return text; } -QBoxLayout *PsiPopup::Private::createContactInfo(const PsiIcon *icon, QString text) +QBoxLayout *PsiPopup::Private::createContactInfo(const QPixmap *avatar, const PsiIcon *icon, QString text) { QHBoxLayout *dataBox = new QHBoxLayout(); - if ( icon ) { + + if (avatar && !avatar->isNull()) { + int size = PsiOptions::instance()->getOption("options.ui.chat.avatars.size").toInt(); + QLabel *avatarLabel = new QLabel(popup); + avatarLabel->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Preferred); + avatarLabel->setPixmap(avatar->scaled(QSize(size, size), Qt::KeepAspectRatio, Qt::SmoothTransformation)); + dataBox->addWidget(avatarLabel); + dataBox->addSpacing(5); + } + + if (icon) { IconLabel *iconLabel = new IconLabel(popup); iconLabel->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Preferred); iconLabel->setPsiIcon(icon); @@ -283,14 +294,14 @@ d->init(icon, text, acc, doAlertIcon ? type : AlertNone); } -void PsiPopup::setData(const PsiIcon *icon, QString text) +void PsiPopup::setData(const QPixmap *avatar, const PsiIcon *icon, QString text) { if ( !d->popup ) { deleteLater(); return; } - d->popup->addLayout( d->createContactInfo(icon, text) ); + d->popup->addLayout( d->createContactInfo(avatar, icon, text) ); // update id if ( icon ) @@ -370,12 +381,14 @@ } } + QPixmap avatar = d->account->avatarFactory()->getAvatar(jid); + // show popup if ( d->popupType != AlertHeadline && (d->popupType != AlertFile || !PsiOptions::instance()->getOption("options.ui.file-transfer.auto-popup").toBool()) ) - setData(icon, contactText); + setData(&avatar, icon, contactText); else if ( d->popupType == AlertHeadline ) { QVBoxLayout *vbox = new QVBoxLayout(0); - vbox->addLayout( d->createContactInfo(icon, contactText) ); + vbox->addLayout( d->createContactInfo(&avatar, icon, contactText) ); vbox->addSpacing(5); Index: src/psipopup.h =================================================================== --- src/psipopup.h (revision 1061) +++ src/psipopup.h (working copy) @@ -23,6 +23,7 @@ #include +class QPixmap; class PsiCon; class PsiAccount; class UserListItem; @@ -57,7 +58,7 @@ }; PsiPopup(PopupType type, PsiAccount *acc); - void setData(const PsiIcon *icon, QString text); + void setData(const QPixmap *avatar, const PsiIcon *icon, QString text); void setData(const Jid &, const Resource &, const UserListItem * = 0, const PsiEvent * = 0); void show();