From 0087712586d5651e1fe8fe9e76b2e8cff3b1f602 Mon Sep 17 00:00:00 2001 From: Kevin Smith Date: Wed, 26 Aug 2009 23:07:59 +0100 Subject: Round the group corners and stop group highlighting in the roster diff --git a/Swift/QtUI/Roster/RosterDelegate.cpp b/Swift/QtUI/Roster/RosterDelegate.cpp index 778345e..1b7857e 100644 --- a/Swift/QtUI/Roster/RosterDelegate.cpp +++ b/Swift/QtUI/Roster/RosterDelegate.cpp @@ -5,6 +5,7 @@ #include #include #include +#include #include #include "QtTreeWidgetItem.h" @@ -32,12 +33,30 @@ QSize RosterDelegate::sizeHint(const QStyleOptionViewItem& option, const QModelI return QSize(150, sizeByText > sizeByAvatar ? sizeByText : sizeByAvatar); } + + void RosterDelegate::paint(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const { QtTreeWidgetItem* item = static_cast(index.internalPointer()); if (item && !item->isContact()) { - QStyledItemDelegate::paint(painter, option, index); - return; + paintGroup(painter, option, index); + } else { + paintContact(painter, option, index); } +} + +void RosterDelegate::paintGroup(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const { + painter->save(); + //QLinearGradient + QBrush backgroundBrush = QBrush(index.data(Qt::BackgroundColorRole).value(), Qt::SolidPattern); + painter->setPen(QPen(index.data(Qt::TextColorRole).value())); + QPainterPath roundedPath; + roundedPath.addRoundedRect(option.rect, 5, 5); + painter->fillPath(roundedPath, backgroundBrush); + painter->drawText(option.rect.adjusted(margin_, 0, -1 * margin_, 0), Qt::AlignTop, index.data(Qt::DisplayRole).toString()); + painter->restore(); +} + +void RosterDelegate::paintContact(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const { //qDebug() << "painting" << index.data(Qt::DisplayRole).toString(); painter->save(); //QStyledItemDelegate::paint(painter, option, index); diff --git a/Swift/QtUI/Roster/RosterDelegate.h b/Swift/QtUI/Roster/RosterDelegate.h index dcbb665..1d1f0ce 100644 --- a/Swift/QtUI/Roster/RosterDelegate.h +++ b/Swift/QtUI/Roster/RosterDelegate.h @@ -5,12 +5,15 @@ #include namespace Swift { + class QtTreeWidgetItem; class RosterDelegate : public QStyledItemDelegate { public: RosterDelegate(); QSize sizeHint(const QStyleOptionViewItem& option, const QModelIndex& index) const; void paint(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const; private: + void paintGroup(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const; + void paintContact(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const; QFont nameFont_; QFont statusFont_; static const int avatarSize_ = 28; -- cgit v0.10.2-6-g49f6