KItemListViewLayouter uses a KItemListSizeHintResolver to find out how
much space the items will need in the view.
Before this commit, the size hint resolver object could be changed at
runtime, and it could also be null. However, we never made use of these
possibilities, so all the code that checks if m_sizeHintResolver is
null is actually not needed at all.
m_sizeHintResolver = new KItemListSizeHintResolver(this);
m_sizeHintResolver = new KItemListSizeHintResolver(this);
- m_layouter = new KItemListViewLayouter(this);
- m_layouter->setSizeHintResolver(m_sizeHintResolver);
+ m_layouter = new KItemListViewLayouter(m_sizeHintResolver, this);
m_animation = new KItemListViewAnimation(this);
connect(m_animation, SIGNAL(finished(QGraphicsWidget*,KItemListViewAnimation::AnimationType)),
m_animation = new KItemListViewAnimation(this);
connect(m_animation, SIGNAL(finished(QGraphicsWidget*,KItemListViewAnimation::AnimationType)),
// #define KITEMLISTVIEWLAYOUTER_DEBUG
// #define KITEMLISTVIEWLAYOUTER_DEBUG
-KItemListViewLayouter::KItemListViewLayouter(QObject* parent) :
+KItemListViewLayouter::KItemListViewLayouter(KItemListSizeHintResolver* sizeHintResolver, QObject* parent) :
QObject(parent),
m_dirty(true),
m_visibleIndexesDirty(true),
QObject(parent),
m_dirty(true),
m_visibleIndexesDirty(true),
m_itemMargin(),
m_headerHeight(0),
m_model(0),
m_itemMargin(),
m_headerHeight(0),
m_model(0),
+ m_sizeHintResolver(sizeHintResolver),
m_scrollOffset(0),
m_maximumScrollOffset(0),
m_itemOffset(0),
m_scrollOffset(0),
m_maximumScrollOffset(0),
m_itemOffset(0),
m_groupHeaderMargin(0),
m_itemInfos()
{
m_groupHeaderMargin(0),
m_itemInfos()
{
+ Q_ASSERT(m_sizeHintResolver);
}
KItemListViewLayouter::~KItemListViewLayouter()
}
KItemListViewLayouter::~KItemListViewLayouter()
-void KItemListViewLayouter::setSizeHintResolver(KItemListSizeHintResolver* sizeHintResolver)
-{
- if (m_sizeHintResolver != sizeHintResolver) {
- m_sizeHintResolver = sizeHintResolver;
- m_dirty = true;
- }
-}
-
-const KItemListSizeHintResolver* KItemListViewLayouter::sizeHintResolver() const
-{
- return m_sizeHintResolver;
-}
-
int KItemListViewLayouter::firstVisibleIndex() const
{
const_cast<KItemListViewLayouter*>(this)->doLayout();
int KItemListViewLayouter::firstVisibleIndex() const
{
const_cast<KItemListViewLayouter*>(this)->doLayout();
- QSizeF sizeHint;
- if (m_sizeHintResolver) {
- sizeHint = m_sizeHintResolver->sizeHint(index);
- } else {
- sizeHint = m_itemSize;
- }
+ QSizeF sizeHint = m_sizeHintResolver->sizeHint(index);
const qreal x = m_columnOffsets.at(m_itemInfos.at(index).column);
const qreal y = m_rowOffsets.at(m_itemInfos.at(index).row);
const qreal x = m_columnOffsets.at(m_itemInfos.at(index).column);
const qreal y = m_rowOffsets.at(m_itemInfos.at(index).row);
- qreal itemWidth;
- if (m_sizeHintResolver) {
- itemWidth = m_sizeHintResolver->sizeHint(index).width();
- } else {
- itemWidth = m_itemSize.width();
- }
+ const qreal itemWidth = m_sizeHintResolver->sizeHint(index).width();
if (itemWidth > headerWidth) {
headerWidth = itemWidth;
if (itemWidth > headerWidth) {
headerWidth = itemWidth;
int column = 0;
while (index < itemCount && column < m_columnCount) {
qreal requiredItemHeight = itemSize.height();
int column = 0;
while (index < itemCount && column < m_columnCount) {
qreal requiredItemHeight = itemSize.height();
- if (m_sizeHintResolver) {
- const QSizeF sizeHint = m_sizeHintResolver->sizeHint(index);
- const qreal sizeHintHeight = horizontalScrolling ? sizeHint.width() : sizeHint.height();
- if (sizeHintHeight > requiredItemHeight) {
- requiredItemHeight = sizeHintHeight;
- }
+ const QSizeF sizeHint = m_sizeHintResolver->sizeHint(index);
+ const qreal sizeHintHeight = horizontalScrolling ? sizeHint.width() : sizeHint.height();
+ if (sizeHintHeight > requiredItemHeight) {
+ requiredItemHeight = sizeHintHeight;
}
ItemInfo& itemInfo = m_itemInfos[index];
}
ItemInfo& itemInfo = m_itemInfos[index];
- KItemListViewLayouter(QObject* parent = 0);
+ KItemListViewLayouter(KItemListSizeHintResolver* sizeHintResolver, QObject* parent = 0);
virtual ~KItemListViewLayouter();
void setScrollOrientation(Qt::Orientation orientation);
virtual ~KItemListViewLayouter();
void setScrollOrientation(Qt::Orientation orientation);
void setModel(const KItemModelBase* model);
const KItemModelBase* model() const;
void setModel(const KItemModelBase* model);
const KItemModelBase* model() const;
- void setSizeHintResolver(KItemListSizeHintResolver* sizeHintResolver);
- const KItemListSizeHintResolver* sizeHintResolver() const;
-
/**
* @return The first (at least partly) visible index. -1 is returned
* if the item count is 0.
/**
* @return The first (at least partly) visible index. -1 is returned
* if the item count is 0.