1 /****************************************************************************
3 ** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
4 ** All rights reserved.
5 ** Contact: Nokia Corporation (qt-info@nokia.com)
7 ** This file is part of the QtDeclarative module of the Qt Toolkit.
9 ** $QT_BEGIN_LICENSE:LGPL$
10 ** GNU Lesser General Public License Usage
11 ** This file may be used under the terms of the GNU Lesser General Public
12 ** License version 2.1 as published by the Free Software Foundation and
13 ** appearing in the file LICENSE.LGPL included in the packaging of this
14 ** file. Please review the following information to ensure the GNU Lesser
15 ** General Public License version 2.1 requirements will be met:
16 ** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
18 ** In addition, as a special exception, Nokia gives you certain additional
19 ** rights. These rights are described in the Nokia Qt LGPL Exception
20 ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
22 ** GNU General Public License Usage
23 ** Alternatively, this file may be used under the terms of the GNU General
24 ** Public License version 3.0 as published by the Free Software Foundation
25 ** and appearing in the file LICENSE.GPL included in the packaging of this
26 ** file. Please review the following information to ensure the GNU General
27 ** Public License version 3.0 requirements will be met:
28 ** http://www.gnu.org/copyleft/gpl.html.
31 ** Alternatively, this file may be used in accordance with the terms and
32 ** conditions contained in a signed written agreement between you and Nokia.
40 ****************************************************************************/
42 #ifndef QDECLARATIVEITEM_H
43 #define QDECLARATIVEITEM_H
45 #include <QtDeclarative/qdeclarative.h>
46 #include <QtDeclarative/qdeclarativecomponent.h>
48 #include <QtCore/QObject>
49 #include <QtCore/QList>
50 #include <QtGui/qfont.h>
51 #include <QtWidgets/qgraphicsitem.h>
52 #include <QtWidgets/qgraphicstransform.h>
53 #include <QtWidgets/qaction.h>
59 QT_MODULE(Declarative)
61 class QDeclarative1State;
62 class QDeclarative1AnchorLine;
63 class QDeclarative1Transition;
64 class QDeclarative1KeyEvent;
65 class QDeclarative1Anchors;
66 class QDeclarativeItemPrivate;
67 class QDeclarativeV8Function;
68 class Q_DECLARATIVE_EXPORT QDeclarativeItem : public QGraphicsObject, public QDeclarativeParserStatus
71 Q_INTERFACES(QDeclarativeParserStatus)
73 Q_PROPERTY(QDeclarativeItem * parent READ parentItem WRITE setParentItem NOTIFY parentChanged DESIGNABLE false FINAL)
74 Q_PRIVATE_PROPERTY(QDeclarativeItem::d_func(), QDeclarativeListProperty<QObject> data READ data DESIGNABLE false)
75 Q_PRIVATE_PROPERTY(QDeclarativeItem::d_func(), QDeclarativeListProperty<QObject> resources READ resources DESIGNABLE false)
76 Q_PRIVATE_PROPERTY(QDeclarativeItem::d_func(), QDeclarativeListProperty<QDeclarative1State> states READ states DESIGNABLE false)
77 Q_PRIVATE_PROPERTY(QDeclarativeItem::d_func(), QDeclarativeListProperty<QDeclarative1Transition> transitions READ transitions DESIGNABLE false)
78 Q_PRIVATE_PROPERTY(QDeclarativeItem::d_func(), QString state READ state WRITE setState NOTIFY stateChanged)
79 Q_PROPERTY(QRectF childrenRect READ childrenRect NOTIFY childrenRectChanged DESIGNABLE false FINAL)
80 Q_PRIVATE_PROPERTY(QDeclarativeItem::d_func(), QDeclarative1Anchors * anchors READ anchors DESIGNABLE false CONSTANT FINAL)
81 Q_PRIVATE_PROPERTY(QDeclarativeItem::d_func(), QDeclarative1AnchorLine left READ left CONSTANT FINAL)
82 Q_PRIVATE_PROPERTY(QDeclarativeItem::d_func(), QDeclarative1AnchorLine right READ right CONSTANT FINAL)
83 Q_PRIVATE_PROPERTY(QDeclarativeItem::d_func(), QDeclarative1AnchorLine horizontalCenter READ horizontalCenter CONSTANT FINAL)
84 Q_PRIVATE_PROPERTY(QDeclarativeItem::d_func(), QDeclarative1AnchorLine top READ top CONSTANT FINAL)
85 Q_PRIVATE_PROPERTY(QDeclarativeItem::d_func(), QDeclarative1AnchorLine bottom READ bottom CONSTANT FINAL)
86 Q_PRIVATE_PROPERTY(QDeclarativeItem::d_func(), QDeclarative1AnchorLine verticalCenter READ verticalCenter CONSTANT FINAL)
87 Q_PRIVATE_PROPERTY(QDeclarativeItem::d_func(), QDeclarative1AnchorLine baseline READ baseline CONSTANT FINAL)
88 Q_PROPERTY(qreal baselineOffset READ baselineOffset WRITE setBaselineOffset NOTIFY baselineOffsetChanged)
89 Q_PROPERTY(bool clip READ clip WRITE setClip NOTIFY clipChanged) // ### move to QGI/QGO, NOTIFY
90 Q_PROPERTY(bool focus READ hasFocus WRITE setFocus NOTIFY focusChanged FINAL)
91 Q_PROPERTY(bool activeFocus READ hasActiveFocus NOTIFY activeFocusChanged)
92 Q_PROPERTY(QDeclarativeListProperty<QGraphicsTransform> transform READ transform DESIGNABLE false FINAL)
93 Q_PROPERTY(TransformOrigin transformOrigin READ transformOrigin WRITE setTransformOrigin NOTIFY transformOriginChanged)
94 Q_PROPERTY(QPointF transformOriginPoint READ transformOriginPoint) // transformOriginPoint is read-only for Item
95 Q_PROPERTY(bool smooth READ smooth WRITE setSmooth NOTIFY smoothChanged)
96 Q_PROPERTY(qreal implicitWidth READ implicitWidth WRITE setImplicitWidth NOTIFY implicitWidthChanged REVISION 1)
97 Q_PROPERTY(qreal implicitHeight READ implicitHeight WRITE setImplicitHeight NOTIFY implicitHeightChanged REVISION 1)
99 Q_ENUMS(TransformOrigin)
100 Q_CLASSINFO("DefaultProperty", "data")
103 enum TransformOrigin {
104 TopLeft, Top, TopRight,
106 BottomLeft, Bottom, BottomRight
109 QDeclarativeItem(QDeclarativeItem *parent = 0);
110 virtual ~QDeclarativeItem();
112 QDeclarativeItem *parentItem() const;
113 void setParentItem(QDeclarativeItem *parent);
115 QRectF childrenRect();
120 qreal baselineOffset() const;
121 void setBaselineOffset(qreal);
123 QDeclarativeListProperty<QGraphicsTransform> transform();
126 void setWidth(qreal);
128 qreal implicitWidth() const;
130 qreal height() const;
131 void setHeight(qreal);
133 qreal implicitHeight() const;
135 void setSize(const QSizeF &size);
137 TransformOrigin transformOrigin() const;
138 void setTransformOrigin(TransformOrigin);
141 void setSmooth(bool);
143 QRectF boundingRect() const;
144 virtual void paint(QPainter *, const QStyleOptionGraphicsItem *, QWidget *);
146 bool hasActiveFocus() const;
147 bool hasFocus() const;
150 bool keepMouseGrab() const;
151 void setKeepMouseGrab(bool);
153 Q_INVOKABLE void mapFromItem(QDeclarativeV8Function*) const;
154 Q_INVOKABLE void mapToItem(QDeclarativeV8Function*) const;
155 Q_INVOKABLE void forceActiveFocus();
156 Q_INVOKABLE QDeclarativeItem *childAt(qreal x, qreal y) const;
159 void childrenRectChanged(const QRectF &);
160 void baselineOffsetChanged(qreal);
161 void stateChanged(const QString &);
162 void focusChanged(bool);
163 void activeFocusChanged(bool);
164 void parentChanged(QDeclarativeItem *);
165 void transformOriginChanged(TransformOrigin);
166 void smoothChanged(bool);
167 void clipChanged(bool);
168 Q_REVISION(1) void implicitWidthChanged();
169 Q_REVISION(1) void implicitHeightChanged();
172 bool isComponentComplete() const;
173 virtual bool sceneEvent(QEvent *);
174 virtual bool event(QEvent *);
175 virtual QVariant itemChange(GraphicsItemChange, const QVariant &);
177 void setImplicitWidth(qreal);
178 bool widthValid() const; // ### better name?
179 void setImplicitHeight(qreal);
180 bool heightValid() const; // ### better name?
182 virtual void classBegin();
183 virtual void componentComplete();
184 virtual void keyPressEvent(QKeyEvent *event);
185 virtual void keyReleaseEvent(QKeyEvent *event);
186 virtual void inputMethodEvent(QInputMethodEvent *);
187 virtual QVariant inputMethodQuery(Qt::InputMethodQuery query) const;
188 void keyPressPreHandler(QKeyEvent *);
189 void keyReleasePreHandler(QKeyEvent *);
190 void inputMethodPreHandler(QInputMethodEvent *);
192 virtual void geometryChanged(const QRectF &newGeometry,
193 const QRectF &oldGeometry);
196 QDeclarativeItem(QDeclarativeItemPrivate &dd, QDeclarativeItem *parent = 0);
199 Q_DISABLE_COPY(QDeclarativeItem)
200 Q_DECLARE_PRIVATE_D(QGraphicsItem::d_ptr.data(), QDeclarativeItem)
204 T qobject_cast(QGraphicsObject *o)
207 return qobject_cast<T>(obj);
212 T qobject_cast(QGraphicsItem *item)
215 QObject *o = item->toGraphicsObject();
216 return qobject_cast<T>(o);
219 #ifndef QT_NO_DEBUG_STREAM
220 QDebug Q_DECLARATIVE_EXPORT operator<<(QDebug debug, QDeclarativeItem *item);
225 QML_DECLARE_TYPE(QDeclarativeItem)
226 QML_DECLARE_TYPE(QGraphicsObject)
227 QML_DECLARE_TYPE(QGraphicsTransform)
228 QML_DECLARE_TYPE(QGraphicsScale)
229 QML_DECLARE_TYPE(QGraphicsRotation)
230 QML_DECLARE_TYPE(QGraphicsWidget)
231 QML_DECLARE_TYPE(QAction)
235 #endif // QDECLARATIVEITEM_H