X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/b9db26703f52ba5d1ff05e911480155765bf9192..3c1efcb738e7ee6a00030f521138f81625e84b96:/src/infosidebarpage.cpp diff --git a/src/infosidebarpage.cpp b/src/infosidebarpage.cpp index bed20b1f5..bcb28aa19 100644 --- a/src/infosidebarpage.cpp +++ b/src/infosidebarpage.cpp @@ -48,7 +48,9 @@ InfoSidebarPage::InfoSidebarPage(QWidget* parent) : SidebarPage(parent), m_pendingPreview(false), - m_timer(0), + m_shownUrl(), + m_urlCandidate(), + m_fileItem(), m_preview(0), m_nameLabel(0), m_infoLabel(0), @@ -136,10 +138,13 @@ void InfoSidebarPage::requestDelayedItemInfo(const KFileItem& item) { cancelRequest(); + m_fileItem = KFileItem(); + if (!item.isNull() && (selection().size() <= 1)) { const KUrl url = item.url(); if (!url.isEmpty()) { m_urlCandidate = url; + m_fileItem = item; m_timer->start(TimerDelay); } } @@ -283,16 +288,21 @@ void InfoSidebarPage::showMetaInfo() const KFileItemList& selectedItems = selection(); if (selectedItems.size() <= 1) { - KFileItem fileItem(S_IFDIR, KFileItem::Unknown, m_shownUrl); - fileItem.refresh(); + KFileItem fileItem; + if (m_fileItem.isNull()) { + // no pending request is ongoing + fileItem = KFileItem(KFileItem::Unknown, KFileItem::Unknown, m_shownUrl); + fileItem.refresh(); + } else { + fileItem = m_fileItem; + } if (fileItem.isDir()) { addInfoLine(text, i18nc("@label", "Type:"), i18nc("@label", "Folder")); } else { addInfoLine(text, i18nc("@label", "Type:"), fileItem.mimeComment()); - QString sizeText(KIO::convertSize(fileItem.size())); - addInfoLine(text, i18nc("@label", "Size:"), sizeText); + addInfoLine(text, i18nc("@label", "Size:"), KIO::convertSize(fileItem.size())); addInfoLine(text, i18nc("@label", "Modified:"), fileItem.timeString()); // TODO: See convertMetaInfo below, find a way to display only interesting information @@ -333,9 +343,11 @@ void InfoSidebarPage::showMetaInfo() unsigned long int totalSize = 0; foreach (const KFileItem& item, selectedItems) { - // TODO: what to do with directories (same with the one-item-selected-code)?, - // item.size() does not return the size of the content : not very instinctive for users - totalSize += item.size(); + // Only count the size of files, not dirs; to match what + // DolphinViewContainer::selectionStatusBarText does. + if (!item.isDir() && !item.isLink()) { + totalSize += item.size(); + } } addInfoLine(text, i18nc("@label", "Total size:"), KIO::convertSize(totalSize)); }