X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/8d0fda61c8312ccaa5ee1f77fd8808e8bdedba36..66b47bf3d29d2f94c1b4ff2565ec8f8acaaa8d8f:/src/infosidebarpage.cpp diff --git a/src/infosidebarpage.cpp b/src/infosidebarpage.cpp index 301920a94..cb90fce3e 100644 --- a/src/infosidebarpage.cpp +++ b/src/infosidebarpage.cpp @@ -29,12 +29,14 @@ #include #include #include +#include #include #include #include #include #include +#include #include #include #include @@ -51,6 +53,7 @@ InfoSidebarPage::InfoSidebarPage(QWidget* parent) : m_shownUrl(), m_urlCandidate(), m_fileItem(), + m_selection(), m_nameLabel(0), m_preview(0), m_metaDataWidget(0), @@ -89,9 +92,12 @@ InfoSidebarPage::InfoSidebarPage(QWidget* parent) : m_metaTextLabel->setMinimumWidth(spacing); layout->addWidget(m_nameLabel); + layout->addWidget(new KSeparator(this)); layout->addWidget(m_preview); + layout->addWidget(new KSeparator(this)); if (m_metaDataWidget != 0) { layout->addWidget(m_metaDataWidget); + layout->addWidget(new KSeparator(this)); } layout->addWidget(m_metaTextLabel); @@ -123,18 +129,15 @@ void InfoSidebarPage::setUrl(const KUrl& url) void InfoSidebarPage::setSelection(const KFileItemList& selection) { - SidebarPage::setSelection(selection); + m_selection = selection; const int count = selection.count(); if (count == 0) { m_shownUrl = url(); showItemInfo(); } else { - if (count == 1) { - const KUrl url = selection.first().url(); - if (!url.isEmpty()) { - m_urlCandidate = url; - } + if ((count == 1) && !selection.first().url().isEmpty()) { + m_urlCandidate = selection.first().url(); } m_timer->start(TimerDelay); } @@ -142,32 +145,29 @@ void InfoSidebarPage::setSelection(const KFileItemList& selection) void InfoSidebarPage::requestDelayedItemInfo(const KFileItem& item) { - if (!selection().isEmpty()) { - // if items are selected, no item information may get requested - return; - } - cancelRequest(); m_fileItem = KFileItem(); - - if (!item.isNull() && (selection().size() <= 1)) { - const KUrl url = item.url(); - if (!url.isEmpty()) { - m_urlCandidate = url; - m_fileItem = item; + if (item.isNull()) { + // The cursor is above the viewport. If files are selected, + // show information regarding the selection. + if (m_selection.size() > 0) { + m_pendingPreview = false; m_timer->start(TimerDelay); } + } else if (!item.url().isEmpty()) { + m_urlCandidate = item.url(); + m_fileItem = item; + m_timer->start(TimerDelay); } } void InfoSidebarPage::showEvent(QShowEvent* event) { SidebarPage::showEvent(event); - if (event->spontaneous()) { - return; + if (!event->spontaneous()) { + showItemInfo(); } - showItemInfo(); } void InfoSidebarPage::resizeEvent(QResizeEvent* event) @@ -196,27 +196,29 @@ void InfoSidebarPage::showItemInfo() cancelRequest(); - const KFileItemList& selectedItems = selection(); - const KUrl file = selectedItems.isEmpty() ? m_shownUrl : selectedItems[0].url(); + const KUrl file = (!m_fileItem.isNull() || m_selection.isEmpty()) ? m_shownUrl : m_selection[0].url(); if (!file.isValid()) { return; } - const int itemCount = selectedItems.count(); - if (itemCount > 1) { + const int selectionCount = m_selection.count(); + if (m_fileItem.isNull() && (selectionCount > 1)) { KIconLoader iconLoader; QPixmap icon = iconLoader.loadIcon("dialog-information", KIconLoader::NoGroup, KIconLoader::SizeEnormous); m_preview->setPixmap(icon); - m_nameLabel->setText(i18ncp("@info", "%1 item selected", "%1 items selected", selectedItems.count())); + m_nameLabel->setText(i18ncp("@info", "%1 item selected", "%1 items selected", selectionCount)); } else if (!applyPlace(file)) { // try to get a preview pixmap from the item... KUrl::List list; list.append(file); m_pendingPreview = true; - m_preview->setPixmap(QPixmap()); + + KIconEffect iconEffect; + QPixmap disabledPixmap = iconEffect.apply(m_preview->pixmap(), KIconLoader::Desktop, KIconLoader::DisabledState); + m_preview->setPixmap(disabledPixmap); KIO::PreviewJob* job = KIO::filePreview(list, m_preview->width(), @@ -289,12 +291,12 @@ void InfoSidebarPage::showMetaInfo() { m_metaTextLabel->clear(); - const KFileItemList& selectedItems = selection(); - if (selectedItems.size() <= 1) { + if ((m_selection.size() <= 1) || !m_fileItem.isNull()) { KFileItem fileItem; if (m_fileItem.isNull()) { // no pending request is ongoing - fileItem = KFileItem(KFileItem::Unknown, KFileItem::Unknown, m_shownUrl); + const KUrl url = (m_selection.size() == 1) ? m_selection.first().url() : m_shownUrl; + fileItem = KFileItem(KFileItem::Unknown, KFileItem::Unknown, url); fileItem.refresh(); } else { fileItem = m_fileItem; @@ -302,6 +304,7 @@ void InfoSidebarPage::showMetaInfo() if (fileItem.isDir()) { m_metaTextLabel->add(i18nc("@label", "Type:"), i18nc("@label", "Folder")); + m_metaTextLabel->add(i18nc("@label", "Modified:"), fileItem.timeString()); } else { m_metaTextLabel->add(i18nc("@label", "Type:"), fileItem.mimeComment()); @@ -333,19 +336,19 @@ void InfoSidebarPage::showMetaInfo() } if (m_metaDataWidget != 0) { - m_metaDataWidget->setFile(fileItem.url()); + m_metaDataWidget->setFile(fileItem.targetUrl()); } } else { if (m_metaDataWidget != 0) { KUrl::List urls; - foreach (const KFileItem& item, selectedItems) { - urls.append(item.url()); + foreach (const KFileItem& item, m_selection) { + urls.append(item.targetUrl()); } m_metaDataWidget->setFiles(urls); } - unsigned long int totalSize = 0; - foreach (const KFileItem& item, selectedItems) { + quint64 totalSize = 0; + foreach (const KFileItem& item, m_selection) { // Only count the size of files, not dirs to match what // DolphinViewContainer::selectionStatusBarText() does. if (!item.isDir() && !item.isLink()) {