-/*
-void expand()
-{
- QWidget *w = new QWidget;
- QVBoxLayout *layout = new QVBoxLayout;
- layout->addWidget( new KColorButton(w));
- w->setLayout( layout );
- extendItem(w,
-}
-*/
-
-void paint(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const
-{
- if (index.column() == 1)
- {
- const bool hover = option.state & (QStyle::State_Selected|QStyle::State_MouseOver|QStyle::State_HasFocus);
- QRect r1 = option.rect;
- painter->save();
- if (hover) {
- painter->setPen(option.palette.color(QPalette::HighlightedText));
- QColor backgroundColor = option.palette.color(QPalette::Highlight);
- painter->setBrush(QBrush(backgroundColor));
- painter->fillRect(r1, QBrush(backgroundColor));
+
+ /*void drawFocus(QPainter *, const QStyleOptionViewItem &, const QRect &) const {
+ }*/
+
+ void paint(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const {
+ if (index.column() == 0 && !index.data(DurationRole).isNull()) {
+ QRect r1 = option.rect;
+ painter->save();
+ QStyleOptionViewItemV4 opt(option);
+ QStyle *style = opt.widget ? opt.widget->style() : QApplication::style();
+ style->drawPrimitive(QStyle::PE_PanelItemViewItem, &opt, painter, opt.widget);
+
+ if (option.state & QStyle::State_Selected) {
+ painter->setPen(option.palette.highlightedText().color());
+ }
+ const int textMargin = style->pixelMetric(QStyle::PM_FocusFrameHMargin) + 1;
+ QPixmap pixmap = qVariantValue<QPixmap>(index.data(Qt::DecorationRole));
+ if ((index.flags() & (Qt::ItemIsDragEnabled)) == false) {
+ KIcon icon("dialog-close");
+ QPainter p(&pixmap);
+ p.drawPixmap(1, 1, icon.pixmap(16, 16));
+ p.end();
+ }
+
+ painter->drawPixmap(r1.left() + textMargin, r1.top() + (r1.height() - pixmap.height()) / 2, pixmap);
+ int decoWidth = pixmap.width() + 2 * textMargin;
+
+ QFont font = painter->font();
+ font.setBold(true);
+ painter->setFont(font);
+ int mid = (int)((r1.height() / 2));
+ r1.adjust(decoWidth, 0, 0, -mid);
+ QRect r2 = option.rect;
+ r2.adjust(decoWidth, mid, 0, 0);
+ painter->drawText(r1, Qt::AlignLeft | Qt::AlignBottom , index.data().toString());
+ font.setBold(false);
+ painter->setFont(font);
+ QString subText = index.data(DurationRole).toString();
+ int usage = index.data(UsageRole).toInt();
+ if (usage != 0) subText.append(QString(" (%1)").arg(usage));
+ if (option.state & (QStyle::State_Selected)) painter->setPen(option.palette.color(QPalette::Mid));
+ painter->drawText(r2, Qt::AlignLeft | Qt::AlignVCenter , subText);
+ painter->restore();
+ } else if (index.column() == 2 && KdenliveSettings::activate_nepomuk()) {
+ if (index.data().toString().isEmpty()) {
+ QStyledItemDelegate::paint(painter, option, index);
+ return;
+ }
+ QRect r1 = option.rect;
+ if (option.state & (QStyle::State_Selected)) {
+ painter->fillRect(r1, option.palette.highlight());
+ }
+#ifdef NEPOMUK
+ KRatingPainter::paintRating(painter, r1, Qt::AlignCenter, index.data().toInt());
+#endif
+ } else {
+ QStyledItemDelegate::paint(painter, option, index);
+ }