X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/f32987d719f4b396ea2679b59a712a8bc288b8d2..d4287eb8e36ead543eb595bfcaa217fa0edd2654:/src/iconmanager.cpp diff --git a/src/iconmanager.cpp b/src/iconmanager.cpp index 72549d71b..78bb89cf8 100644 --- a/src/iconmanager.cpp +++ b/src/iconmanager.cpp @@ -96,8 +96,10 @@ void IconManager::updatePreviews() generatePreviews(itemList); } -void IconManager::generatePreviews(const KFileItemList &items) +void IconManager::generatePreviews(const KFileItemList& items) { + applyCutItemEffect(); + if (!m_showPreview) { return; } @@ -131,8 +133,8 @@ void IconManager::generatePreviews(const KFileItemList &items) void IconManager::addToPreviewQueue(const KFileItem& item, const QPixmap& pixmap) { - Preview preview; - preview.item = item; + ItemInfo preview; + preview.url = item.url(); preview.pixmap = pixmap; m_previews.append(preview); } @@ -147,7 +149,7 @@ void IconManager::updateCutItems() { // restore the icons of all previously selected items to the // original state... - foreach (const CutItem &cutItem, m_cutItemsCache) { + foreach (const ItemInfo& cutItem, m_cutItemsCache) { const QModelIndex index = m_dolphinModel->indexForUrl(cutItem.url); if (index.isValid()) { m_dolphinModel->setData(index, QIcon(cutItem.pixmap), Qt::DecorationRole); @@ -169,13 +171,13 @@ void IconManager::dispatchPreviewQueue() // of the view would be triggered for each single preview. int dispatchCount = 30; - if (dispatchCount > m_previews.count()) { - dispatchCount = m_previews.count(); + if (dispatchCount > previewsCount) { + dispatchCount = previewsCount; } for (int i = 0; i < dispatchCount; ++i) { - const Preview& preview = m_previews.first(); - replaceIcon(preview.item, preview.pixmap); + const ItemInfo& preview = m_previews.first(); + replaceIcon(preview.url, preview.pixmap); m_previews.pop_front(); } @@ -193,9 +195,9 @@ void IconManager::dispatchPreviewQueue() } } -void IconManager::replaceIcon(const KFileItem& item, const QPixmap& pixmap) +void IconManager::replaceIcon(const KUrl& url, const QPixmap& pixmap) { - Q_ASSERT(!item.isNull()); + Q_ASSERT(url.isValid()); if (!m_showPreview) { // the preview has been canceled in the meantime return; @@ -206,8 +208,8 @@ void IconManager::replaceIcon(const KFileItem& item, const QPixmap& pixmap) KDirLister* dirLister = m_dolphinModel->dirLister(); bool isOldPreview = true; const KUrl::List dirs = dirLister->directories(); - const QString itemDir = item.url().directory(); - foreach (const KUrl &url, dirs) { + const QString itemDir = url.directory(); + foreach (const KUrl& url, dirs) { if (url.path() == itemDir) { isOldPreview = false; break; @@ -217,10 +219,11 @@ void IconManager::replaceIcon(const KFileItem& item, const QPixmap& pixmap) return; } - const QModelIndex idx = m_dolphinModel->indexForItem(item); + const QModelIndex idx = m_dolphinModel->indexForUrl(url); if (idx.isValid() && (idx.column() == 0)) { QPixmap icon = pixmap; + const KFileItem item = m_dolphinModel->itemForIndex(idx); const QString mimeType = item.mimetype(); const QString mimeTypeGroup = mimeType.left(mimeType.indexOf('/')); if ((mimeTypeGroup != "image") || !applyImageFrame(icon)) { @@ -243,8 +246,8 @@ bool IconManager::isCutItem(const KFileItem& item) const const QMimeData* mimeData = QApplication::clipboard()->mimeData(); const KUrl::List cutUrls = KUrl::List::fromMimeData(mimeData); - const KUrl& itemUrl = item.url(); - foreach (const KUrl &url, cutUrls) { + const KUrl itemUrl = item.url(); + foreach (const KUrl& url, cutUrls) { if (url == itemUrl) { return true; } @@ -263,21 +266,22 @@ void IconManager::applyCutItemEffect() KFileItemList items; KDirLister* dirLister = m_dolphinModel->dirLister(); const KUrl::List dirs = dirLister->directories(); - foreach (const KUrl &url, dirs) { + foreach (const KUrl& url, dirs) { items << dirLister->itemsForDir(url); } - foreach (const KFileItem &item, items) { + foreach (const KFileItem& item, items) { if (isCutItem(item)) { const QModelIndex index = m_dolphinModel->indexForItem(item); const QVariant value = m_dolphinModel->data(index, Qt::DecorationRole); if (value.type() == QVariant::Icon) { const QIcon icon(qvariant_cast(value)); - QPixmap pixmap = icon.pixmap(m_view->iconSize()); + const QSize actualSize = icon.actualSize(m_view->iconSize()); + QPixmap pixmap = icon.pixmap(actualSize); // remember current pixmap for the item to be able // to restore it when other items get cut - CutItem cutItem; + ItemInfo cutItem; cutItem.url = item.url(); cutItem.pixmap = pixmap; m_cutItemsCache.append(cutItem);