X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/f9bcd0a47cbdf0806c35a82856efdbe06279fb82..7f4e9d9ed908eaa10659cbd04f53a82e28e8a59b:/src/kitemviews/kitemlistviewlayouter_p.h diff --git a/src/kitemviews/kitemlistviewlayouter_p.h b/src/kitemviews/kitemlistviewlayouter_p.h index 18ffb4caa..25f8eb6cd 100644 --- a/src/kitemviews/kitemlistviewlayouter_p.h +++ b/src/kitemviews/kitemlistviewlayouter_p.h @@ -55,9 +55,23 @@ 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 setOffset(qreal offset); - qreal offset() const; + void setScrollOffset(qreal scrollOffset); + qreal scrollOffset() const; + + qreal maximumScrollOffset() const; + + void setItemOffset(qreal scrollOffset); + qreal itemOffset() const; + + qreal maximumItemOffset() const; void setModel(const KItemModelBase* model); const KItemModelBase* model() const; @@ -65,19 +79,33 @@ public: void setSizeHintResolver(const KItemListSizeHintResolver* sizeHintResolver); const KItemListSizeHintResolver* sizeHintResolver() const; - qreal maximumOffset() 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 @@ -89,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; @@ -107,29 +142,27 @@ private: const KItemModelBase* m_model; const KItemListSizeHintResolver* m_sizeHintResolver; - qreal m_offset; - qreal m_maximumOffset; + qreal m_scrollOffset; + qreal m_maximumScrollOffset; + + qreal m_itemOffset; + qreal m_maximumItemOffset; 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 m_groups; - // Stores all item indexes that are the first item of a group. // Assures fast access for KItemListViewLayouter::isFirstGroupItem(). - QSet m_groupIndexes; + QSet m_groupItemIndexes; + qreal m_groupHeaderHeight; + + QList m_itemRects; - QList m_itemBoundingRects; + friend class KItemListControllerTest; }; #endif