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),
// preview
m_preview = new PixmapViewer(this);
m_preview->setMinimumWidth(KIconLoader::SizeEnormous);
- m_preview->setFixedHeight(KIconLoader::SizeEnormous);
+ m_preview->setMinimumHeight(KIconLoader::SizeEnormous);
// name
m_nameLabel = new QLabel(this);
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);
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
{
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);
}
}
const int maxWidth = event->size().width() - KDialog::spacingHint() * 4;
m_nameLabel->setMaximumWidth(maxWidth);
m_infoLabel->setMaximumWidth(maxWidth);
+
+ // try to increase the preview as large as possible
+ m_preview->setSizeHint(QSize(maxWidth, maxWidth));
+ m_urlCandidate = m_shownUrl; // reset the URL candidate if a resizing is done
+ m_timer->start(TimerDelay);
+
SidebarPage::resizeEvent(event);
}
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->width());
m_preview->setPixmap(icon);
m_nameLabel->setText(i18ncp("@info", "%1 item selected", "%1 items selected", selectedItems.count()));
} else if (!applyPlace(file)) {
KIO::PreviewJob* job = KIO::filePreview(list,
m_preview->width(),
- KIconLoader::SizeEnormous,
+ m_preview->height(),
0,
0,
true,
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
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));
}