]> cloud.milkyroute.net Git - dolphin.git/commitdiff
Ensure that KItemListViewLayouter always has a size hint resolver
authorFrank Reininghaus <frank78ac@googlemail.com>
Tue, 11 Feb 2014 17:28:22 +0000 (18:28 +0100)
committerFrank Reininghaus <frank78ac@googlemail.com>
Tue, 11 Feb 2014 17:28:32 +0000 (18:28 +0100)
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.

src/kitemviews/kitemlistview.cpp
src/kitemviews/private/kitemlistviewlayouter.cpp
src/kitemviews/private/kitemlistviewlayouter.h

index 38ce63af0adf839cbfee987fc33fcc1363fc9f01..82f8a2053f2a025de19eff5cdbf6c4fc9789e64a 100644 (file)
@@ -111,8 +111,7 @@ KItemListView::KItemListView(QGraphicsWidget* parent) :
 
     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)),
index 73f3d6182153d1c4eca8c5ec5fb04afbc9e4991b..9da5384d4f6e849d145db850ef94ba46c53d98ab 100644 (file)
@@ -26,7 +26,7 @@
 
 // #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),
@@ -36,7 +36,7 @@ KItemListViewLayouter::KItemListViewLayouter(QObject* parent) :
     m_itemMargin(),
     m_headerHeight(0),
     m_model(0),
     m_itemMargin(),
     m_headerHeight(0),
     m_model(0),
-    m_sizeHintResolver(0),
+    m_sizeHintResolver(sizeHintResolver),
     m_scrollOffset(0),
     m_maximumScrollOffset(0),
     m_itemOffset(0),
     m_scrollOffset(0),
     m_maximumScrollOffset(0),
     m_itemOffset(0),
@@ -53,6 +53,7 @@ KItemListViewLayouter::KItemListViewLayouter(QObject* parent) :
     m_groupHeaderMargin(0),
     m_itemInfos()
 {
     m_groupHeaderMargin(0),
     m_itemInfos()
 {
+    Q_ASSERT(m_sizeHintResolver);
 }
 
 KItemListViewLayouter::~KItemListViewLayouter()
 }
 
 KItemListViewLayouter::~KItemListViewLayouter()
@@ -209,19 +210,6 @@ const KItemModelBase* KItemListViewLayouter::model() const
     return m_model;
 }
 
     return m_model;
 }
 
-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();
@@ -241,12 +229,7 @@ QRectF KItemListViewLayouter::itemRect(int index) const
         return QRectF();
     }
 
         return QRectF();
     }
 
-    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);
@@ -299,12 +282,7 @@ QRectF KItemListViewLayouter::groupHeaderRect(int index) const
                 break;
             }
 
                 break;
             }
 
-            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;
@@ -482,12 +460,10 @@ void KItemListViewLayouter::doLayout()
             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];
index 5ae4724116900e684d571890de6a182dcb34679e..0efcab12b11c86d6374d0f102ab78a7df4cec748 100644 (file)
@@ -50,7 +50,7 @@ class LIBDOLPHINPRIVATE_EXPORT KItemListViewLayouter : public QObject
     Q_OBJECT
 
 public:
     Q_OBJECT
 
 public:
-    KItemListViewLayouter(QObject* parent = 0);
+    KItemListViewLayouter(KItemListSizeHintResolver* sizeHintResolver, QObject* parent = 0);
     virtual ~KItemListViewLayouter();
 
     void setScrollOrientation(Qt::Orientation orientation);
     virtual ~KItemListViewLayouter();
 
     void setScrollOrientation(Qt::Orientation orientation);
@@ -103,9 +103,6 @@ public:
     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.