/**
* This file is part of the KDE project
- * Copyright (C) 2007 Rafael Fernández López <ereslibre@gmail.com>
+ * Copyright (C) 2007 Rafael Fernández López <ereslibre@kde.org>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
#include <kiconloader.h>
#include <kcategorizedsortfilterproxymodel.h>
-#include <kpixmapeffect.h>
+#include <qimageblitz.h>
#include <kuser.h>
#include <config-nepomuk.h>
{
QRect starRect = option.rect;
- int iconSize = KIconLoader::global()->currentSize(K3Icon::Small);
- QVariant categoryVariant = index.model()->data(index, KCategorizedSortFilterProxyModel::CategoryRole);
+ int iconSize = KIconLoader::global()->currentSize(KIconLoader::Small);
+ QVariant categoryVariant = index.model()->data(index, KCategorizedSortFilterProxyModel::CategoryDisplayRole);
if (!categoryVariant.isValid())
{
const QString category = categoryVariant.toString();
- QColor color = option.palette.color(QPalette::Text);
+ QColor color;
+
+ if (option.state & QStyle::State_Selected)
+ {
+ color = option.palette.color(QPalette::HighlightedText);
+ }
+ else
+ {
+ color = option.palette.color(QPalette::Text);
+ }
painter->save();
painter->setRenderHint(QPainter::Antialiasing);
opt.direction = option.direction;
opt.text = category;
- if (option.state & QStyle::State_MouseOver)
+ if (option.state & QStyle::State_Selected)
{
- QColor hover = option.palette.color(QPalette::Highlight).light();
+ QColor selected = option.palette.color(QPalette::Highlight);
+
+ QLinearGradient gradient(option.rect.topLeft(),
+ option.rect.bottomRight());
+ gradient.setColorAt(option.direction == Qt::LeftToRight ? 0
+ : 1, selected);
+ gradient.setColorAt(option.direction == Qt::LeftToRight ? 1
+ : 0, Qt::transparent);
+
+ painter->fillRect(option.rect, gradient);
+ }
+ else if (option.state & QStyle::State_MouseOver)
+ {
+ QColor hover = option.palette.color(QPalette::Highlight);
hover.setAlpha(88);
QLinearGradient gradient(option.rect.topLeft(),
break;
case KDirModel::Owner: {
- opt.rect.setTop(option.rect.top() + (iconSize / 4));
+ opt.rect.setTop(option.rect.bottom() - (iconSize / 4));
KUser user(category);
- if (QFile::exists(user.homeDir() + QDir::separator() + ".face.icon"))
+ QString faceIconPath = user.faceIconPath();
+
+ if (!faceIconPath.isEmpty())
{
- icon = QPixmap::fromImage(QImage(user.homeDir() + QDir::separator() + ".face.icon")).scaled(iconSize, iconSize);
+ icon = QPixmap::fromImage(QImage(faceIconPath).scaledToHeight(option.fontMetrics.height(), Qt::SmoothTransformation));
}
else
{
- icon = KIconLoader::global()->loadIcon("user", K3Icon::Small);
+ icon = KIconLoader::global()->loadIcon("user", KIconLoader::NoGroup, option.fontMetrics.height());
}
+
+ opt.rect.setTop(opt.rect.top() - icon.height());
+
break;
}
break;
case KDirModel::Type: {
- opt.rect.setTop(option.rect.top() + (option.rect.height() / 2) - (iconSize / 2));
+ opt.rect.setTop(option.rect.bottom() - (iconSize / 4));
const KCategorizedSortFilterProxyModel *proxyModel = static_cast<const KCategorizedSortFilterProxyModel*>(index.model());
const DolphinModel *model = static_cast<const DolphinModel*>(proxyModel->sourceModel());
KFileItem item = model->itemForIndex(proxyModel->mapToSource(index));
// so the group icon drawn is that one particularly. This way assures the drawn
// icon is the one of the mimetype of the group itself. (ereslibre)
icon = KIconLoader::global()->loadMimeTypeIcon(item.mimeTypePtr()->iconName(),
- K3Icon::Small);
+ KIconLoader::NoGroup, option.fontMetrics.height());
+
+ opt.rect.setTop(opt.rect.top() - icon.height());
+
break;
}
starRect.setTop(option.rect.top() + (option.rect.height() / 2) - (iconSize / 2));
starRect.setSize(QSize(iconSize, iconSize));
- QPixmap pixmap = KIconLoader::global()->loadIcon("rating", K3Icon::Small);
- QPixmap smallPixmap = KIconLoader::global()->loadIcon("rating", K3Icon::NoGroup, iconSize / 2);
- QPixmap disabledPixmap = KIconLoader::global()->loadIcon("rating", K3Icon::Small);
+ QPixmap pixmap = KIconLoader::global()->loadIcon("rating", KIconLoader::Small);
+ QPixmap smallPixmap = KIconLoader::global()->loadIcon("rating", KIconLoader::NoGroup, iconSize / 2);
+ QPixmap disabledPixmap = KIconLoader::global()->loadIcon("rating", KIconLoader::Small);
- KPixmapEffect::toGray(disabledPixmap, false);
+ QImage img = disabledPixmap.toImage();
+ Blitz::grayscale(img);
+ disabledPixmap = QPixmap::fromImage(img);
int rating = category.toInt();
if (paintIcon) {
painter->drawPixmap(QRect(option.direction == Qt::LeftToRight ? opt.rect.left()
- : opt.rect.right() - iconSize + (iconSize / 4), opt.rect.top(), iconSize, iconSize), icon);
+ : opt.rect.right() - icon.width() + (iconSize / 4), opt.rect.top(), icon.width(), icon.height()), icon);
if (option.direction == Qt::LeftToRight)
{
- opt.rect.setLeft(opt.rect.left() + iconSize + (iconSize / 4));
+ opt.rect.setLeft(opt.rect.left() + icon.width() + (iconSize / 4));
}
else
{
if (option.direction == Qt::RightToLeft)
{
- textRect.setWidth(textRect.width() - (paintIcon ? iconSize + (iconSize / 2)
+ textRect.setWidth(textRect.width() - (paintIcon ? icon.width() + (iconSize / 2)
: -(iconSize / 4)));
}
int DolphinCategoryDrawer::categoryHeight(const QStyleOption &option) const
{
- int iconSize = KIconLoader::global()->currentSize(K3Icon::Small);
+ int iconSize = KIconLoader::global()->currentSize(KIconLoader::Small);
return qMax(option.fontMetrics.height() + (iconSize / 4) * 2 + 2, iconSize + (iconSize / 4) * 2 + 2) /* 2 gradient */;
}