]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/kitemviews/kitemlistviewlayouter_p.h
First version of a unit test for KItemListController
[dolphin.git] / src / kitemviews / kitemlistviewlayouter_p.h
index c81995d9b4417f109f90fe0f4c97128eaf625b49..25f8eb6cda91668d1172057a28da982d8a670ade 100644 (file)
@@ -55,6 +55,13 @@ public:
     void setHeaderHeight(qreal height);
     qreal headerHeight() const;
 
+    /**
+     * Sets the height of the group header that is used
+     * to indicate a new item group.
+     */
+    void setGroupHeaderHeight(qreal height);
+    qreal groupHeaderHeight() const;
+
     // TODO: add note that offset can be < 0 or > maximumOffset!
     void setScrollOffset(qreal scrollOffset);
     qreal scrollOffset() const;
@@ -72,18 +79,33 @@ public:
     void setSizeHintResolver(const KItemListSizeHintResolver* sizeHintResolver);
     const KItemListSizeHintResolver* sizeHintResolver() const;
 
-
-    // TODO: mention that return value is -1 if count == 0
+    /**
+     * @return The first (at least partly) visible index. -1 is returned
+     *         if the item count is 0.
+     */
     int firstVisibleIndex() const;
 
-    // TODO: mention that return value is -1 if count == 0
+    /**
+     * @return The last (at least partly) visible index. -1 is returned
+     *         if the item count is 0.
+     */
     int lastVisibleIndex() const;
 
-    QRectF itemBoundingRect(int index) const;
+    /**
+     * @return Rectangle of the item with the index \a index.
+     *         The top/left of the bounding rectangle is related to
+     *         the top/left of the KItemListView. An empty rectangle
+     *         is returned if an invalid index is given.
+     */
+    QRectF itemRect(int index) const;
 
-    int maximumVisibleItems() const;
+    QRectF groupHeaderRect(int index) const;
 
-    int itemsPerOffset() const;
+    /**
+     * @return Maximum number of (at least partly) visible items for
+     *         the given size.
+     */
+    int maximumVisibleItems() const;
 
     /**
      * @return True if the item with the index \p itemIndex
@@ -95,15 +117,22 @@ public:
 
 private:
     void doLayout();
-
     void updateVisibleIndexes();
-    void updateGroupedVisibleIndexes();
-    void createGroupHeaders();
+    bool createGroupHeaders();
+
+    /**
+     * @return Minimum width of group headers when grouping is enabled in the horizontal
+     *         alignment mode. The header alignment is done like this:
+     *         Header-1 Header-2 Header-3
+     *         Item 1   Item 4   Item 7
+     *         Item 2   Item 5   Item 8
+     *         Item 3   Item 6   Item 9
+     */
+    qreal minimumGroupHeaderWidth() const;
 
 private:
     bool m_dirty;
     bool m_visibleIndexesDirty;
-    bool m_grouped;
 
     Qt::Orientation m_scrollOrientation;
     QSizeF m_size;
@@ -122,23 +151,18 @@ private:
     int m_firstVisibleIndex;
     int m_lastVisibleIndex;
 
-    int m_firstVisibleGroupIndex;
-
     qreal m_columnWidth;
     qreal m_xPosInc;
     int m_columnCount;
 
-    struct ItemGroup {
-        int firstItemIndex;
-        qreal y;
-    };
-    QList<ItemGroup> m_groups;
-
     // Stores all item indexes that are the first item of a group.
     // Assures fast access for KItemListViewLayouter::isFirstGroupItem().
-    QSet<int> m_groupIndexes;
+    QSet<int> m_groupItemIndexes;
+    qreal m_groupHeaderHeight;
+
+    QList<QRectF> m_itemRects;
 
-    QList<QRectF> m_itemBoundingRects;
+    friend class KItemListControllerTest;
 };
 
 #endif