1 /**************************************************************************
3 ** This file is part of Qt Creator
5 ** Copyright (c) 2011 Nokia Corporation and/or its subsidiary(-ies).
7 ** Contact: Nokia Corporation (qt-info@nokia.com)
11 ** This file contains pre-release code and may not be distributed.
12 ** You may use this file in accordance with the terms and conditions
13 ** contained in the Technology Preview License Agreement accompanying
16 ** 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 2.1 as published by the Free Software
20 ** Foundation and appearing in the file LICENSE.LGPL included in the
21 ** packaging of this file. Please review the following information to
22 ** ensure the GNU Lesser General Public License version 2.1 requirements
23 ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
25 ** In addition, as a special exception, Nokia gives you certain additional
26 ** rights. These rights are described in the Nokia Qt LGPL Exception
27 ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
29 ** If you have questions regarding the use of this file, please contact
30 ** Nokia at qt-info@nokia.com.
32 **************************************************************************/
34 #include "nodeproperty.h"
35 #include "internalnodeproperty.h"
36 #include "invalidmodelnodeexception.h"
37 #include "invalidpropertyexception.h"
38 #include "invalidargumentexception.h"
39 #include "internalnode_p.h"
43 namespace QmlDesigner {
45 NodeProperty::NodeProperty()
49 NodeProperty::NodeProperty(const QString &propertyName, const Internal::InternalNodePointer &internalNode, Model* model, AbstractView *view)
50 : NodeAbstractProperty(propertyName, internalNode, model, view)
55 void NodeProperty::setModelNode(const ModelNode &modelNode)
58 throw InvalidModelNodeException(__LINE__, __FUNCTION__, __FILE__);
60 if (!modelNode.isValid())
61 throw InvalidArgumentException(__LINE__, __FUNCTION__, __FILE__, name());
63 if (internalNode()->hasProperty(name())) { //check if oldValue != value
64 Internal::InternalProperty::Pointer internalProperty = internalNode()->property(name());
65 if (internalProperty->isNodeProperty()
66 && internalProperty->toNodeProperty()->node() == modelNode.internalNode())
70 if (internalNode()->hasProperty(name()) && !internalNode()->property(name())->isNodeProperty())
71 model()->m_d->removeProperty(internalNode()->property(name()));
73 model()->m_d->reparentNode(internalNode(), name(), modelNode.internalNode(), false); //### we have to add a flag that this is not a list
76 ModelNode NodeProperty::modelNode() const
79 throw InvalidModelNodeException(__LINE__, __FUNCTION__, __FILE__);
81 if (internalNode()->hasProperty(name())) { //check if oldValue != value
82 Internal::InternalProperty::Pointer internalProperty = internalNode()->property(name());
83 if (internalProperty->isNodeProperty())
84 return ModelNode(internalProperty->toNodeProperty()->node(), model(), view());
90 void NodeProperty::reparentHere(const ModelNode &modelNode)
92 NodeAbstractProperty::reparentHere(modelNode, false);
95 } // namespace QmlDesigner