1 /**************************************************************************** 2 ** 3 ** Copyright (C) 2017 The Qt Company Ltd. 4 ** Contact: http://www.qt.io/licensing/ 5 ** 6 ** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. 7 ** 8 ** $QT_BEGIN_LICENSE:LGPL3$ 9 ** Commercial License Usage 10 ** Licensees holding valid commercial Qt licenses may use this file in 11 ** accordance with the commercial license agreement provided with the 12 ** Software or, alternatively, in accordance with the terms contained in 13 ** a written agreement between you and The Qt Company. For licensing terms 14 ** and conditions see http://www.qt.io/terms-conditions. For further 15 ** information use the contact form at http://www.qt.io/contact-us. 16 ** 17 ** GNU Lesser General Public License Usage 18 ** Alternatively, this file may be used under the terms of the GNU Lesser 19 ** General Public License version 3 as published by the Free Software 20 ** Foundation and appearing in the file LICENSE.LGPLv3 included in the 21 ** packaging of this file. Please review the following information to 22 ** ensure the GNU Lesser General Public License version 3 requirements 23 ** will be met: https://www.gnu.org/licenses/lgpl.html. 24 ** 25 ** GNU General Public License Usage 26 ** Alternatively, this file may be used under the terms of the GNU 27 ** General Public License version 2.0 or later as published by the Free 28 ** Software Foundation and appearing in the file LICENSE.GPL included in 29 ** the packaging of this file. Please review the following information to 30 ** ensure the GNU General Public License version 2.0 requirements will be 31 ** met: http://www.gnu.org/licenses/gpl-2.0.html. 32 ** 33 ** $QT_END_LICENSE$ 34 ** 35 ****************************************************************************/ 36 37 #ifndef QQUICKCONTROL_P_H 38 #define QQUICKCONTROL_P_H 39 40 // 41 // W A R N I N G 42 // ------------- 43 // 44 // This file is not part of the Qt API. It exists purely as an 45 // implementation detail. This header file may change from version to 46 // version without notice, or even be removed. 47 // 48 // We mean it. 49 // 50 51 #include <QtCore/qlocale.h> 52 #include <QtGui/qpalette.h> 53 #include <QtQuick/qquickitem.h> 54 #include <QtQuickTemplates2/private/qtquicktemplates2global_p.h> 55 56 QT_BEGIN_NAMESPACE 57 58 class QQuickControlPrivate; 59 60 class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickControl : public QQuickItem 61 { 62 Q_OBJECT 63 Q_PROPERTY(QFont font READ font WRITE setFont RESET resetFont NOTIFY fontChanged FINAL) 64 Q_PROPERTY(qreal availableWidth READ availableWidth NOTIFY availableWidthChanged FINAL) 65 Q_PROPERTY(qreal availableHeight READ availableHeight NOTIFY availableHeightChanged FINAL) 66 Q_PROPERTY(qreal padding READ padding WRITE setPadding RESET resetPadding NOTIFY paddingChanged FINAL) 67 Q_PROPERTY(qreal topPadding READ topPadding WRITE setTopPadding RESET resetTopPadding NOTIFY topPaddingChanged FINAL) 68 Q_PROPERTY(qreal leftPadding READ leftPadding WRITE setLeftPadding RESET resetLeftPadding NOTIFY leftPaddingChanged FINAL) 69 Q_PROPERTY(qreal rightPadding READ rightPadding WRITE setRightPadding RESET resetRightPadding NOTIFY rightPaddingChanged FINAL) 70 Q_PROPERTY(qreal bottomPadding READ bottomPadding WRITE setBottomPadding RESET resetBottomPadding NOTIFY bottomPaddingChanged FINAL) 71 Q_PROPERTY(qreal spacing READ spacing WRITE setSpacing RESET resetSpacing NOTIFY spacingChanged FINAL) 72 Q_PROPERTY(QLocale locale READ locale WRITE setLocale RESET resetLocale NOTIFY localeChanged FINAL) 73 Q_PROPERTY(bool mirrored READ isMirrored NOTIFY mirroredChanged FINAL) 74 Q_PROPERTY(Qt::FocusPolicy focusPolicy READ focusPolicy WRITE setFocusPolicy NOTIFY focusPolicyChanged FINAL) 75 Q_PROPERTY(Qt::FocusReason focusReason READ focusReason WRITE setFocusReason NOTIFY focusReasonChanged FINAL) 76 Q_PROPERTY(bool visualFocus READ hasVisualFocus NOTIFY visualFocusChanged FINAL) 77 Q_PROPERTY(bool hovered READ isHovered NOTIFY hoveredChanged FINAL) 78 Q_PROPERTY(bool hoverEnabled READ isHoverEnabled WRITE setHoverEnabled RESET resetHoverEnabled NOTIFY hoverEnabledChanged FINAL) 79 Q_PROPERTY(bool wheelEnabled READ isWheelEnabled WRITE setWheelEnabled NOTIFY wheelEnabledChanged FINAL) 80 Q_PROPERTY(QQuickItem *background READ background WRITE setBackground NOTIFY backgroundChanged FINAL) 81 Q_PROPERTY(QQuickItem *contentItem READ contentItem WRITE setContentItem NOTIFY contentItemChanged FINAL) 82 Q_PROPERTY(qreal baselineOffset READ baselineOffset WRITE setBaselineOffset RESET resetBaselineOffset NOTIFY baselineOffsetChanged FINAL) 83 // 2.3 (Qt 5.10) 84 Q_PROPERTY(QPalette palette READ palette WRITE setPalette RESET resetPalette NOTIFY paletteChanged FINAL REVISION 3) 85 // 2.5 (Qt 5.12) 86 Q_PROPERTY(qreal horizontalPadding READ horizontalPadding WRITE setHorizontalPadding RESET resetHorizontalPadding NOTIFY horizontalPaddingChanged FINAL REVISION 5) 87 Q_PROPERTY(qreal verticalPadding READ verticalPadding WRITE setVerticalPadding RESET resetVerticalPadding NOTIFY verticalPaddingChanged FINAL REVISION 5) 88 Q_PROPERTY(qreal implicitContentWidth READ implicitContentWidth NOTIFY implicitContentWidthChanged FINAL REVISION 5) 89 Q_PROPERTY(qreal implicitContentHeight READ implicitContentHeight NOTIFY implicitContentHeightChanged FINAL REVISION 5) 90 Q_PROPERTY(qreal implicitBackgroundWidth READ implicitBackgroundWidth NOTIFY implicitBackgroundWidthChanged FINAL REVISION 5) 91 Q_PROPERTY(qreal implicitBackgroundHeight READ implicitBackgroundHeight NOTIFY implicitBackgroundHeightChanged FINAL REVISION 5) 92 Q_PROPERTY(qreal topInset READ topInset WRITE setTopInset RESET resetTopInset NOTIFY topInsetChanged FINAL REVISION 5) 93 Q_PROPERTY(qreal leftInset READ leftInset WRITE setLeftInset RESET resetLeftInset NOTIFY leftInsetChanged FINAL REVISION 5) 94 Q_PROPERTY(qreal rightInset READ rightInset WRITE setRightInset RESET resetRightInset NOTIFY rightInsetChanged FINAL REVISION 5) 95 Q_PROPERTY(qreal bottomInset READ bottomInset WRITE setBottomInset RESET resetBottomInset NOTIFY bottomInsetChanged FINAL REVISION 5) 96 Q_CLASSINFO("DeferredPropertyNames", "background,contentItem") 97 98 public: 99 explicit QQuickControl(QQuickItem *parent = nullptr); 100 ~QQuickControl(); 101 102 QFont font() const; 103 void setFont(const QFont &font); 104 void resetFont(); 105 106 qreal availableWidth() const; 107 qreal availableHeight() const; 108 109 qreal padding() const; 110 void setPadding(qreal padding); 111 void resetPadding(); 112 113 qreal topPadding() const; 114 void setTopPadding(qreal padding); 115 void resetTopPadding(); 116 117 qreal leftPadding() const; 118 void setLeftPadding(qreal padding); 119 void resetLeftPadding(); 120 121 qreal rightPadding() const; 122 void setRightPadding(qreal padding); 123 void resetRightPadding(); 124 125 qreal bottomPadding() const; 126 void setBottomPadding(qreal padding); 127 void resetBottomPadding(); 128 129 qreal spacing() const; 130 void setSpacing(qreal spacing); 131 void resetSpacing(); 132 133 QLocale locale() const; 134 void setLocale(const QLocale &locale); 135 void resetLocale(); 136 137 bool isMirrored() const; 138 139 Qt::FocusPolicy focusPolicy() const; 140 void setFocusPolicy(Qt::FocusPolicy policy); 141 142 Qt::FocusReason focusReason() const; 143 void setFocusReason(Qt::FocusReason reason); 144 145 bool hasVisualFocus() const; 146 147 bool isHovered() const; 148 void setHovered(bool hovered); 149 150 bool isHoverEnabled() const; 151 void setHoverEnabled(bool enabled); 152 void resetHoverEnabled(); 153 154 bool isWheelEnabled() const; 155 void setWheelEnabled(bool enabled); 156 157 QQuickItem *background() const; 158 void setBackground(QQuickItem *background); 159 160 QQuickItem *contentItem() const; 161 void setContentItem(QQuickItem *item); 162 163 qreal baselineOffset() const; 164 void setBaselineOffset(qreal offset); 165 void resetBaselineOffset(); 166 167 // 2.3 (Qt 5.10) 168 QPalette palette() const; 169 void setPalette(const QPalette &palette); 170 void resetPalette(); 171 172 // 2.5 (Qt 5.12) 173 qreal horizontalPadding() const; 174 void setHorizontalPadding(qreal padding); 175 void resetHorizontalPadding(); 176 177 qreal verticalPadding() const; 178 void setVerticalPadding(qreal padding); 179 void resetVerticalPadding(); 180 181 qreal implicitContentWidth() const; 182 qreal implicitContentHeight() const; 183 184 qreal implicitBackgroundWidth() const; 185 qreal implicitBackgroundHeight() const; 186 187 qreal topInset() const; 188 void setTopInset(qreal inset); 189 void resetTopInset(); 190 191 qreal leftInset() const; 192 void setLeftInset(qreal inset); 193 void resetLeftInset(); 194 195 qreal rightInset() const; 196 void setRightInset(qreal inset); 197 void resetRightInset(); 198 199 qreal bottomInset() const; 200 void setBottomInset(qreal inset); 201 void resetBottomInset(); 202 203 Q_SIGNALS: 204 void fontChanged(); 205 void availableWidthChanged(); 206 void availableHeightChanged(); 207 void paddingChanged(); 208 void topPaddingChanged(); 209 void leftPaddingChanged(); 210 void rightPaddingChanged(); 211 void bottomPaddingChanged(); 212 void spacingChanged(); 213 void localeChanged(); 214 void mirroredChanged(); 215 void focusPolicyChanged(); 216 void focusReasonChanged(); 217 void visualFocusChanged(); 218 void hoveredChanged(); 219 void hoverEnabledChanged(); 220 void wheelEnabledChanged(); 221 void backgroundChanged(); 222 void contentItemChanged(); 223 void baselineOffsetChanged(); 224 // 2.3 (Qt 5.10) 225 Q_REVISION(3) void paletteChanged(); 226 // 2.5 (Qt 5.12) 227 Q_REVISION(5) void horizontalPaddingChanged(); 228 Q_REVISION(5) void verticalPaddingChanged(); 229 Q_REVISION(5) void implicitContentWidthChanged(); 230 Q_REVISION(5) void implicitContentHeightChanged(); 231 Q_REVISION(5) void implicitBackgroundWidthChanged(); 232 Q_REVISION(5) void implicitBackgroundHeightChanged(); 233 Q_REVISION(5) void topInsetChanged(); 234 Q_REVISION(5) void leftInsetChanged(); 235 Q_REVISION(5) void rightInsetChanged(); 236 Q_REVISION(5) void bottomInsetChanged(); 237 238 protected: 239 virtual QFont defaultFont() const; 240 virtual QPalette defaultPalette() const; 241 242 QQuickControl(QQuickControlPrivate &dd, QQuickItem *parent); 243 244 void classBegin() override; 245 void componentComplete() override; 246 247 void itemChange(ItemChange change, const ItemChangeData &value) override; 248 249 void focusInEvent(QFocusEvent *event) override; 250 void focusOutEvent(QFocusEvent *event) override; 251 #if QT_CONFIG(quicktemplates2_hover) 252 void hoverEnterEvent(QHoverEvent *event) override; 253 void hoverMoveEvent(QHoverEvent *event) override; 254 void hoverLeaveEvent(QHoverEvent *event) override; 255 #endif 256 void mousePressEvent(QMouseEvent *event) override; 257 void mouseMoveEvent(QMouseEvent *event) override; 258 void mouseReleaseEvent(QMouseEvent *event) override; 259 void mouseUngrabEvent() override; 260 #if QT_CONFIG(quicktemplates2_multitouch) 261 void touchEvent(QTouchEvent *event) override; 262 void touchUngrabEvent() override; 263 #endif 264 #if QT_CONFIG(wheelevent) 265 void wheelEvent(QWheelEvent *event) override; 266 #endif 267 268 void geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry) override; 269 270 virtual void fontChange(const QFont &newFont, const QFont &oldFont); 271 #if QT_CONFIG(quicktemplates2_hover) 272 virtual void hoverChange(); 273 #endif 274 virtual void mirrorChange(); 275 virtual void spacingChange(qreal newSpacing, qreal oldSpacing); 276 virtual void paddingChange(const QMarginsF &newPadding, const QMarginsF &oldPadding); 277 virtual void contentItemChange(QQuickItem *newItem, QQuickItem *oldItem); 278 virtual void localeChange(const QLocale &newLocale, const QLocale &oldLocale); 279 virtual void paletteChange(const QPalette &newPalette, const QPalette &oldPalette); 280 virtual void insetChange(const QMarginsF &newInset, const QMarginsF &oldInset); 281 virtual void enabledChange(); 282 283 #if QT_CONFIG(accessibility) 284 virtual QAccessible::Role accessibleRole() const; 285 virtual void accessibilityActiveChanged(bool active); 286 #endif 287 288 // helper functions which avoid to check QT_CONFIG(accessibility) 289 QString accessibleName() const; 290 void maybeSetAccessibleName(const QString &name); 291 292 QVariant accessibleProperty(const char *propertyName); 293 bool setAccessibleProperty(const char *propertyName, const QVariant &value); 294 295 private: 296 Q_DISABLE_COPY(QQuickControl) 297 Q_DECLARE_PRIVATE(QQuickControl) 298 }; 299 300 QT_END_NAMESPACE 301 302 QML_DECLARE_TYPE(QQuickControl) 303 304 #endif // QQUICKCONTROL_P_H 305