Details view: Expand the name-column like in Dolphin 1.x

With the new view-engine the name-column always has been expanded
to the maximum width of all available names. But this makes it
impossible to see other columns without scrolling when having long
filenames, so per default the Dolphin 1.x behavior has been applied
to the new view-engine so that the name-column-width gets decreased
to be able to show the other columns.

This patch will be released with KDE applications 4.8.2. For
Dolphin 2.1 (KDE applications 4.9) user-modified widths of the
columns will be remembered per directory also between different
sessions.

CCBUG: 264434
This commit is contained in:
Peter Penz 2012-03-22 15:39:07 +01:00
parent 403aa0bff3
commit 3fc96ef97b
4 changed files with 17 additions and 17 deletions

View file

@ -513,7 +513,7 @@ QSizeF KFileItemListView::visibleRoleSizeHint(int index, const QByteArray& role)
if (role == "name") {
// Increase the width by the expansion-toggle and the current expansion level
const int expandedParentsCount = values.value("expandedParentsCount", 0).toInt();
width += option.padding + expandedParentsCount * itemSize().height() + KIconLoader::SizeSmall;
width += option.padding + (expandedParentsCount + 1) * itemSize().height() + KIconLoader::SizeSmall;
// Increase the width by the required space for the icon
width += option.padding * 2 + option.iconSize;

View file

@ -95,7 +95,7 @@ QList<QByteArray> KItemListHeader::visibleRoles() const
return m_visibleRoles;
}
void KItemListHeader::setVisibleRolesWidths(const QHash<QByteArray, qreal> rolesWidths)
void KItemListHeader::setVisibleRolesWidths(const QHash<QByteArray, qreal>& rolesWidths)
{
m_visibleRolesWidths = rolesWidths;

View file

@ -44,7 +44,7 @@ public:
void setVisibleRoles(const QList<QByteArray>& roles);
QList<QByteArray> visibleRoles() const;
void setVisibleRolesWidths(const QHash<QByteArray, qreal> rolesWidths);
void setVisibleRolesWidths(const QHash<QByteArray, qreal>& rolesWidths);
QHash<QByteArray, qreal> visibleRolesWidths() const;
qreal minimumRoleWidth() const;

View file

@ -1998,7 +1998,7 @@ void KItemListView::updateStretchedVisibleRolesSizes()
// Calculate the maximum size of an item by considering the
// visible role sizes and apply them to the layouter. If the
// size does not use the available view-size it the size of the
// size does not use the available view-size the size of the
// first role will get stretched.
m_stretchedVisibleRolesSizes = m_visibleRolesSizes;
const QByteArray role = m_visibleRoles.first();
@ -2009,24 +2009,24 @@ void KItemListView::updateStretchedVisibleRolesSizes()
if (dynamicItemSize.width() <= 0) {
const qreal requiredWidth = visibleRolesSizesWidthSum();
const qreal availableWidth = size().width();
if (requiredWidth < availableWidth) {
// Stretch the first role to use the whole width for the item
if (requiredWidth != availableWidth) {
// Stretch the first role to use the whole remaining width
firstRoleSize.rwidth() += availableWidth - requiredWidth;
// TODO: A proper calculation of the minimum width depends on the implementation
// of KItemListWidget. Probably a kind of minimum size-hint should be introduced
// later.
const qreal minWidth = m_styleOption.iconSize * 2 + 200;
if (firstRoleSize.width() < minWidth) {
firstRoleSize.rwidth() = minWidth;
}
m_stretchedVisibleRolesSizes.insert(role, firstRoleSize);
}
dynamicItemSize.setWidth(qMax(requiredWidth, availableWidth));
dynamicItemSize.rwidth() = qMax(requiredWidth, availableWidth);
}
if (dynamicItemSize.height() <= 0) {
const qreal requiredHeight = visibleRolesSizesHeightSum();
const qreal availableHeight = size().height();
if (requiredHeight < availableHeight) {
// Stretch the first role to use the whole height for the item
firstRoleSize.rheight() += availableHeight - requiredHeight;
m_stretchedVisibleRolesSizes.insert(role, firstRoleSize);
}
dynamicItemSize.setHeight(qMax(requiredHeight, availableHeight));
}
// TODO: A dynamic item height (dynamicItemSize.height() <= 0)
// is not handled currently
m_layouter->setItemSize(dynamicItemSize);