X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/8d0fda61c8312ccaa5ee1f77fd8808e8bdedba36..50acc2d6ecbae2fb3c228bf779b23eabf3346cb1:/src/infosidebarpage.cpp diff --git a/src/infosidebarpage.cpp b/src/infosidebarpage.cpp index 301920a94..a4c3d4157 100644 --- a/src/infosidebarpage.cpp +++ b/src/infosidebarpage.cpp @@ -35,8 +35,10 @@ #include #include #include +#include #include #include +#include #include #include @@ -45,6 +47,37 @@ #include "metatextlabel.h" #include "pixmapviewer.h" +class InfoSeparator : public QWidget +{ +public: + InfoSeparator(QWidget* parent); + virtual ~InfoSeparator(); + +protected: + virtual void paintEvent(QPaintEvent* event); +}; + +InfoSeparator::InfoSeparator(QWidget* parent) : + QWidget(parent) +{ + setMinimumSize(0, 8); +} + +InfoSeparator::~InfoSeparator() +{ +} + +void InfoSeparator::paintEvent(QPaintEvent* event) +{ + Q_UNUSED(event); + QPainter painter(this); + + QStyleOptionMenuItem option; + option.initFrom(this); + option.menuItemType = QStyleOptionMenuItem::Separator; + style()->drawControl(QStyle::CE_MenuItem, &option, &painter, this); +} + InfoSidebarPage::InfoSidebarPage(QWidget* parent) : SidebarPage(parent), m_pendingPreview(false), @@ -89,9 +122,12 @@ InfoSidebarPage::InfoSidebarPage(QWidget* parent) : m_metaTextLabel->setMinimumWidth(spacing); layout->addWidget(m_nameLabel); + layout->addWidget(new InfoSeparator(this)); layout->addWidget(m_preview); + layout->addWidget(new InfoSeparator(this)); if (m_metaDataWidget != 0) { layout->addWidget(m_metaDataWidget); + layout->addWidget(new InfoSeparator(this)); } layout->addWidget(m_metaTextLabel); @@ -130,11 +166,8 @@ void InfoSidebarPage::setSelection(const KFileItemList& selection) 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 +175,28 @@ 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 (selection().size() > 0) { 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) @@ -197,19 +226,19 @@ void InfoSidebarPage::showItemInfo() cancelRequest(); const KFileItemList& selectedItems = selection(); - const KUrl file = selectedItems.isEmpty() ? m_shownUrl : selectedItems[0].url(); + const KUrl file = (!m_fileItem.isNull() || selectedItems.isEmpty()) ? m_shownUrl : selectedItems[0].url(); if (!file.isValid()) { return; } - const int itemCount = selectedItems.count(); - if (itemCount > 1) { + const int selectionCount = selectedItems.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; @@ -290,11 +319,12 @@ void InfoSidebarPage::showMetaInfo() m_metaTextLabel->clear(); const KFileItemList& selectedItems = selection(); - if (selectedItems.size() <= 1) { + if ((selectedItems.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 = (selectedItems.size() == 1) ? selectedItems.first().url() : m_shownUrl; + fileItem = KFileItem(KFileItem::Unknown, KFileItem::Unknown, url); fileItem.refresh(); } else { fileItem = m_fileItem; @@ -302,6 +332,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,13 +364,13 @@ 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()); + urls.append(item.targetUrl()); } m_metaDataWidget->setFiles(urls); }