#include <KIO/ListJob>
#include <KIO/PreviewJob>
#include <KIconLoader>
+#include <KIconUtils>
#include <KJobWidgets>
#include <KOverlayIconPlugin>
#include <KPluginMetaData>
timer.start();
// Determine the sort role synchronously for as many items as possible.
- if (m_resolvableRoles.contains(m_model->sortRole())) {
+ if (m_resolvableRoles.contains(m_model->sortRole()) || m_resolvableRoles.contains(m_model->groupRole())) {
int insertedCount = 0;
for (const KItemRange &range : itemRanges) {
const int lastIndex = insertedCount + range.index + range.count - 1;
const QStringList overlays = data["iconOverlays"].toStringList();
// Strangely KFileItem::overlays() returns empty string-values, so
// we need to check first whether an overlay must be drawn at all.
- // It is more efficient to do it here, as KIconLoader::drawOverlays()
- // assumes that an overlay will be drawn and has some additional
- // setup time.
if (!scaledPixmap.isNull()) {
for (const QString &overlay : overlays) {
if (!overlay.isEmpty()) {
// There is at least one overlay, draw all overlays above m_pixmap
// and cancel the check
- KIconLoader::global()->drawOverlays(overlays, scaledPixmap, KIconLoader::Desktop);
+ const QSize size = scaledPixmap.size();
+ scaledPixmap = KIconUtils::addOverlays(scaledPixmap, overlays).pixmap(size);
break;
}
}
QHash<QByteArray, QVariant> data;
const KFileItem item = m_model->fileItem(index);
- if (m_model->sortRole() == "type") {
+ if (m_model->sortRole() == "type" || m_model->groupRole() == "type") {
if (!item.isMimeTypeKnown()) {
item.determineMimeType();
}
data.insert("type", item.mimeComment());
- } else if (m_model->sortRole() == "size" && item.isLocalFile() && item.isDir()) {
+ } else if ((m_model->sortRole() == "size" || m_model->groupRole() == "size") && item.isLocalFile() && item.isDir()) {
startDirectorySizeCounting(item, index);
return;
} else {