generatePreviews(itemList);
}
-void IconManager::generatePreviews(const KFileItemList &items)
+void IconManager::generatePreviews(const KFileItemList& items)
{
+ applyCutItemEffect();
+
if (!m_showPreview) {
return;
}
// Order the items in a way that the preview for the visible items
// is generated first, as this improves the feeled performance a lot.
KFileItemList orderedItems;
- foreach (KFileItem item, items) {
+ foreach (const KFileItem &item, items) {
const QModelIndex dirIndex = m_dolphinModel->indexForItem(item);
const QModelIndex proxyIndex = m_proxyModel->mapFromSource(dirIndex);
const QRect itemRect = m_view->visualRect(proxyIndex);
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);
}
{
// restore the icons of all previously selected items to the
// original state...
- foreach (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);
// 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();
}
}
}
-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;
KDirLister* dirLister = m_dolphinModel->dirLister();
bool isOldPreview = true;
const KUrl::List dirs = dirLister->directories();
- const QString itemDir = item.url().directory();
- foreach (KUrl url, dirs) {
+ const QString itemDir = url.directory();
+ foreach (const KUrl& url, dirs) {
if (url.path() == itemDir) {
isOldPreview = false;
break;
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)) {
const QMimeData* mimeData = QApplication::clipboard()->mimeData();
const KUrl::List cutUrls = KUrl::List::fromMimeData(mimeData);
- const KUrl& itemUrl = item.url();
- foreach (KUrl url, cutUrls) {
+ const KUrl itemUrl = item.url();
+ foreach (const KUrl& url, cutUrls) {
if (url == itemUrl) {
return true;
}
KFileItemList items;
KDirLister* dirLister = m_dolphinModel->dirLister();
const KUrl::List dirs = dirLister->directories();
- foreach (KUrl url, dirs) {
+ foreach (const KUrl& url, dirs) {
items << dirLister->itemsForDir(url);
}
- foreach (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<QIcon>(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);
bool IconManager::applyImageFrame(QPixmap& icon)
{
const QSize maxSize = m_view->iconSize();
- if ((maxSize.width() <= 24) || (maxSize.height() <= 24)) {
- // the maximum size is too small for a frame
+ const bool applyFrame = (maxSize.width() > KIconLoader::SizeSmallMedium) &&
+ (maxSize.height() > KIconLoader::SizeSmallMedium) &&
+ ((icon.width() > KIconLoader::SizeLarge) ||
+ (icon.height() > KIconLoader::SizeLarge));
+ if (!applyFrame) {
+ // the maximum size or the image itself is too small for a frame
return false;
}