diff options
| author | 2010-03-07 18:04:43 +0000 | |
|---|---|---|
| committer | 2010-03-07 18:04:43 +0000 | |
| commit | 621387666feb3c64dd92812f5909abe7a032e7dc (patch) | |
| tree | 01eef6922038405086358cd93240089e83b5f4c1 /src | |
| parent | aliaseditor: indentation fixes (diff) | |
| download | KVIrc-621387666feb3c64dd92812f5909abe7a032e7dc.tar.gz KVIrc-621387666feb3c64dd92812f5909abe7a032e7dc.tar.bz2 KVIrc-621387666feb3c64dd92812f5909abe7a032e7dc.zip | |
Correctly handle qstyle in KviTalItemDelegate
git-svn-id: https://svn.kvirc.de/svn/trunk/kvirc@4107 17fca916-40b9-46aa-a4ea-0a15b648b75c
Diffstat (limited to 'src')
| -rw-r--r-- | src/kvilib/tal/kvi_tal_itemdelegates.cpp | 36 | ||||
| -rw-r--r-- | src/kvilib/tal/kvi_tal_itemdelegates.h | 5 |
2 files changed, 18 insertions, 23 deletions
diff --git a/src/kvilib/tal/kvi_tal_itemdelegates.cpp b/src/kvilib/tal/kvi_tal_itemdelegates.cpp index 8b51719a9..ff2519971 100644 --- a/src/kvilib/tal/kvi_tal_itemdelegates.cpp +++ b/src/kvilib/tal/kvi_tal_itemdelegates.cpp @@ -26,10 +26,11 @@ #include <QListWidget> #include <QPainter> +#include <QApplication> #include <QAbstractTextDocumentLayout> KviTalIconAndRichTextItemDelegate::KviTalIconAndRichTextItemDelegate(QAbstractItemView * pWidget) -: QItemDelegate(pWidget), m_pParent(pWidget), m_pDefaultPix(0) +: QStyledItemDelegate(pWidget), m_pParent(pWidget), m_pDefaultPix(0) { } @@ -40,23 +41,16 @@ KviTalIconAndRichTextItemDelegate::~KviTalIconAndRichTextItemDelegate() void KviTalIconAndRichTextItemDelegate::paint(QPainter * pPainter, const QStyleOptionViewItem & option, const QModelIndex & index) const { pPainter->save(); - if(option.state & QStyle::State_Selected) - { - QPalette pal = option.palette; - QBrush brush = pal.highlight(); - QColor col = brush.color(); - col.setAlpha(127); - brush.setColor(col); - pPainter->fillRect(option.rect,brush); - } + QStyleOptionViewItemV4 opt = option; + initStyleOption(&opt, index); + + if (opt.state & QStyle::State_Selected) + QApplication::style()->drawPrimitive(QStyle::PE_PanelItemViewItem,&opt, pPainter); QString szText = index.data(Qt::DisplayRole).toString(); QPixmap pixmap; QRect decorationRect; QVariant value = index.data(Qt::DecorationRole); - QStyle::State state = option.state; - QRect rect = option.rect; - int iAfterIcon = LVI_BORDER + LVI_ICON_SIZE + LVI_SPACING; QIcon ico; if(value.canConvert<QIcon>()) @@ -65,21 +59,21 @@ void KviTalIconAndRichTextItemDelegate::paint(QPainter * pPainter, const QStyleO if(ico.isNull()) { if(m_pDefaultPix) - pPainter->drawPixmap(option.rect.x()+LVI_BORDER,option.rect.y()+LVI_BORDER,*m_pDefaultPix); + pPainter->drawPixmap(opt.rect.x()+LVI_BORDER,opt.rect.y()+LVI_BORDER,*m_pDefaultPix); } else { - pPainter->drawPixmap(option.rect.x()+LVI_BORDER,option.rect.y()+LVI_BORDER,ico.pixmap(LVI_ICON_SIZE,LVI_ICON_SIZE)); + pPainter->drawPixmap(opt.rect.x()+LVI_BORDER,opt.rect.y()+LVI_BORDER,ico.pixmap(LVI_ICON_SIZE,LVI_ICON_SIZE)); } } else { if(m_pDefaultPix) - pPainter->drawPixmap(option.rect.x()+LVI_BORDER,option.rect.y()+LVI_BORDER,*m_pDefaultPix); + pPainter->drawPixmap(opt.rect.x()+LVI_BORDER,opt.rect.y()+LVI_BORDER,*m_pDefaultPix); } QTextDocument doc; doc.setHtml(szText); - doc.setDefaultFont(option.font); - pPainter->translate(option.rect.x()+iAfterIcon,option.rect.y()+LVI_BORDER); - doc.setTextWidth(option.rect.width()-32); - QRect cliprect = QRect(QPoint(0,0),QSize(option.rect.width()-iAfterIcon,option.rect.height())); + doc.setDefaultFont(opt.font); + pPainter->translate(opt.rect.x()+LVI_AFTER_ICON,opt.rect.y()+LVI_BORDER); + doc.setTextWidth(opt.rect.width()-LVI_AFTER_ICON); + QRect cliprect = QRect(QPoint(0,0),QSize(opt.rect.width()-LVI_AFTER_ICON,opt.rect.height())); doc.drawContents(pPainter,cliprect); pPainter->restore(); } @@ -90,7 +84,7 @@ QSize KviTalIconAndRichTextItemDelegate::sizeHint(const QStyleOptionViewItem &op QTextDocument doc; doc.setHtml(szText); doc.setDefaultFont(option.font); - doc.setTextWidth(option.rect.width()-32); + doc.setTextWidth(option.rect.width()-LVI_AFTER_ICON); int iHeight = doc.documentLayout()->documentSize().toSize().height(); if(iHeight < (LVI_ICON_SIZE+(2 * LVI_BORDER))) iHeight = LVI_ICON_SIZE; diff --git a/src/kvilib/tal/kvi_tal_itemdelegates.h b/src/kvilib/tal/kvi_tal_itemdelegates.h index ff8997ba6..5045a5bbe 100644 --- a/src/kvilib/tal/kvi_tal_itemdelegates.h +++ b/src/kvilib/tal/kvi_tal_itemdelegates.h @@ -33,7 +33,7 @@ #include "kvi_settings.h" -#include <QItemDelegate> +#include <QStyledItemDelegate> #include <QListWidget> #include <QTreeWidget> #include <QAbstractItemView> @@ -44,11 +44,12 @@ #define LVI_MINIMUM_TEXT_WIDTH 300 #define LVI_MINIMUM_CELL_WIDTH (LVI_MINIMUM_TEXT_WIDTH + LVI_BORDER + LVI_ICON_SIZE + LVI_SPACING + LVI_BORDER) +#define LVI_AFTER_ICON (LVI_BORDER + LVI_ICON_SIZE + LVI_SPACING) /** * \class KviTalIconAndRichTextItemDelegate * \brief Toolkit Abstraction Layer: itemdelegate class */ -class KVILIB_API KviTalIconAndRichTextItemDelegate : public QItemDelegate +class KVILIB_API KviTalIconAndRichTextItemDelegate : public QStyledItemDelegate { public: /** |
