docfix: Some of the scenegraph overview content did not make sense.
[profile/ivi/qtdeclarative.git] / src / quick / qtquick2.cpp
index 32a9d38..b7b1c06 100644 (file)
@@ -1,38 +1,38 @@
 /****************************************************************************
 **
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** Contact: http://www.qt-project.org/
+** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
 **
 ** This file is part of the QtQml module of the Qt Toolkit.
 **
 ** $QT_BEGIN_LICENSE:LGPL$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Digia.  For licensing terms and
+** conditions see http://qt.digia.com/licensing.  For further information
+** use the contact form at http://qt.digia.com/contact-us.
+**
 ** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
 **
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
+** In addition, as a special exception, Digia gives you certain additional
+** rights.  These rights are described in the Digia Qt LGPL Exception
 ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
 **
 ** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
 **
 **
 ** $QT_END_LICENSE$
 #include "qtquick2_p.h"
 #include <private/qqmlengine_p.h>
 #include <private/qquickutilmodule_p.h>
-#include <private/qqmlvaluetype_p.h>
+#include <private/qquickvaluetypes_p.h>
 #include <private/qquickitemsmodule_p.h>
-#include <private/qquickparticlesmodule_p.h>
-#include <private/qquickwindowmodule_p.h>
 
 #include <private/qqmlenginedebugservice_p.h>
 #include <private/qqmldebugstatesdelegate_p.h>
 #include <private/qqmlbinding_p.h>
 #include <private/qqmlcontext_p.h>
+#include <private/qquickapplication_p.h>
 #include <QtQuick/private/qquickpropertychanges_p.h>
 #include <QtQuick/private/qquickstate_p.h>
 #include <qqmlproperty.h>
-#include <QtCore/QWeakPointer>
+#include <QtCore/QPointer>
 
 QT_BEGIN_NAMESPACE
 
@@ -63,7 +62,7 @@ class QQmlQtQuick2DebugStatesDelegate : public QQmlDebugStatesDelegate
 public:
     QQmlQtQuick2DebugStatesDelegate();
     virtual ~QQmlQtQuick2DebugStatesDelegate();
-    virtual void buildStatesList(QQmlContext *ctxt, bool cleanList);
+    virtual void buildStatesList(bool cleanList, const QList<QPointer<QObject> > &instances);
     virtual void updateBinding(QQmlContext *context,
                                const QQmlProperty &property,
                                const QVariant &expression, bool isLiteralValue,
@@ -79,7 +78,7 @@ public:
 private:
     void buildStatesList(QObject *obj);
 
-    QList<QWeakPointer<QQuickState> > m_allStates;
+    QList<QPointer<QQuickState> > m_allStates;
 };
 
 QQmlQtQuick2DebugStatesDelegate::QQmlQtQuick2DebugStatesDelegate()
@@ -90,20 +89,15 @@ QQmlQtQuick2DebugStatesDelegate::~QQmlQtQuick2DebugStatesDelegate()
 {
 }
 
-void QQmlQtQuick2DebugStatesDelegate::buildStatesList(QQmlContext *ctxt, bool cleanList)
+void QQmlQtQuick2DebugStatesDelegate::buildStatesList(bool cleanList,
+                                                      const QList<QPointer<QObject> > &instances)
 {
     if (cleanList)
         m_allStates.clear();
 
-    QQmlContextPrivate *ctxtPriv = QQmlContextPrivate::get(ctxt);
-    for (int ii = 0; ii < ctxtPriv->instances.count(); ++ii) {
-        buildStatesList(ctxtPriv->instances.at(ii));
-    }
-
-    QQmlContextData *child = QQmlContextData::get(ctxt)->childContexts;
-    while (child) {
-        buildStatesList(child->asQQmlContext());
-        child = child->nextChild;
+    //only root context has all instances
+    for (int ii = 0; ii < instances.count(); ++ii) {
+        buildStatesList(instances.at(ii));
     }
 }
 
@@ -125,9 +119,10 @@ void QQmlQtQuick2DebugStatesDelegate::updateBinding(QQmlContext *context,
                                                             const QString &fileName, int line, int column,
                                                             bool *inBaseState)
 {
+    typedef QPointer<QQuickState> QuickStatePointer;
     QObject *object = property.object();
     QString propertyName = property.name();
-    foreach (QWeakPointer<QQuickState> statePointer, m_allStates) {
+    foreach (const QuickStatePointer& statePointer, m_allStates) {
         if (QQuickState *state = statePointer.data()) {
             // here we assume that the revert list on itself defines the base state
             if (state->isStateActive() && state->containsPropertyInRevertList(object, propertyName)) {
@@ -178,11 +173,12 @@ void QQmlQtQuick2DebugStatesDelegate::resetBindingForInvalidProperty(QObject *ob
 void QQmlQtQuick2Module::defineModule()
 {
     QQuickUtilModule::defineModule();
-    QQmlEnginePrivate::defineModule();
+    QQmlEnginePrivate::defineQtQuick2Module();
     QQuickItemsModule::defineModule();
-    QQuickParticlesModule::defineModule();
-    QQuickWindowModule::defineModule();
-    QQmlValueTypeFactory::registerValueTypes();
+
+    qmlRegisterUncreatableType<QQuickApplication>("QtQuick",2,0,"Application", QQuickApplication::tr("Application is an abstract class"));
+
+    QQuickValueTypes::registerValueTypes();
 
     if (QQmlEngineDebugService::isDebuggingEnabled()) {
         QQmlEngineDebugService::instance()->setStatesDelegate(