From 94bc93d1011aa3fe92735e8277ba631e23d0285b Mon Sep 17 00:00:00 2001 From: Marco Bubke Date: Thu, 7 Jul 2011 19:10:34 +0200 Subject: [PATCH] QmlDesigner.NodeInstance: Add instance wrapper for anchor changes Task-number: QTCREATORBUG-5026 Change-Id: I56116fc3f1823e41bfd8e50781d2b4e8fccbfe04 Reviewed-on: http://codereview.qt.nokia.com/1329 Reviewed-by: Qt Sanity Bot Reviewed-by: Marco Bubke --- .../instances/anchorchangesnodeinstance.cpp | 119 ++++++++++++++++++ .../instances/anchorchangesnodeinstance.h | 106 ++++++++++++++++ .../qml/qmlpuppet/instances/instances.pri | 3 +- .../instances/servernodeinstance.cpp | 3 + 4 files changed, 230 insertions(+), 1 deletion(-) create mode 100644 share/qtcreator/qml/qmlpuppet/instances/anchorchangesnodeinstance.cpp create mode 100644 share/qtcreator/qml/qmlpuppet/instances/anchorchangesnodeinstance.h diff --git a/share/qtcreator/qml/qmlpuppet/instances/anchorchangesnodeinstance.cpp b/share/qtcreator/qml/qmlpuppet/instances/anchorchangesnodeinstance.cpp new file mode 100644 index 00000000000..59637a5ac13 --- /dev/null +++ b/share/qtcreator/qml/qmlpuppet/instances/anchorchangesnodeinstance.cpp @@ -0,0 +1,119 @@ +/************************************************************************** + +** + +** This file is part of Qt Creator + +** + +** Copyright (c) 2011 Nokia Corporation and/or its subsidiary(-ies). + +** + +** Contact: Nokia Corporation (info@nokia.com) + +** + +** No Commercial Usage + +** + +** This file contains pre-release code and may not be distributed. + +** You may use this file in accordance with the terms and conditions + +** contained in the Technology Preview License Agreement accompanying + +** this package. + +** + +** GNU Lesser General Public License Usage + +** + +** 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 + +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. + +** + +** If you have questions regarding the use of this file, please contact + +** Nokia at info@nokia.com. + +** + +**************************************************************************/ + +#include "anchorchangesnodeinstance.h" + +namespace QmlDesigner { + +namespace Internal { + +AnchorChangesNodeInstance::AnchorChangesNodeInstance(QDeclarativeAnchorChanges *anchorChangesObject) : + ObjectNodeInstance(anchorChangesObject) +{ +} + +AnchorChangesNodeInstance::Pointer AnchorChangesNodeInstance::create(QObject *object) +{ + QDeclarativeAnchorChanges *anchorChangesObject = qobject_cast(object); + + Q_ASSERT(anchorChangesObject); + + Pointer instance(new AnchorChangesNodeInstance(anchorChangesObject)); + + instance->populateResetValueHash(); + + return instance; +} + +void AnchorChangesNodeInstance::setPropertyVariant(const QString &/*name*/, const QVariant &/*value*/) +{ +} + +void AnchorChangesNodeInstance::setPropertyBinding(const QString &/*name*/, const QString &/*expression*/) +{ +} + +QVariant AnchorChangesNodeInstance::property(const QString &/*name*/) const +{ + return QVariant(); +} + +void AnchorChangesNodeInstance::resetProperty(const QString &/*name*/) +{ +} + + +void AnchorChangesNodeInstance::reparent(const ServerNodeInstance &/*oldParentInstance*/, const QString &/*oldParentProperty*/, const ServerNodeInstance &/*newParentInstance*/, const QString &/*newParentProperty*/) +{ +} + +QDeclarativeAnchorChanges *AnchorChangesNodeInstance::changesObject() const +{ + Q_ASSERT(qobject_cast(object())); + return static_cast(object()); +} + +} // namespace Internal + +} // namespace QmlDesigner diff --git a/share/qtcreator/qml/qmlpuppet/instances/anchorchangesnodeinstance.h b/share/qtcreator/qml/qmlpuppet/instances/anchorchangesnodeinstance.h new file mode 100644 index 00000000000..4591d576c9b --- /dev/null +++ b/share/qtcreator/qml/qmlpuppet/instances/anchorchangesnodeinstance.h @@ -0,0 +1,106 @@ +/************************************************************************** + +** + +** This file is part of Qt Creator + +** + +** Copyright (c) 2011 Nokia Corporation and/or its subsidiary(-ies). + +** + +** Contact: Nokia Corporation (qt-info@nokia.com) + +** + +** No Commercial Usage + +** + +** This file contains pre-release code and may not be distributed. + +** You may use this file in accordance with the terms and conditions + +** contained in the Technology Preview License Agreement accompanying + +** this package. + +** + +** GNU Lesser General Public License Usage + +** + +** 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 + +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. + +** + +** If you have questions regarding the use of this file, please contact + +** Nokia at info@nokia.com. + +** + +**************************************************************************/ + +#ifndef QMLDESIGNER_ANCHORCHANGESNODEINSTANCE_H +#define QMLDESIGNER_ANCHORCHANGESNODEINSTANCE_H + +#include "objectnodeinstance.h" +#include + +#include +#include + +QT_BEGIN_NAMESPACE +class QDeclarativeProperty; +QT_END_NAMESPACE + +namespace QmlDesigner { + +namespace Internal { + +class AnchorChangesNodeInstance : public ObjectNodeInstance +{ +public: + typedef QSharedPointer Pointer; + typedef QWeakPointer WeakPointer; + + static Pointer create(QObject *objectToBeWrapped); + + virtual void setPropertyVariant(const QString &name, const QVariant &value); + virtual void setPropertyBinding(const QString &name, const QString &expression); + virtual QVariant property(const QString &name) const; + virtual void resetProperty(const QString &name); + + using ObjectNodeInstance::reparent; // keep the virtual reparent(...) method around + void reparent(const ServerNodeInstance &oldParentInstance, const QString &oldParentProperty, const ServerNodeInstance &newParentInstance, const QString &newParentProperty); + +protected: + AnchorChangesNodeInstance(QDeclarativeAnchorChanges *object); + QDeclarativeAnchorChanges *changesObject() const; +}; + +} // namespace Internal +} // namespace QmlDesigner + +#endif // QMLDESIGNER_ANCHORCHANGESNODEINSTANCE_H diff --git a/share/qtcreator/qml/qmlpuppet/instances/instances.pri b/share/qtcreator/qml/qmlpuppet/instances/instances.pri index af88d6bd738..b9ed533142b 100644 --- a/share/qtcreator/qml/qmlpuppet/instances/instances.pri +++ b/share/qtcreator/qml/qmlpuppet/instances/instances.pri @@ -16,7 +16,7 @@ HEADERS += $$PWD/qmlpropertychangesnodeinstance.h HEADERS += $$PWD/qmlstatenodeinstance.h HEADERS += $$PWD/qmltransitionnodeinstance.h HEADERS += $$PWD/servernodeinstance.h - +HEADERS += $$PWD/anchorchangesnodeinstance.h SOURCES += $$PWD/behaviornodeinstance.cpp SOURCES += $$PWD/dummycontextobject.cpp @@ -32,3 +32,4 @@ SOURCES += $$PWD/qmlpropertychangesnodeinstance.cpp SOURCES += $$PWD/qmlstatenodeinstance.cpp SOURCES += $$PWD/qmltransitionnodeinstance.cpp SOURCES += $$PWD/servernodeinstance.cpp +SOURCES += $$PWD/anchorchangesnodeinstance.cpp diff --git a/share/qtcreator/qml/qmlpuppet/instances/servernodeinstance.cpp b/share/qtcreator/qml/qmlpuppet/instances/servernodeinstance.cpp index 73a2c9f2700..34319a8450e 100644 --- a/share/qtcreator/qml/qmlpuppet/instances/servernodeinstance.cpp +++ b/share/qtcreator/qml/qmlpuppet/instances/servernodeinstance.cpp @@ -38,6 +38,7 @@ #include "qmlpropertychangesnodeinstance.h" #include "behaviornodeinstance.h" #include "qmlstatenodeinstance.h" +#include "anchorchangesnodeinstance.h" #if QT_VERSION >= 0x050000 #include "sgitemnodeinstance.h" @@ -185,6 +186,8 @@ Internal::ObjectNodeInstance::Pointer ServerNodeInstance::createInstance(QObject #endif else if (isSubclassOf(objectToBeWrapped, "QDeclarativeComponent")) instance = Internal::ComponentNodeInstance::create(objectToBeWrapped); + else if (isSubclassOf(objectToBeWrapped, "QDeclarativeAnchorChanges")) + instance = Internal::AnchorChangesNodeInstance::create(objectToBeWrapped); else if (isSubclassOf(objectToBeWrapped, "QDeclarativePropertyChanges")) instance = Internal::QmlPropertyChangesNodeInstance::create(objectToBeWrapped); else if (isSubclassOf(objectToBeWrapped, "QDeclarativeState"))