diff options
| author | Peter Penz <[email protected]> | 2012-04-11 16:06:18 +0200 |
|---|---|---|
| committer | Peter Penz <[email protected]> | 2012-04-11 16:08:32 +0200 |
| commit | 6c3d9acbc22ea9463ba40ef84c9e8c8419dfacf3 (patch) | |
| tree | e7ffd63acd5e28eb71a077f816a23534b06fcae2 /src/kitemviews/kitemlistviewlayouter_p.h | |
| parent | d9dbd3398a258d04ec4517fd13e795b437c869d6 (diff) | |
KItemViews: Internal directory restructuration
- Move all private headers from the kitemviews-directory into
the 'private' subdirectory.
- Get rid of DolphinDirLister and just use a directory-lister
internally in KFileItemModel.
- Minor interface-cleanups for signals
Diffstat (limited to 'src/kitemviews/kitemlistviewlayouter_p.h')
| -rw-r--r-- | src/kitemviews/kitemlistviewlayouter_p.h | 235 |
1 files changed, 0 insertions, 235 deletions
diff --git a/src/kitemviews/kitemlistviewlayouter_p.h b/src/kitemviews/kitemlistviewlayouter_p.h deleted file mode 100644 index da5bd1d7d..000000000 --- a/src/kitemviews/kitemlistviewlayouter_p.h +++ /dev/null @@ -1,235 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2011 by Peter Penz <[email protected]> * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the * - * Free Software Foundation, Inc., * - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * - ***************************************************************************/ - -#ifndef KITEMLISTVIEWLAYOUTER_H -#define KITEMLISTVIEWLAYOUTER_H - -#include <libdolphin_export.h> - -#include <QObject> -#include <QRectF> -#include <QSet> -#include <QSizeF> - -class KItemModelBase; -class KItemListSizeHintResolver; - -/** - * @brief Internal helper class for KItemListView to layout the items. - * - * The layouter is capable to align the items within a grid. If the - * scroll-direction is horizontal the column-width of the grid can be - * variable. If the scroll-direction is vertical the row-height of - * the grid can be variable. - * - * The layouter is implemented in a way that it postpones the expensive - * layout operation until a property is read the first time after - * marking the layouter as dirty (see markAsDirty()). This means that - * changing properties of the layouter is not expensive, only the - * first read of a property can get expensive. - */ -class LIBDOLPHINPRIVATE_EXPORT KItemListViewLayouter : public QObject -{ - Q_OBJECT - -public: - KItemListViewLayouter(QObject* parent = 0); - virtual ~KItemListViewLayouter(); - - void setScrollOrientation(Qt::Orientation orientation); - Qt::Orientation scrollOrientation() const; - - void setSize(const QSizeF& size); - QSizeF size() const; - - void setItemSize(const QSizeF& size); - QSizeF itemSize() const; - - /** - * Margin between the rows and columns of items. - */ - void setItemMargin(const QSizeF& margin); - QSizeF itemMargin() const; - - /** - * Sets the height of the header that is always aligned - * at the top. A height of <= 0.0 means that no header is - * used. - */ - 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; - - /** - * Sets the margin between the last items of the group n and - * the group header for the group n + 1. - */ - void setGroupHeaderMargin(qreal margin); - qreal groupHeaderMargin() 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; - - void setSizeHintResolver(const KItemListSizeHintResolver* sizeHintResolver); - const KItemListSizeHintResolver* sizeHintResolver() const; - - /** - * @return The first (at least partly) visible index. -1 is returned - * if the item count is 0. - */ - int firstVisibleIndex() const; - - /** - * @return The last (at least partly) visible index. -1 is returned - * if the item count is 0. - */ - int lastVisibleIndex() 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; - - /** - * @return Rectangle of the group header for the item with the - * index \a index. Note that the layouter does not check - * whether the item really has a header: Usually only - * the first item of a group gets a header (see - * isFirstGroupItem()). - */ - QRectF groupHeaderRect(int index) const; - - /** - * @return Column of the item with the index \a index. - * -1 is returned if an invalid index is given. - */ - int itemColumn(int index) const; - - /** - * @return Row of the item with the index \a index. - * -1 is returned if an invalid index is given. - */ - int itemRow(int index) 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 - * is the first item within a group. - */ - bool isFirstGroupItem(int itemIndex) const; - - /** - * Marks the layouter as dirty. This means as soon as a property of - * the layouter gets read, an expensive relayout will be done. - */ - void markAsDirty(); - -#ifndef QT_NO_DEBUG - /** - * @return True if the layouter has been marked as dirty and hence has - * not called yet doLayout(). Is enabled only in the debugging - * mode, as it is not useful to check the dirty state otherwise. - */ - bool isDirty(); -#endif - -private: - void doLayout(); - void updateVisibleIndexes(); - 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; - - Qt::Orientation m_scrollOrientation; - QSizeF m_size; - - QSizeF m_itemSize; - QSizeF m_itemMargin; - qreal m_headerHeight; - const KItemModelBase* m_model; - const KItemListSizeHintResolver* m_sizeHintResolver; - - qreal m_scrollOffset; - qreal m_maximumScrollOffset; - - qreal m_itemOffset; - qreal m_maximumItemOffset; - - int m_firstVisibleIndex; - int m_lastVisibleIndex; - - qreal m_columnWidth; - qreal m_xPosInc; - int m_columnCount; - - // Stores all item indexes that are the first item of a group. - // Assures fast access for KItemListViewLayouter::isFirstGroupItem(). - QSet<int> m_groupItemIndexes; - qreal m_groupHeaderHeight; - qreal m_groupHeaderMargin; - - struct ItemInfo { - QRectF rect; - int column; - int row; - }; - QList<ItemInfo> m_itemInfos; - - friend class KItemListControllerTest; -}; - -#endif - - |
