* use existing KFileItem also for the selection instead of creating a new KFileItem from the URL

* don't invoke fileItem() if a multiple selection is provided

svn path=/trunk/KDE/kdebase/apps/; revision=826393
This commit is contained in:
Peter Penz 2008-06-30 17:12:03 +00:00
parent 3bc3ca1458
commit fbfcbd5b95

View file

@ -183,12 +183,6 @@ void InfoSidebarPage::showItemInfo()
cancelRequest(); cancelRequest();
const KFileItem item = fileItem();
if (item.isNull()) {
return;
}
const KUrl itemUrl = item.url();
if (showMultipleSelectionInfo()) { if (showMultipleSelectionInfo()) {
KIconLoader iconLoader; KIconLoader iconLoader;
QPixmap icon = iconLoader.loadIcon("dialog-information", QPixmap icon = iconLoader.loadIcon("dialog-information",
@ -196,30 +190,34 @@ void InfoSidebarPage::showItemInfo()
KIconLoader::SizeEnormous); KIconLoader::SizeEnormous);
m_preview->setPixmap(icon); m_preview->setPixmap(icon);
m_nameLabel->setText(i18ncp("@info", "%1 item selected", "%1 items selected", m_selection.count())); m_nameLabel->setText(i18ncp("@info", "%1 item selected", "%1 items selected", m_selection.count()));
} else if (!applyPlace(itemUrl)) { } else {
// try to get a preview pixmap from the item... const KFileItem item = fileItem();
m_pendingPreview = true; const KUrl itemUrl = item.url();
if (!applyPlace(itemUrl)) {
// try to get a preview pixmap from the item...
m_pendingPreview = true;
// Mark the currently shown preview as outdated. This is done // Mark the currently shown preview as outdated. This is done
// with a small delay to prevent a flickering when the next preview // with a small delay to prevent a flickering when the next preview
// can be shown within a short timeframe. // can be shown within a short timeframe.
m_outdatedPreviewTimer->start(); m_outdatedPreviewTimer->start();
KIO::PreviewJob* job = KIO::filePreview(KUrl::List() << itemUrl, KIO::PreviewJob* job = KIO::filePreview(KUrl::List() << itemUrl,
m_preview->width(), m_preview->width(),
m_preview->height(), m_preview->height(),
0, 0,
0, 0,
true, true,
false); false);
job->setIgnoreMaximumSize(true); job->setIgnoreMaximumSize(true);
connect(job, SIGNAL(gotPreview(const KFileItem&, const QPixmap&)), connect(job, SIGNAL(gotPreview(const KFileItem&, const QPixmap&)),
this, SLOT(showPreview(const KFileItem&, const QPixmap&))); this, SLOT(showPreview(const KFileItem&, const QPixmap&)));
connect(job, SIGNAL(failed(const KFileItem&)), connect(job, SIGNAL(failed(const KFileItem&)),
this, SLOT(showIcon(const KFileItem&))); this, SLOT(showIcon(const KFileItem&)));
m_nameLabel->setText(itemUrl.fileName()); m_nameLabel->setText(itemUrl.fileName());
}
} }
showMetaInfo(); showMetaInfo();
@ -455,8 +453,14 @@ KFileItem InfoSidebarPage::fileItem() const
return m_fileItem; return m_fileItem;
} }
const KUrl url = m_selection.isEmpty() ? m_shownUrl : m_selection[0].url(); if (!m_selection.isEmpty()) {
KFileItem item(KFileItem::Unknown, KFileItem::Unknown, url); Q_ASSERT(m_selection.count() == 1);
return m_selection.first();
}
// no item is hovered and no selection has been done: provide
// an item for the directory represented by m_shownUrl
KFileItem item(KFileItem::Unknown, KFileItem::Unknown, m_shownUrl);
item.refresh(); item.refresh();
return item; return item;
} }