diff --git a/src/kitemviews/kfileitemmodelrolesupdater.cpp b/src/kitemviews/kfileitemmodelrolesupdater.cpp index 497c13b52..0ed28ee09 100644 --- a/src/kitemviews/kfileitemmodelrolesupdater.cpp +++ b/src/kitemviews/kfileitemmodelrolesupdater.cpp @@ -34,6 +34,7 @@ #include #include #include +#include #include #include #include @@ -555,7 +556,7 @@ void KFileItemModelRolesUpdater::slotSortRoleChanged(const QByteArray ¤t, } } -void KFileItemModelRolesUpdater::slotGotPreview(const KFileItem &item, const QPixmap &pixmap) +void KFileItemModelRolesUpdater::slotGotPreview(const KFileItem &item, const QPixmap &preview) { if (m_state != PreviewJobRunning) { return; @@ -568,7 +569,53 @@ void KFileItemModelRolesUpdater::slotGotPreview(const KFileItem &item, const QPi return; } + QPixmap pixmap = preview; QHash data = rolesData(item, index); + + if (true /*optional some filter here: item.mimetype() == "..."*/) { + // get icon + QString iconName = data.value("iconName").toString(); + if (iconName.size() == 0) { + QMimeDatabase mimeDb; + QMimeType mimeType = mimeDb.mimeTypeForName(item.mimetype()); + iconName = mimeType.iconName(); + if (iconName.size() == 0) { + iconName = mimeType.genericIconName(); + } + } + QIcon icon = QIcon::fromTheme(iconName); + if (!icon.isNull()) { + // put icon on preview + + QSize final_size = /*preview.size()*/ cacheSize(); + QPixmap final_pixmap(final_size); + final_pixmap.fill(Qt::transparent); + + QPainter painter(&final_pixmap); + painter.setRenderHint(QPainter::Antialiasing); + painter.setRenderHint(QPainter::SmoothPixmapTransform); + + painter.drawPixmap( + (final_size.width() - preview.width()) / 2, + (final_size.height() - preview.height()) / 2, + preview + ); + + QSize icon_size = final_size / 3; + painter.setOpacity(0.7); + painter.drawPixmap( + final_size.width() - icon_size.width(), + final_size.height() - icon_size.height(), + icon.pixmap(icon_size) + ); + + painter.end(); + pixmap = final_pixmap; + + qCWarning(DolphinDebug) << "Nazwa ikony:" << iconName; + } + } + data.insert("iconPixmap", transformPreviewPixmap(pixmap)); data.insert("supportsSequencing", m_previewJob->handlesSequences());