1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
|
// Copyright (C) 2017 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
#ifndef QQUICKTUMBLER_P_P_H
#define QQUICKTUMBLER_P_P_H
//
// W A R N I N G
// -------------
//
// This file is not part of the Qt API. It exists purely as an
// implementation detail. This header file may change from version to
// version without notice, or even be removed.
//
// We mean it.
//
#include <QtQuickTemplates2/private/qquickcontrol_p_p.h>
#include <QtQuickTemplates2/private/qquicktumbler_p.h>
#include <QtCore/qpointer.h>
QT_BEGIN_NAMESPACE
class Q_QUICKTEMPLATES2_EXPORT QQuickTumblerPrivate : public QQuickControlPrivate
{
Q_DECLARE_PUBLIC(QQuickTumbler)
public:
enum ContentItemType {
NoContentItem,
UnsupportedContentItemType,
PathViewContentItem,
ListViewContentItem
};
QQuickItem *determineViewType(QQuickItem *contentItem);
void resetViewData();
QList<QQuickItem *> viewContentItemChildItems() const;
static QQuickTumblerPrivate *get(QQuickTumbler *tumbler);
QPalette defaultPalette() const override;
QVariant model;
QQmlComponent *delegate = nullptr;
int visibleItemCount = 5;
bool wrap = true;
bool explicitWrap = false;
bool modelBeingSet = false;
bool currentIndexSetDuringModelChange = false;
QQuickItem *view = nullptr;
QQuickItem *viewContentItem = nullptr;
ContentItemType viewContentItemType = UnsupportedContentItemType;
union {
qreal viewOffset; // PathView
qreal viewContentY; // ListView
};
int currentIndex = -1;
int pendingCurrentIndex = -1;
bool ignoreCurrentIndexChanges = false;
int count = 0;
bool ignoreSignals = false;
void _q_updateItemHeights();
void _q_updateItemWidths();
void _q_onViewCurrentIndexChanged();
void _q_onViewCountChanged();
void _q_onViewOffsetChanged();
void _q_onViewContentYChanged();
void calculateDisplacements();
void disconnectFromView();
void setupViewData(QQuickItem *newControlContentItem);
void warnAboutIncorrectContentItem();
void syncCurrentIndex();
void setPendingCurrentIndex(int index);
enum PropertyChangeReason {
UserChange,
InternalChange
};
static QString propertyChangeReasonToString(PropertyChangeReason changeReason);
void setCurrentIndex(int newCurrentIndex, PropertyChangeReason changeReason = InternalChange);
void setCount(int newCount);
void setWrapBasedOnCount();
void setWrap(bool shouldWrap, bool isExplicit);
void beginSetModel();
void endSetModel();
void itemChildAdded(QQuickItem *, QQuickItem *) override;
void itemChildRemoved(QQuickItem *, QQuickItem *) override;
void itemGeometryChanged(QQuickItem *, QQuickGeometryChange , const QRectF &) override;
};
class QQuickTumblerAttachedPrivate : public QObjectPrivate
{
Q_DECLARE_PUBLIC(QQuickTumblerAttached)
public:
static QQuickTumblerAttachedPrivate *get(QQuickTumblerAttached *attached)
{
return attached->d_func();
}
void init(QQuickItem *delegateItem);
void calculateDisplacement();
void emitIfDisplacementChanged(qreal oldDisplacement, qreal newDisplacement);
// The Tumbler that contains the delegate. Required to calculated the displacement.
QPointer<QQuickTumbler> tumbler;
// The index of the delegate. Used to calculate the displacement.
int index = -1;
// The displacement for our delegate.
qreal displacement = 0;
};
QT_END_NAMESPACE
#endif // QQUICKTUMBLER_P_P_H
|