diff options
| author | Frank Reininghaus <[email protected]> | 2013-07-12 08:27:04 +0200 |
|---|---|---|
| committer | Frank Reininghaus <[email protected]> | 2013-07-12 08:27:05 +0200 |
| commit | 63b26cbf2c849f724b7e2f5c8f40f6883d6278e5 (patch) | |
| tree | 1b1b783e8bd625df2537d7479e2ce904dfa8f4ab /src/kitemviews/kfileitemlistview.cpp | |
| parent | 6028bd7cf6fcd65bc43d255f1f0eaf0820ee79b6 (diff) | |
Load unknown icons for items just before showing items in the view
Rather than loading many icons (without full mime type determination)
in advance, we make sure that an item has an icon just before it is
shown in the view. This makes sure that no "unknown" icons are shown
unnecessarily, and saves some resources.
REVIEW: 111396
Diffstat (limited to 'src/kitemviews/kfileitemlistview.cpp')
| -rw-r--r-- | src/kitemviews/kfileitemlistview.cpp | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/src/kitemviews/kfileitemlistview.cpp b/src/kitemviews/kfileitemlistview.cpp index 70ce11b1f..2da238d7a 100644 --- a/src/kitemviews/kfileitemlistview.cpp +++ b/src/kitemviews/kfileitemlistview.cpp @@ -190,6 +190,22 @@ KItemListWidgetCreatorBase* KFileItemListView::defaultWidgetCreator() const return new KItemListWidgetCreator<KFileItemListWidget>(); } +void KFileItemListView::initializeItemListWidget(KItemListWidget* item) +{ + KStandardItemListView::initializeItemListWidget(item); + + // Make sure that the item has an icon. + QHash<QByteArray, QVariant> data = item->data(); + if (!data.contains("iconName") && data["iconPixmap"].value<QPixmap>().isNull()) { + Q_ASSERT(qobject_cast<KFileItemModel*>(model())); + KFileItemModel* fileItemModel = static_cast<KFileItemModel*>(model()); + + const KFileItem fileItem = fileItemModel->fileItem(item->index()); + data.insert("iconName", fileItem.iconName()); + item->setData(data, QSet<QByteArray>() << "iconName"); + } +} + void KFileItemListView::onPreviewsShownChanged(bool shown) { Q_UNUSED(shown); |
