QmlMaterial 0.1.0
Loading...
Searching...
No Matches
item_delegate.hpp
1#pragma once
2#include "qml_material/control/abstract_button.hpp"
3
4namespace qml_material
5{
6class QML_MATERIAL_API ItemDelegate : public AbstractButton {
7 Q_OBJECT
8 QML_ELEMENT
9 Q_PROPERTY(bool highlighted READ isHighlighted WRITE setHighlighted NOTIFY highlightedChanged
10 BINDABLE bindableHighlighted FINAL)
11 Q_PROPERTY(qreal implicitDelegateHeight READ implicitDelegateHeight NOTIFY
12 implicitDelegateHeightChanged FINAL)
13 Q_PROPERTY(QColor defaultIconColor READ defaultIconColor NOTIFY defaultIconColorChanged BINDABLE
14 bindableDefaultIconColor FINAL)
15public:
16 explicit ItemDelegate(QQuickItem* parent = nullptr);
17 bool isHighlighted() const { return m_highlighted; }
18 void setHighlighted(bool value) { m_highlighted = value; }
19 QBindable<bool> bindableHighlighted() { return QBindable<bool>(&m_highlighted); }
20 Q_SIGNAL void highlightedChanged();
21
22 qreal implicitDelegateHeight() const;
23 QColor defaultIconColor() const { return m_defaultIconColor.value(); }
24 QBindable<QColor> bindableDefaultIconColor() const {
25 return QBindable<QColor>(&m_defaultIconColor);
26 }
27 Q_SIGNAL void implicitDelegateHeightChanged();
28 Q_SIGNAL void defaultIconColorChanged();
29
30protected:
31 void classBegin() override;
32
33private:
34 Q_OBJECT_BINDABLE_PROPERTY_WITH_ARGS(ItemDelegate, bool, m_highlighted, false,
35 &ItemDelegate::highlightedChanged)
36 Q_OBJECT_BINDABLE_PROPERTY(ItemDelegate, QColor, m_defaultIconColor,
37 &ItemDelegate::defaultIconColorChanged)
38};
39} // namespace qml_material