KCategorizedView::Private::Private(KCategorizedView *listView)
: listView(listView)
, itemCategorizer(0)
+ , biggestItemSize(QSize(0, 0))
, mouseButtonPressed(false)
, isDragging(false)
, dragLeftViewport(false)
int viewportWidth = listView->viewport()->width() - listView->spacing();
- // We really need all items to be of same size. Otherwise we cannot do this
- // (ereslibre)
- // QSize itemSize =
- // listView->sizeHintForIndex(proxyModel->mapFromSource(index));
- // int itemHeight = itemSize.height();
- // int itemWidth = itemSize.width();*/
- int itemHeight = 107;
- int itemWidth = 130;
+ int itemHeight = biggestItemSize.height();
+ int itemWidth = biggestItemSize.width();
int itemWidthPlusSeparation = listView->spacing() + itemWidth;
int elementsPerRow = viewportWidth / itemWidthPlusSeparation;
if (!elementsPerRow)
int viewportWidth = listView->viewport()->width() - listView->spacing();
- // We really need all items to be of same size. Otherwise we cannot do this
- // (ereslibre)
- // QSize itemSize = listView->sizeHintForIndex(index);
- // int itemHeight = itemSize.height();
- // int itemWidth = itemSize.width();
- int itemHeight = 107;
- int itemWidth = 130;
+ int itemHeight = biggestItemSize.height();
+ int itemWidth = biggestItemSize.width();
int itemWidthPlusSeparation = listView->spacing() + itemWidth;
int elementsPerRow = viewportWidth / itemWidthPlusSeparation;
const QModelIndex current = selectionModel()->currentIndex();
int viewportWidth = viewport()->width() - spacing();
- // We really need all items to be of same size. Otherwise we cannot do this
- // (ereslibre)
- // QSize itemSize = listView->sizeHintForIndex(index);
- // int itemHeight = itemSize.height();
- // int itemWidth = itemSize.width();
- int itemHeight = 107;
- int itemWidth = 130;
+ int itemHeight = d->biggestItemSize.height();
+ int itemWidth = d->biggestItemSize.width();
int itemWidthPlusSeparation = spacing() + itemWidth;
int elementsPerRow = viewportWidth / itemWidthPlusSeparation;
// Add all elements mapped to the source model
for (int k = 0; k < d->proxyModel->rowCount(); k++)
{
+ d->biggestItemSize = QSize(qMax(sizeHintForIndex(d->proxyModel->index(k, 0)).width(),
+ d->biggestItemSize.width()),
+ qMax(sizeHintForIndex(d->proxyModel->index(k, 0)).height(),
+ d->biggestItemSize.height()));
+
d->sourceModelIndexList <<
d->proxyModel->mapToSource(d->proxyModel->index(k, 0));
}