QmlMaterial 0.1.0
Loading...
Searching...
No Matches
floating_toolbar_exit.hpp
1#pragma once
2
3#include <QObject>
4#include <QPointF>
5#include <QQmlParserStatus>
6#include <optional>
7#include <qqmlregistration.h>
8#include "qml_material/export.hpp"
9
10namespace qml_material
11{
12class QML_MATERIAL_API FloatingToolbarExit : public QObject, public QQmlParserStatus {
13 Q_OBJECT
14 QML_ELEMENT
15 Q_INTERFACES(QQmlParserStatus)
16 Q_PROPERTY(qreal distance READ distance WRITE setDistance NOTIFY distanceChanged FINAL)
17 Q_PROPERTY(qreal offset READ offset WRITE setOffset NOTIFY offsetChanged FINAL)
18 Q_PROPERTY(bool active READ active NOTIFY activeChanged FINAL)
19 Q_PROPERTY(bool enabled READ enabled WRITE setEnabled NOTIFY enabledChanged FINAL)
20 Q_PROPERTY(bool reverseLayout READ reverseLayout WRITE setReverseLayout NOTIFY
21 reverseLayoutChanged FINAL)
22public:
23 explicit FloatingToolbarExit(QObject* parent = nullptr);
24 void classBegin() override;
25 void componentComplete() override;
26 qreal distance() const { return m_distance; }
27 qreal offset() const { return m_offset; }
28 bool active() const { return m_active; }
29 bool enabled() const { return m_enabled; }
30 bool reverseLayout() const { return m_reverseLayout; }
31 void setDistance(qreal);
32 void setOffset(qreal);
33 void setEnabled(bool);
34 void setReverseLayout(bool);
35 Q_INVOKABLE void begin();
36 Q_INVOKABLE void scrollBy(QPointF consumed);
37 Q_INVOKABLE void settle();
38 Q_INVOKABLE void reset();
39 Q_SIGNAL void distanceChanged();
40 Q_SIGNAL void offsetChanged();
41 Q_SIGNAL void activeChanged();
42 Q_SIGNAL void inputStarted();
43 Q_SIGNAL void enabledChanged();
44 Q_SIGNAL void reverseLayoutChanged();
45
46private:
47 bool m_initializing = false;
48 std::optional<qreal> m_initialOffset;
49 void update(qreal offset, bool active);
50 qreal m_distance = 0;
51 qreal m_offset = 0;
52 bool m_active = false;
53 bool m_enabled = true;
54 bool m_reverseLayout = false;
55};
56} // namespace qml_material