6#include <QtGui/qcolor.h>
7#include <QtQuick/qquickpainteditem.h>
9namespace qml_material {
11class QQuickMaterialTextContainer :
public QQuickPaintedItem
14 Q_PROPERTY(
bool filled READ isFilled WRITE setFilled FINAL)
15 Q_PROPERTY(
bool controlHasActiveFocus READ controlHasActiveFocus
16 WRITE setControlHasActiveFocus NOTIFY controlHasActiveFocusChanged FINAL)
17 Q_PROPERTY(QColor fillColor READ fillColor WRITE setFillColor FINAL)
18 Q_PROPERTY(QColor outlineColor READ outlineColor WRITE setOutlineColor FINAL)
19 Q_PROPERTY(QColor focusedOutlineColor READ focusedOutlineColor WRITE setFocusedOutlineColor FINAL)
20 Q_PROPERTY(qreal focusAnimationProgress READ focusAnimationProgress WRITE setFocusAnimationProgress FINAL)
21 Q_PROPERTY(qreal placeholderTextWidth READ placeholderTextWidth WRITE setPlaceholderTextWidth FINAL)
22 Q_PROPERTY(PlaceHolderHAlignment placeholderTextHAlign READ placeholderTextHAlign WRITE setPlaceholderTextHAlign FINAL)
23 Q_PROPERTY(
bool controlHasText READ controlHasText WRITE setControlHasText NOTIFY controlHasTextChanged FINAL)
24 Q_PROPERTY(
bool placeholderHasText READ placeholderHasText WRITE setPlaceholderHasText NOTIFY placeholderHasTextChanged FINAL)
25 Q_PROPERTY(
int horizontalPadding READ horizontalPadding WRITE setHorizontalPadding NOTIFY horizontalPaddingChanged FINAL)
26 QML_NAMED_ELEMENT(MaterialTextContainer)
27 QML_ADDED_IN_VERSION(6, 5)
30 explicit QQuickMaterialTextContainer(QQuickItem *parent =
nullptr);
32 enum PlaceHolderHAlignment {
33 AlignLeft = Qt::AlignLeft,
34 AlignRight = Qt::AlignRight,
35 AlignHCenter = Qt::AlignHCenter,
36 AlignJustify = Qt::AlignJustify
38 Q_ENUM(PlaceHolderHAlignment)
40 bool isFilled()
const;
41 void setFilled(
bool filled);
43 QColor fillColor()
const;
44 void setFillColor(
const QColor &fillColor);
46 QColor outlineColor()
const;
47 void setOutlineColor(
const QColor &outlineColor);
49 QColor focusedOutlineColor()
const;
50 void setFocusedOutlineColor(
const QColor &focusedOutlineColor);
52 qreal focusAnimationProgress()
const;
53 void setFocusAnimationProgress(qreal progress);
55 qreal placeholderTextWidth()
const;
56 void setPlaceholderTextWidth(qreal placeholderTextWidth);
58 bool controlHasActiveFocus()
const;
59 void setControlHasActiveFocus(
bool controlHasActiveFocus);
61 bool controlHasText()
const;
62 void setControlHasText(
bool controlHasText);
64 bool placeholderHasText()
const;
65 void setPlaceholderHasText(
bool placeholderHasText);
67 int horizontalPadding()
const;
68 void setHorizontalPadding(
int horizontalPadding);
70 void paint(QPainter *painter)
override;
72 PlaceHolderHAlignment placeholderTextHAlign()
const;
73 void setPlaceholderTextHAlign(PlaceHolderHAlignment placeHolderTextHAlign);
76 void animateChanged();
77 void controlHasActiveFocusChanged();
78 void controlHasTextChanged();
79 void placeholderHasTextChanged();
80 void horizontalPaddingChanged();
83 bool shouldAnimateOutline()
const;
85 QQuickItem *textControl()
const;
86 void controlGotActiveFocus();
87 void controlLostActiveFocus();
88 void startFocusAnimation();
90 void maybeSetFocusAnimationProgress();
92 void componentComplete()
override;
95 QColor m_outlineColor;
96 QColor m_focusedOutlineColor;
97 qreal m_focusAnimationProgress = 0;
98 qreal m_placeholderTextWidth = 0;
99 bool m_filled =
false;
100 bool m_controlHasActiveFocus =
false;
101 bool m_controlHasText =
false;
102 bool m_placeholderHasText =
false;
103 int m_horizontalPadding = 0;
104 PlaceHolderHAlignment m_placeholderTextHAlign;