X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/f11c699fa203dd2cde0e85c63a6d186e3fa6a3de..bf768056294fa3ca471eee71aa2d013db5e25b7b:/src/infosidebarpage.cpp diff --git a/src/infosidebarpage.cpp b/src/infosidebarpage.cpp index 4716ea2d5..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), @@ -80,6 +82,7 @@ InfoSidebarPage::InfoSidebarPage(QWidget* parent) : m_infoLabel->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum); m_infoLabel->setTextFormat(Qt::RichText); m_infoLabel->setWordWrap(true); + m_infoLabel->setFont(KGlobalSettings::smallestReadableFont()); if (MetaDataWidget::metaDataAvailable()) { m_metadataWidget = new MetaDataWidget(this); @@ -90,8 +93,8 @@ InfoSidebarPage::InfoSidebarPage(QWidget* parent) : layout->addWidget(m_nameLabel); layout->addWidget(new KSeparator(this)); layout->addWidget(m_infoLabel); - layout->addWidget(new KSeparator(this)); - if (m_metadataWidget) { + if (m_metadataWidget != 0) { + layout->addWidget(new KSeparator(this)); layout->addWidget(m_metadataWidget); } // ensure that widgets in the information side bar are aligned towards the top @@ -135,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); } } @@ -188,7 +194,7 @@ void InfoSidebarPage::showItemInfo() const int itemCount = selectedItems.count(); if (itemCount > 1) { KIconLoader iconLoader; - QPixmap icon = iconLoader.loadIcon("exec", + QPixmap icon = iconLoader.loadIcon("system-run", KIconLoader::NoGroup, KIconLoader::SizeEnormous); m_preview->setPixmap(icon); @@ -282,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 @@ -332,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)); }