QmlMaterial 0.1.0
Loading...
Searching...
No Matches
scroll_participant_p.hpp
1#pragma once
2
3#include "qml_material/scrollable/flickable.hpp"
4#include <QtQuick/private/qquickflickable_p.h>
5#include <functional>
6
7namespace qml_material
8{
9// Keeps native motion state and virtual view extents behind a typed adapter.
10class ScrollParticipant {
11public:
12 enum class Activity
13 {
14 Scroll,
15 Drag,
16 Fling
17 };
18 explicit ScrollParticipant(QQuickItem* item);
19 QQuickItem* item() const;
20 bool available() const;
21 QPointF position() const;
22 QPointF bounded(QPointF) const;
23 Qt::Orientations axes() const;
24 bool accepts(QPointF scenePosition) const;
25 qreal deceleration() const;
26 qreal maximumVelocity() const;
27 void begin();
28 QPointF consume(QPointF delta, Activity activity, QPointF velocity,
29 const std::function<bool()>& current);
30 void end(std::optional<QPointF> releaseVelocity = std::nullopt);
31
32private:
33 QPointer<Flickable> m_owned;
34 QPointer<QQuickFlickable> m_qt;
35};
36} // namespace qml_material