From 8c2c3188efd5963efbbc2117eb64e216d910212e Mon Sep 17 00:00:00 2001 From: csoler Date: Sat, 15 Mar 2025 16:07:48 +0100 Subject: [PATCH] fixed sizeHint role --- .../src/gui/Identity/IdentityListModel.cpp | 7 +++++-- retroshare-gui/src/gui/gxs/GxsIdDetails.cpp | 13 +++++++++---- retroshare-gui/src/gui/gxs/GxsIdDetails.h | 3 ++- 3 files changed, 16 insertions(+), 7 deletions(-) diff --git a/retroshare-gui/src/gui/Identity/IdentityListModel.cpp b/retroshare-gui/src/gui/Identity/IdentityListModel.cpp index 7bb228a7b..a939fbe2d 100644 --- a/retroshare-gui/src/gui/Identity/IdentityListModel.cpp +++ b/retroshare-gui/src/gui/Identity/IdentityListModel.cpp @@ -468,7 +468,7 @@ QVariant RsIdentityListModel::sizeHintRole(const EntryIndex& e,int col) const default: case COLUMN_THREAD_NAME: return QVariant( QSize(x_factor * 70 , y_factor*14*1.1f )); case COLUMN_THREAD_ID: return QVariant( QSize(x_factor * 175, y_factor*14*1.1f )); - case COLUMN_THREAD_REPUTATION: return QVariant( QSize(x_factor * 20 , y_factor*14*1.1f )); + case COLUMN_THREAD_REPUTATION: return QVariant( QSize(x_factor * 14 , y_factor*14*1.1f )); case COLUMN_THREAD_OWNER_NAME: return QVariant( QSize(x_factor * 70 , y_factor*14*1.1f )); case COLUMN_THREAD_OWNER_ID: return QVariant( QSize(x_factor * 70 , y_factor*14*1.1f )); } @@ -743,14 +743,17 @@ QVariant RsIdentityListModel::decorationRole(const EntryIndex& entry,int col) co else if(col == COLUMN_THREAD_NAME) { QPixmap sslAvatar; + RsIdentityDetails details ; - if(! AvatarDefs::getAvatarFromGxsId(hn->id, sslAvatar)) + if(!rsIdentity->getIdDetails(hn->id, details)) { mIdentityUpdateTimer->stop(); mIdentityUpdateTimer->setSingleShot(true); mIdentityUpdateTimer->start(500); return QVariant(); } + else if(details.mAvatar.mSize == 0 || !GxsIdDetails::loadPixmapFromData(details.mAvatar.mData, details.mAvatar.mSize, sslAvatar,GxsIdDetails::LARGE)) + return QVariant(QIcon(GxsIdDetails::makeDefaultIcon(hn->id,GxsIdDetails::SMALL))); else return QVariant(QIcon(sslAvatar)); } diff --git a/retroshare-gui/src/gui/gxs/GxsIdDetails.cpp b/retroshare-gui/src/gui/gxs/GxsIdDetails.cpp index d854b1f76..5c1c11b49 100644 --- a/retroshare-gui/src/gui/gxs/GxsIdDetails.cpp +++ b/retroshare-gui/src/gui/gxs/GxsIdDetails.cpp @@ -85,14 +85,14 @@ void ReputationItemDelegate::paint(QPainter *painter, const QStyleOptionViewItem { Q_ASSERT(index.isValid()); - QStyleOptionViewItemV4 opt = option; + QStyleOptionViewItem opt(option); initStyleOption(&opt, index); // disable default icon opt.icon = QIcon(); // draw default item QApplication::style()->drawControl(QStyle::CE_ItemViewItem, &opt, painter, 0); - const QRect r = option.rect; + const QRect r = option.rect; // get pixmap auto v = index.data(Qt::DecorationRole); @@ -105,8 +105,7 @@ void ReputationItemDelegate::paint(QPainter *painter, const QStyleOptionViewItem if(icon_index > mMaxLevelToDisplay) return ; - QIcon icon = GxsIdDetails::getReputationIcon( - RsReputationLevel(icon_index), 0xff ); + QIcon icon = GxsIdDetails::getReputationIcon( RsReputationLevel(icon_index), 0xff ); QPixmap pix = icon.pixmap(r.size()); @@ -115,6 +114,12 @@ void ReputationItemDelegate::paint(QPainter *painter, const QStyleOptionViewItem painter->drawPixmap(r.topLeft() + p, pix); } +QSize ReputationItemDelegate::sizeHint(const QStyleOptionViewItem &option, const QModelIndex & /*index*/) const +{ + int s = 1.5*QFontMetricsF(option.font).height(); + + return QSize(s,s); +} /* The global object */ GxsIdDetails *GxsIdDetails::mInstance = NULL ; diff --git a/retroshare-gui/src/gui/gxs/GxsIdDetails.h b/retroshare-gui/src/gui/gxs/GxsIdDetails.h index 05568aa3a..122b5e089 100644 --- a/retroshare-gui/src/gui/gxs/GxsIdDetails.h +++ b/retroshare-gui/src/gui/gxs/GxsIdDetails.h @@ -52,7 +52,8 @@ public: ReputationItemDelegate(RsReputationLevel max_level_to_display) : mMaxLevelToDisplay(static_cast(max_level_to_display)) {} - virtual void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const; + virtual void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const override; + virtual QSize sizeHint(const QStyleOptionViewItem &option, const QModelIndex & /*index*/) const override; private: uint32_t mMaxLevelToDisplay ;