mirror of
https://invent.kde.org/system/dolphin
synced 2024-10-28 03:21:56 +00:00
make sure we use valid icons
This commit is contained in:
parent
891ebf5758
commit
15baa93640
|
@ -17,6 +17,8 @@
|
||||||
#include <QGraphicsView>
|
#include <QGraphicsView>
|
||||||
#include <QPainter>
|
#include <QPainter>
|
||||||
#include <QTimer>
|
#include <QTimer>
|
||||||
|
#include <QIcon>
|
||||||
|
#include <QMimeDatabase>
|
||||||
|
|
||||||
// #define KFILEITEMLISTVIEW_DEBUG
|
// #define KFILEITEMLISTVIEW_DEBUG
|
||||||
|
|
||||||
|
@ -168,6 +170,9 @@ QPixmap KFileItemListView::createDragPixmap(const KItemSet& indexes) const
|
||||||
QPixmap pixmap = model()->data(index).value("iconPixmap").value<QPixmap>();
|
QPixmap pixmap = model()->data(index).value("iconPixmap").value<QPixmap>();
|
||||||
if (pixmap.isNull()) {
|
if (pixmap.isNull()) {
|
||||||
QIcon icon = QIcon::fromTheme(model()->data(index).value("iconName").toString());
|
QIcon icon = QIcon::fromTheme(model()->data(index).value("iconName").toString());
|
||||||
|
if (icon.isNull()) {
|
||||||
|
icon = QIcon::fromTheme("unknown");
|
||||||
|
}
|
||||||
if (!icon.isNull()) {
|
if (!icon.isNull()) {
|
||||||
pixmap = icon.pixmap(size, size);
|
pixmap = icon.pixmap(size, size);
|
||||||
} else {
|
} else {
|
||||||
|
@ -210,7 +215,12 @@ void KFileItemListView::initializeItemListWidget(KItemListWidget* item)
|
||||||
KFileItemModel* fileItemModel = static_cast<KFileItemModel*>(model());
|
KFileItemModel* fileItemModel = static_cast<KFileItemModel*>(model());
|
||||||
|
|
||||||
const KFileItem fileItem = fileItemModel->fileItem(item->index());
|
const KFileItem fileItem = fileItemModel->fileItem(item->index());
|
||||||
data.insert("iconName", fileItem.iconName());
|
QString iconName = fileItem.iconName();
|
||||||
|
if (!QIcon::hasThemeIcon(iconName)) {
|
||||||
|
QMimeDatabase mimeDb;
|
||||||
|
iconName = mimeDb.mimeTypeForName(fileItem.mimetype()).genericIconName();
|
||||||
|
}
|
||||||
|
data.insert("iconName", iconName);
|
||||||
item->setData(data, {"iconName"});
|
item->setData(data, {"iconName"});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,9 +19,11 @@
|
||||||
|
|
||||||
#include <QElapsedTimer>
|
#include <QElapsedTimer>
|
||||||
#include <QMimeData>
|
#include <QMimeData>
|
||||||
|
#include <QMimeDatabase>
|
||||||
#include <QTimer>
|
#include <QTimer>
|
||||||
#include <QWidget>
|
#include <QWidget>
|
||||||
#include <QMutex>
|
#include <QMutex>
|
||||||
|
#include <QIcon>
|
||||||
|
|
||||||
Q_GLOBAL_STATIC_WITH_ARGS(QMutex, s_collatorMutex, (QMutex::Recursive))
|
Q_GLOBAL_STATIC_WITH_ARGS(QMutex, s_collatorMutex, (QMutex::Recursive))
|
||||||
|
|
||||||
|
@ -1657,7 +1659,13 @@ QHash<QByteArray, QVariant> KFileItemModel::retrieveData(const KFileItem& item,
|
||||||
}
|
}
|
||||||
|
|
||||||
if (item.isMimeTypeKnown()) {
|
if (item.isMimeTypeKnown()) {
|
||||||
data.insert(sharedValue("iconName"), item.iconName());
|
QString iconName = item.iconName();
|
||||||
|
if (!QIcon::hasThemeIcon(iconName)) {
|
||||||
|
QMimeType mimeType = QMimeDatabase().mimeTypeForName(item.mimetype());
|
||||||
|
iconName = mimeType.genericIconName();
|
||||||
|
}
|
||||||
|
|
||||||
|
data.insert(sharedValue("iconName"), iconName);
|
||||||
|
|
||||||
if (m_requestRole[TypeRole]) {
|
if (m_requestRole[TypeRole]) {
|
||||||
data.insert(sharedValue("type"), item.mimeComment());
|
data.insert(sharedValue("type"), item.mimeComment());
|
||||||
|
|
|
@ -27,6 +27,7 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <QApplication>
|
#include <QApplication>
|
||||||
|
#include <QIcon>
|
||||||
#include <QPainter>
|
#include <QPainter>
|
||||||
#include <QElapsedTimer>
|
#include <QElapsedTimer>
|
||||||
#include <QTimer>
|
#include <QTimer>
|
||||||
|
@ -1044,7 +1045,9 @@ bool KFileItemModelRolesUpdater::applyResolvedRoles(int index, ResolveHint hint)
|
||||||
data = rolesData(item);
|
data = rolesData(item);
|
||||||
}
|
}
|
||||||
|
|
||||||
data.insert("iconName", item.iconName());
|
if (QIcon::hasThemeIcon(item.iconName())) {
|
||||||
|
data.insert("iconName", item.iconName());
|
||||||
|
}
|
||||||
|
|
||||||
if (m_clearPreviews) {
|
if (m_clearPreviews) {
|
||||||
data.insert("iconPixmap", QPixmap());
|
data.insert("iconPixmap", QPixmap());
|
||||||
|
|
Loading…
Reference in a new issue