applyRolesToModel();
}
updateLayoutOfVisibleItems();
-
- setSupportsItemExpanding(m_itemLayout == DetailsLayout);
}
}
return QSize();
}
-QHash<QByteArray, QSizeF> KFileItemListView::visibleRolesSizes(const KItemRangeList& itemRanges) const
+QHash<QByteArray, qreal> KFileItemListView::preferredColumnWidths(const KItemRangeList& itemRanges) const
{
QElapsedTimer timer;
timer.start();
- QHash<QByteArray, QSizeF> sizes;
+ QHash<QByteArray, qreal> widths;
int calculatedItemCount = 0;
bool maxTimeExceeded = false;
for (int i = startIndex; i <= endIndex; ++i) {
foreach (const QByteArray& visibleRole, visibleRoles()) {
- QSizeF maxSize = sizes.value(visibleRole, QSizeF(0, 0));
+ qreal maxWidth = widths.value(visibleRole, 0);
const QSizeF itemSize = visibleRoleSizeHint(i, visibleRole);
- maxSize = maxSize.expandedTo(itemSize);
- sizes.insert(visibleRole, maxSize);
+ maxWidth = qMax(itemSize.width(), maxWidth);
+ widths.insert(visibleRole, maxWidth);
}
if (calculatedItemCount > 100 && timer.elapsed() > 200) {
}
kDebug() << "[TIME] Calculated dynamic item size for " << rangesItemCount << "items:" << timer.elapsed();
#endif
- return sizes;
+ return widths;
}
QPixmap KFileItemListView::createDragPixmap(const QSet<int>& indexes) const
case DetailsLayout: fileItemListWidget->setLayout(KFileItemListWidget::DetailsLayout); break;
default: Q_ASSERT(false); break;
}
+
+ fileItemListWidget->setSupportsItemExpanding(supportsItemExpanding());
}
bool KFileItemListView::itemSizeHintUpdateRequired(const QSet<QByteArray>& changedRoles) const
triggerIconSizeUpdate();
}
+void KFileItemListView::onSupportsItemExpandingChanged(bool supportsExpanding)
+{
+ Q_UNUSED(supportsExpanding);
+ applyRolesToModel();
+ updateLayoutOfVisibleItems();
+}
+
void KFileItemListView::onTransactionBegin()
{
m_modelRolesUpdater->setPaused(true);
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;
roles.insert("iconName");
roles.insert("name");
roles.insert("isDir");
- if (m_itemLayout == DetailsLayout) {
+ if (supportsItemExpanding()) {
roles.insert("isExpanded");
roles.insert("isExpandable");
roles.insert("expandedParentsCount");