1/****************************************************************************
2**
3** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
4** Contact: http://www.qt-project.org/
5**
6** This file is part of the QtDeclarative module of the Qt Toolkit.
7**
8** $QT_BEGIN_LICENSE:LGPL$
9** GNU Lesser General Public License Usage
10** This file may be used under the terms of the GNU Lesser General Public
11** License version 2.1 as published by the Free Software Foundation and
12** appearing in the file LICENSE.LGPL included in the packaging of this
13** file. Please review the following information to ensure the GNU Lesser
14** General Public License version 2.1 requirements will be met:
15** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
16**
17** In addition, as a special exception, Nokia gives you certain additional
18** rights. These rights are described in the Nokia Qt LGPL Exception
19** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
20**
21** GNU General Public License Usage
22** Alternatively, this file may be used under the terms of the GNU General
23** Public License version 3.0 as published by the Free Software Foundation
24** and appearing in the file LICENSE.GPL included in the packaging of this
25** file. Please review the following information to ensure the GNU General
26** Public License version 3.0 requirements will be met:
27** http://www.gnu.org/copyleft/gpl.html.
28**
29** Other Usage
30** Alternatively, this file may be used in accordance with the terms and
31** conditions contained in a signed written agreement between you and Nokia.
32**
33**
34**
35**
36**
37**
38** $QT_END_LICENSE$
39**
40****************************************************************************/
41
42#ifndef QDECLARATIVEVIEW_H
43#define QDECLARATIVEVIEW_H
44
45#include <QtCore/qdatetime.h>
46#include <QtCore/qurl.h>
47#include <QtGui/qgraphicssceneevent.h>
48#include <QtGui/qgraphicsview.h>
49#include <QtGui/qwidget.h>
50#include <QtDeclarative/qdeclarativedebug.h>
51
52QT_BEGIN_HEADER
53
54QT_BEGIN_NAMESPACE
55
56QT_MODULE(Declarative)
57
58class QGraphicsObject;
59class QDeclarativeEngine;
60class QDeclarativeContext;
61class QDeclarativeError;
62
63class QDeclarativeViewPrivate;
64class Q_DECLARATIVE_EXPORT QDeclarativeView : public QGraphicsView
65{
66 Q_OBJECT
67 Q_PROPERTY(ResizeMode resizeMode READ resizeMode WRITE setResizeMode)
68 Q_PROPERTY(Status status READ status NOTIFY statusChanged)
69 Q_PROPERTY(QUrl source READ source WRITE setSource DESIGNABLE true)
70 Q_ENUMS(ResizeMode Status)
71public:
72 explicit QDeclarativeView(QWidget *parent = 0);
73 QDeclarativeView(const QUrl &source, QWidget *parent = 0);
74 virtual ~QDeclarativeView();
75
76 QUrl source() const;
77 void setSource(const QUrl&);
78
79 QDeclarativeEngine* engine() const;
80 QDeclarativeContext* rootContext() const;
81
82 QGraphicsObject *rootObject() const;
83
84 enum ResizeMode { SizeViewToRootObject, SizeRootObjectToView };
85 ResizeMode resizeMode() const;
86 void setResizeMode(ResizeMode);
87
88 enum Status { Null, Ready, Loading, Error };
89 Status status() const;
90
91 QList<QDeclarativeError> errors() const;
92
93 QSize sizeHint() const;
94 QSize initialSize() const;
95
96Q_SIGNALS:
97 void sceneResized(QSize size); // ???
98 void statusChanged(QDeclarativeView::Status);
99
100private Q_SLOTS:
101 void continueExecute();
102
103protected:
104 virtual void resizeEvent(QResizeEvent *);
105 virtual void paintEvent(QPaintEvent *event);
106 virtual void timerEvent(QTimerEvent*);
107 virtual void setRootObject(QObject *obj);
108 virtual bool eventFilter(QObject *watched, QEvent *e);
109
110private:
111 Q_DISABLE_COPY(QDeclarativeView)
112 Q_DECLARE_PRIVATE(QDeclarativeView)
113};
114
115QT_END_NAMESPACE
116
117QT_END_HEADER
118
119#endif // QDECLARATIVEVIEW_H
120