summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Swift/QtUI/Roster/RosterDelegate.cpp23
-rw-r--r--Swift/QtUI/Roster/RosterDelegate.h3
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;