m_previewSeparator->setVisible(showPreview);
m_metaDataWidget = new MetaDataWidget(parent);
+ m_metaDataWidget->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Minimum);
+
+ // Encapsulate the MetaDataWidget inside a container that has a dummy widget
+ // at the bottom. This prevents that the meta data widget gets vertically stretched
+ // in the case where the height of m_metaDataArea > m_metaDataWidget.
+ QWidget* metaDataWidgetContainer = new QWidget(parent);
+ QVBoxLayout* containerLayout = new QVBoxLayout(metaDataWidgetContainer);
+ containerLayout->setContentsMargins(0, 0, 0, 0);
+ containerLayout->setSpacing(0);
+ containerLayout->addWidget(m_metaDataWidget);
+ containerLayout->addWidget(new QWidget(metaDataWidgetContainer));
m_metaDataArea = new QScrollArea(parent);
- //m_metaDataArea->setWidget(m_metaDataArea);
+ m_metaDataArea->setWidget(metaDataWidgetContainer);
m_metaDataArea->setWidgetResizable(true);
m_metaDataArea->setFrameShape(QFrame::NoFrame);
layout->addWidget(m_preview);
layout->addWidget(m_phononWidget);
layout->addWidget(m_previewSeparator);
- if (m_metaDataWidget != 0) {
- layout->addWidget(m_metaDataWidget);
- }
layout->addWidget(m_metaDataArea);
parent->setLayout(layout);
}
if (obj == m_metaDataArea->viewport()) {
// The size of the meta text area has changed. Adjust the fixed
// width in a way that no horizontal scrollbar needs to be shown.
- //m_metaDataWidget->setFixedWidth(resizeEvent->size().width());
+ m_metaDataWidget->setFixedWidth(resizeEvent->size().width());
} else if (obj == parent()) {
// If the text inside the name label or the info label cannot
// get wrapped, then the maximum width of the label is increased
// The metadata widget also contains a text widget which may return
// a large preferred width.
if (m_metaDataWidget != 0) {
- //m_metaDataWidget->setMaximumWidth(maxWidth);
+ m_metaDataWidget->setMaximumWidth(maxWidth);
}
// try to increase the preview as large as possible
#include "metadatawidget.h"
#include <kfileitem.h>
+#include <kglobalsettings.h>
#include <klocale.h>
#include <QGridLayout>
q(parent)
{
m_gridLayout = new QGridLayout(parent);
+ m_gridLayout->setContentsMargins(0, 0, 0, 0);
+ m_gridLayout->setSpacing(0);
m_typeInfo = new QLabel(parent);
m_sizeLabel = new QLabel(parent);
row.infoWidget = infoWidget;
m_rows.append(row);
- // use a brighter color for the label
+ // use a brighter color for the label and a small font size
QPalette palette = label->palette();
QColor textColor = palette.color(QPalette::Text);
textColor.setAlpha(128);
palette.setColor(QPalette::WindowText, textColor);
label->setPalette(palette);
+ label->setFont(KGlobalSettings::smallestReadableFont());
+ label->setAlignment(Qt::AlignTop | Qt::AlignLeft);
+
+ QLabel* infoLabel = qobject_cast<QLabel*>(infoWidget);
+ if (infoLabel != 0) {
+ infoLabel->setFont(KGlobalSettings::smallestReadableFont());
+ infoLabel->setWordWrap(true);
+ infoLabel->setAlignment(Qt::AlignTop | Qt::AlignRight);
+ }
// add the row to grid layout
const int rowIndex = m_rows.count();
}
++index;
}
+ if (metaInfoCount > 0) {
+ --index;
+ }
// remove rows that are not needed anymore
for (int i = rowCount - 1; i > index; --i) {