3#include "qml_material/input/nested_scroll_connection.hpp"
7class QML_MATERIAL_API PullToRefreshState :
public NestedScrollConnection {
10 Q_PROPERTY(qreal threshold READ threshold WRITE setThreshold NOTIFY thresholdChanged FINAL)
11 Q_PROPERTY(
bool enabled READ enabled WRITE setEnabled NOTIFY enabledChanged FINAL)
12 Q_PROPERTY(
bool refreshing READ refreshing WRITE setRefreshing NOTIFY refreshingChanged FINAL)
13 Q_PROPERTY(
bool settling READ settling WRITE setSettling NOTIFY settlingChanged FINAL)
14 Q_PROPERTY(
bool dragging READ dragging NOTIFY draggingChanged FINAL)
15 Q_PROPERTY(
bool armed READ armed NOTIFY distanceChanged FINAL)
16 Q_PROPERTY(qreal offset READ offset NOTIFY distanceChanged FINAL)
17 Q_PROPERTY(qreal distanceFraction READ distanceFraction NOTIFY distanceChanged FINAL)
19 explicit PullToRefreshState(QObject* parent =
nullptr);
20 qreal threshold()
const {
return m_threshold; }
21 bool enabled()
const {
return m_enabled; }
22 bool refreshing()
const {
return m_refreshing; }
23 bool settling()
const {
return m_settling; }
24 bool dragging()
const {
return m_dragging; }
25 bool armed()
const {
return m_dragging && m_rawDistance * 0.5 > m_threshold; }
26 qreal offset()
const {
return m_offset; }
27 qreal distanceFraction()
const {
return m_offset / m_threshold; }
28 void setThreshold(qreal);
29 void setEnabled(
bool);
30 void setRefreshing(
bool);
31 void setSettling(
bool);
32 QPointF preScroll(QPointF, Source)
override;
33 QPointF postScroll(QPointF, QPointF, Source)
override;
34 bool canConsume(QPointF, Source)
const override;
35 void begin(Source)
override;
36 QPointF release(QPointF velocity)
override;
37 void end(
bool cancelled)
override;
38 Q_SIGNAL
void thresholdChanged();
39 Q_SIGNAL
void enabledChanged();
40 Q_SIGNAL
void refreshingChanged();
41 Q_SIGNAL
void settlingChanged();
42 Q_SIGNAL
void draggingChanged();
43 Q_SIGNAL
void distanceChanged();
44 Q_SIGNAL
void refreshRequested();
47 void update(qreal rawDistance,
bool dragging);
48 QPointF consume(QPointF available);
49 qreal m_threshold = 80;
50 qreal m_rawDistance = 0;
52 bool m_enabled =
true;
53 bool m_refreshing =
false;
54 bool m_settling =
false;
55 bool m_dragging =
false;
56 quint64 m_revision = 0;