diff options
Diffstat (limited to 'Swift')
| -rw-r--r-- | Swift/QtUI/Roster/RosterDelegate.cpp | 23 | ||||
| -rw-r--r-- | Swift/QtUI/Roster/RosterDelegate.h | 3 | 
2 files changed, 24 insertions, 2 deletions
| 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 <QColor>  #include <QBrush>  #include <QFontMetrics> +#include <QPainterPath>  #include <qdebug.h>  #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<QtTreeWidgetItem*>(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<QColor>(), Qt::SolidPattern); +	painter->setPen(QPen(index.data(Qt::TextColorRole).value<QColor>())); +	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 <QFont>  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; | 
 Swift
 Swift