aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorGravatar Fabio Bas2010-03-07 18:04:43 +0000
committerGravatar Fabio Bas2010-03-07 18:04:43 +0000
commit621387666feb3c64dd92812f5909abe7a032e7dc (patch)
tree01eef6922038405086358cd93240089e83b5f4c1 /src
parentaliaseditor: indentation fixes (diff)
downloadKVIrc-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.cpp36
-rw-r--r--src/kvilib/tal/kvi_tal_itemdelegates.h5
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:
/**