7 #ifndef SCLISTBOXPIXMAP_H
8 #define SCLISTBOXPIXMAP_H
12 #include <QApplication>
18 #include "scguardedptr.h"
19 #include "scribusapi.h"
23 template<
unsigned int pixW
idth,
unsigned int pixHeight>
29 virtual QString text(
const QVariant&)
const = 0;
30 virtual QSize sizeHint (
const QStyleOptionViewItem & option,
const QModelIndex & index )
const;
31 virtual void paint(QPainter * painter,
const QStyleOptionViewItem & option,
const QModelIndex & index )
const;
33 static std::auto_ptr<QPixmap> pmap;
35 virtual void redraw(
const QVariant&)
const = 0;
38 template<
unsigned int pixW
idth,
unsigned int pixHeight>
42 template<
unsigned int pixW
idth,
unsigned int pixHeight>
47 pmap.reset(
new QPixmap(pixWidth, pixHeight) );
52 template<
unsigned int pixW
idth,
unsigned int pixHeight>
56 QFontMetrics metrics(option.font);
57 const QVariant data(index.data(Qt::DisplayRole));
58 if ( text(data).isEmpty() )
61 w = pmap->width() + 6;
65 h = qMax( pmap->height(), metrics.lineSpacing() + 2 );
66 w = pmap->width() + metrics.width(text(data)) + 6;
68 return QSize(qMax(w, QApplication::globalStrut().width()), qMax( h, QApplication::globalStrut().height()));
72 template<
unsigned int pixW
idth,
unsigned int pixHeight>
77 const QVariant data(index.data(Qt::UserRole));
80 int itemHeight = sizeHint( option, index ).height();
82 if (option.state & QStyle::State_Selected)
83 qpainter->fillRect(option.rect, option.palette.highlight());
86 qpainter->setRenderHint(QPainter::Antialiasing,
true);
87 qpainter->setPen(Qt::NoPen);
89 if ( !pmap->isNull() ) {
90 yPos = ( itemHeight - pmap->height() ) / 2;
91 qpainter->drawPixmap( option.rect.x() + 3, option.rect.y() + yPos, *pmap);
93 if (option.state & QStyle::State_Selected)
94 qpainter->setBrush(option.palette.highlightedText());
96 qpainter->setBrush(QBrush(Qt::black));
97 qpainter->setPen(Qt::black);
99 QString txt = index.data(Qt::DisplayRole).toString();
101 if ( !txt.isEmpty() ) {
102 QFontMetrics fm = qpainter->fontMetrics();
103 yPos = ( ( itemHeight - fm.height() ) / 2 ) + fm.ascent();
104 qpainter->drawText( option.rect.x() + pmap->width() + 5, option.rect.y() + yPos, txt );
Definition: sclistboxpixmap.h:24