5#include <QtCore/QObject>
6#include <QtQml/QQmlEngine>
8#include <QtQuickControls2/QQuickAttachedPropertyPropagator>
10#include "qml_material/token/color.hpp"
11#include "qml_material/util/page_context.hpp"
13#define ATTACH_PROPERTY(_type_, _name_) \
15 Q_PROPERTY(_type_ _name_ READ _name_ WRITE set_##_name_ RESET reset_##_name_ NOTIFY \
16 _name_##Changed FINAL) \
18 _type_ _name_() const; \
19 void set_##_name_(_type_); \
20 void reset_##_name_(); \
21 AttachProp<_type_>& get_##_name_(); \
22 Q_SIGNAL void _name_##Changed(); \
25 AttachProp<_type_> m_##_name_ { &Self::_name_##Changed };
30class ThemeSize :
public QObject {
34 ThemeSize(QObject* parent =
nullptr);
37 qint32 windowClass READ windowClass WRITE setWindowClass NOTIFY windowClassChanged FINAL)
38 Q_PROPERTY(
bool isCompact READ isCompact NOTIFY windowClassChanged FINAL)
40 auto isCompact() const ->
bool;
41 auto windowClass() const -> qint32;
42 void setWindowClass(qint32);
43 Q_SIGNAL
void windowClassChanged();
45 Q_PROPERTY(qint32 verticalPadding READ verticalPadding NOTIFY verticalPaddingChanged FINAL)
46 auto verticalPadding() const -> qint32;
47 Q_SIGNAL
void verticalPaddingChanged();
50 qint32 m_window_class;
53class Theme : public QQuickAttachedPropertyPropagator {
56 QML_NAMED_ELEMENT(MProp)
65 using SigFunc = void (Theme::*)();
66 using ReadFunc = V (Theme::*
const)();
67 using WriteFunc = void (Theme::*)(V);
68 using GetFunc = AttachProp<V>& (Theme::*
const)();
70 std::optional<V> value;
74 AttachProp(SigFunc s): value(), explicited(false), sig_func(s) {}
77 ATTACH_PROPERTY(QColor, textColor)
78 ATTACH_PROPERTY(QColor, backgroundColor)
79 ATTACH_PROPERTY(
int, elevation)
81 ATTACH_PROPERTY(qml_material::ThemeSize*, size)
82 ATTACH_PROPERTY(qml_material::PageContext*, page)
85 Theme(QObject* parent);
88 static Theme* qmlAttachedProperties(QObject*
object);
91 void attachedParentChange(QQuickAttachedPropertyPropagator* newParent,
92 QQuickAttachedPropertyPropagator* oldParent)
override;
Material Design Color Manager class.
Definition color.hpp:26