diff options
| author | Peter Penz <[email protected]> | 2012-02-08 17:45:22 +0100 |
|---|---|---|
| committer | Peter Penz <[email protected]> | 2012-02-08 17:48:32 +0100 |
| commit | 03415d90783979f8e51880b7950721985fee29bf (patch) | |
| tree | 2e38e2cddbc293f1fa3be44729a079bf03d4ec45 /src/kitemviews/kitemlistviewlayouter.cpp | |
| parent | 3c83d8f14defbec5f09aeeb78de3885535d2dc71 (diff) | |
Layout optimizations
- Differ internally between margins and paddings
- Add a small padding in the icons-view and the compact-views
- Optimize the width of the icons-view if previews are shown
Diffstat (limited to 'src/kitemviews/kitemlistviewlayouter.cpp')
| -rw-r--r-- | src/kitemviews/kitemlistviewlayouter.cpp | 30 |
1 files changed, 24 insertions, 6 deletions
diff --git a/src/kitemviews/kitemlistviewlayouter.cpp b/src/kitemviews/kitemlistviewlayouter.cpp index e30c9aa42..30dd10346 100644 --- a/src/kitemviews/kitemlistviewlayouter.cpp +++ b/src/kitemviews/kitemlistviewlayouter.cpp @@ -33,6 +33,7 @@ KItemListViewLayouter::KItemListViewLayouter(QObject* parent) : m_scrollOrientation(Qt::Vertical), m_size(), m_itemSize(128, 128), + m_itemMargin(), m_headerHeight(0), m_model(0), m_sizeHintResolver(0), @@ -94,6 +95,19 @@ QSizeF KItemListViewLayouter::itemSize() const return m_itemSize; } +void KItemListViewLayouter::setItemMargin(const QSizeF& margin) +{ + if (m_itemMargin != margin) { + m_itemMargin = margin; + m_dirty = true; + } +} + +QSizeF KItemListViewLayouter::itemMargin() const +{ + return m_itemMargin; +} + void KItemListViewLayouter::setHeaderHeight(qreal height) { if (m_headerHeight != height) { @@ -276,6 +290,7 @@ void KItemListViewLayouter::doLayout() m_visibleIndexesDirty = true; QSizeF itemSize = m_itemSize; + QSizeF itemMargin = m_itemMargin; QSizeF size = m_size; const bool grouped = createGroupHeaders(); @@ -286,6 +301,8 @@ void KItemListViewLayouter::doLayout() // a vertical scrolling itemSize.setWidth(m_itemSize.height()); itemSize.setHeight(m_itemSize.width()); + itemMargin.setWidth(m_itemMargin.height()); + itemMargin.setHeight(m_itemMargin.width()); size.setWidth(m_size.height()); size.setHeight(m_size.width()); @@ -297,9 +314,10 @@ void KItemListViewLayouter::doLayout() } } - m_columnWidth = itemSize.width(); - m_columnCount = qMax(1, int(size.width() / m_columnWidth)); - m_xPosInc = 0; + m_columnWidth = itemSize.width() + itemMargin.width(); + const qreal widthForColumns = size.width() - itemMargin.width(); + m_columnCount = qMax(1, int(widthForColumns / m_columnWidth)); + m_xPosInc = itemMargin.width(); const int itemCount = m_model->count(); if (itemCount > m_columnCount) { @@ -319,7 +337,7 @@ void KItemListViewLayouter::doLayout() m_itemRects.reserve(itemCount); - qreal y = m_headerHeight; + qreal y = m_headerHeight + itemMargin.height(); int rowIndex = 0; int index = 0; @@ -393,12 +411,12 @@ void KItemListViewLayouter::doLayout() } } - y += maxItemHeight; + y += maxItemHeight + itemMargin.height(); ++rowIndex; } if (m_itemRects.count() > itemCount) { m_itemRects.erase(m_itemRects.begin() + itemCount, - m_itemRects.end()); + m_itemRects.end()); } if (itemCount > 0) { |
