]> cloud.milkyroute.net Git - dolphin.git/blob - src/kitemviews/private/kitemlistsizehintresolver.h
Add Filelight menu to Tools menu
[dolphin.git] / src / kitemviews / private / kitemlistsizehintresolver.h
1 /*
2 * SPDX-FileCopyrightText: 2011 Peter Penz <peter.penz19@gmail.com>
3 *
4 * SPDX-License-Identifier: GPL-2.0-or-later
5 */
6
7 #ifndef KITEMLISTSIZEHINTRESOLVER_H
8 #define KITEMLISTSIZEHINTRESOLVER_H
9
10 #include "dolphin_export.h"
11 #include "kitemviews/kitemmodelbase.h"
12
13 #include <QSizeF>
14 #include <QVector>
15
16 class KItemListView;
17
18 /**
19 * @brief Calculates and caches the sizehints of items in KItemListView.
20 */
21 class DOLPHIN_EXPORT KItemListSizeHintResolver
22 {
23 public:
24 explicit KItemListSizeHintResolver(const KItemListView *itemListView);
25 virtual ~KItemListSizeHintResolver();
26 QSizeF minSizeHint();
27 QSizeF sizeHint(int index);
28 bool isElided(int index);
29
30 void itemsInserted(const KItemRangeList &itemRanges);
31 void itemsRemoved(const KItemRangeList &itemRanges);
32 void itemsMoved(const KItemRange &range, const QList<int> &movedToIndexes);
33 void itemsChanged(int index, int count, const QSet<QByteArray> &roles);
34
35 void clearCache();
36 void updateCache();
37
38 private:
39 const KItemListView *m_itemListView;
40 mutable QVector<std::pair<qreal /* height */, bool /* isElided */>> m_logicalHeightHintCache;
41 mutable qreal m_logicalWidthHint;
42 mutable qreal m_minHeightHint;
43 bool m_needsResolving;
44 };
45
46 #endif