QmlMaterial 0.1.0
Loading...
Searching...
No Matches
floating_toolbar_scroll.hpp
1#pragma once
2
3#include <QObject>
4#include <QPointF>
5#include <qqmlregistration.h>
6#include "qml_material/export.hpp"
7
8namespace qml_material
9{
10// Observes consumed content displacement; requests never overwrite the caller's expanded binding.
11class QML_MATERIAL_API FloatingToolbarScroll : public QObject {
12 Q_OBJECT
13 QML_ELEMENT
14 Q_PROPERTY(bool expanded READ expanded WRITE setExpanded NOTIFY expandedChanged FINAL)
15 Q_PROPERTY(bool enabled READ enabled WRITE setEnabled NOTIFY enabledChanged FINAL)
16 Q_PROPERTY(bool reverseLayout READ reverseLayout WRITE setReverseLayout NOTIFY
17 reverseLayoutChanged FINAL)
18 Q_PROPERTY(qreal expandScrollThreshold READ expandScrollThreshold WRITE setExpandScrollThreshold
19 NOTIFY expandScrollThresholdChanged FINAL)
20 Q_PROPERTY(qreal collapseScrollThreshold READ collapseScrollThreshold WRITE
21 setCollapseScrollThreshold NOTIFY collapseScrollThresholdChanged FINAL)
22public:
23 explicit FloatingToolbarScroll(QObject* parent = nullptr);
24 bool expanded() const { return m_expanded; }
25 bool enabled() const { return m_enabled; }
26 bool reverseLayout() const { return m_reverseLayout; }
27 qreal expandScrollThreshold() const { return m_expandThreshold; }
28 qreal collapseScrollThreshold() const { return m_collapseThreshold; }
29 void setExpanded(bool);
30 void setEnabled(bool);
31 void setReverseLayout(bool);
32 void setExpandScrollThreshold(qreal);
33 void setCollapseScrollThreshold(qreal);
34 Q_INVOKABLE void scrollBy(QPointF consumed);
35 Q_INVOKABLE void reset();
36 Q_SIGNAL void expandedChanged();
37 Q_SIGNAL void enabledChanged();
38 Q_SIGNAL void reverseLayoutChanged();
39 Q_SIGNAL void expandScrollThresholdChanged();
40 Q_SIGNAL void collapseScrollThresholdChanged();
41 Q_SIGNAL void expandRequested();
42 Q_SIGNAL void collapseRequested();
43
44private:
45 bool m_expanded = true;
46 bool m_enabled = true;
47 bool m_reverseLayout = false;
48 qreal m_expandThreshold = 40;
49 qreal m_collapseThreshold = 40;
50 qreal m_remaining = 40;
51};
52} // namespace qml_material