7#include "KoResourceItemDelegate.h"
13KoResourceItemDelegate::KoResourceItemDelegate( QObject * parent )
14 : QAbstractItemDelegate(
parent ), m_checkerPainter( 4 )
18void KoResourceItemDelegate::paint( QPainter * painter,
const QStyleOptionViewItem & option,
const QModelIndex & index )
const
20 if( ! index.isValid() )
29 if (option.state & QStyle::State_Selected)
30 painter->fillRect( option.rect, option.palette.highlight() );
32 QRect innerRect = option.rect.adjusted( 2, 1, -2, -1 );
39 QLinearGradient paintGradient;
40 paintGradient.setStops( g->stops() );
41 paintGradient.setStart( innerRect.topLeft() );
42 paintGradient.setFinalStop( innerRect.topRight() );
44 m_checkerPainter.paint( *painter, innerRect );
45 painter->fillRect( innerRect, QBrush( paintGradient ) );
50 QImage thumbnail = index.data( Qt::DecorationRole ).value<QImage>();
51 painter->setRenderHint(QPainter::SmoothPixmapTransform, thumbnail.width() > innerRect.width() || thumbnail.height() > innerRect.height());
52 painter->drawImage(innerRect, thumbnail);
55 QImage thumbnail = index.data( Qt::DecorationRole ).value<QImage>();
57 QSize imageSize = thumbnail.size();
59 if(imageSize.height() > innerRect.height() || imageSize.width() > innerRect.width()) {
60 qreal scaleW =
static_cast<qreal
>( innerRect.width() ) /
static_cast<qreal
>( imageSize.width() );
61 qreal scaleH =
static_cast<qreal
>( innerRect.height() ) /
static_cast<qreal
>( imageSize.height() );
63 qreal
scale = qMin( scaleW, scaleH );
65 int thumbW =
static_cast<int>( imageSize.width() *
scale );
66 int thumbH =
static_cast<int>( imageSize.height() *
scale );
67 thumbnail = thumbnail.scaled( thumbW, thumbH, Qt::IgnoreAspectRatio, Qt::SmoothTransformation );
69 painter->setRenderHint(QPainter::SmoothPixmapTransform,
true);
70 if (thumbnail.hasAlphaChannel()) {
71 painter->fillRect(innerRect, Qt::white);
73 painter->fillRect( innerRect, QBrush(thumbnail) );
78QSize KoResourceItemDelegate::sizeHint(
const QStyleOptionViewItem & optionItem,
const QModelIndex & )
const
80 return optionItem.decorationSize;
ChildIterator< value_type, is_const > parent(const ChildIterator< value_type, is_const > &it)
rgba palette[MAX_PALETTE]
virtual QGradient * toQGradient() const