Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Marco Bubke
flatpak-qt-creator
Commits
f6a06085
Commit
f6a06085
authored
Feb 10, 2010
by
Marco Bubke
Browse files
Change changeNodeType in changeRootNodeType
parent
3f8988b5
Changes
27
Hide whitespace changes
Inline
Side-by-side
src/plugins/qmldesigner/components/formeditor/formeditorview.cpp
View file @
f6a06085
...
...
@@ -162,9 +162,9 @@ void FormEditorView::nodeAboutToBeRemoved(const ModelNode &removedNode)
QmlModelView
::
nodeAboutToBeRemoved
(
removedNode
);
}
void
FormEditorView
::
n
odeTypeChanged
(
const
ModelNode
&
node
,
const
QString
&
type
,
int
majorVersion
,
int
minorVersion
)
void
FormEditorView
::
rootN
odeTypeChanged
(
const
QString
&
type
,
int
majorVersion
,
int
minorVersion
)
{
QmlItemNode
oldItemNode
(
n
ode
);
QmlItemNode
oldItemNode
(
rootModelN
ode
()
);
if
(
oldItemNode
.
isValid
()
&&
m_scene
->
hasItemForQmlItemNode
(
oldItemNode
))
{
FormEditorItem
*
item
=
m_scene
->
itemForQmlItemNode
(
oldItemNode
);
...
...
@@ -179,9 +179,9 @@ void FormEditorView::nodeAboutToBeRemoved(const ModelNode &removedNode)
delete
item
;
}
QmlModelView
::
n
odeTypeChanged
(
node
,
type
,
majorVersion
,
minorVersion
);
QmlModelView
::
rootN
odeTypeChanged
(
type
,
majorVersion
,
minorVersion
);
QmlItemNode
newItemNode
(
n
ode
);
QmlItemNode
newItemNode
(
rootModelN
ode
()
);
if
(
newItemNode
.
isValid
())
//only setup QmlItems
setupFormEditorItemTree
(
newItemNode
);
...
...
src/plugins/qmldesigner/components/formeditor/formeditorview.h
View file @
f6a06085
...
...
@@ -71,7 +71,7 @@ public:
void
propertiesAboutToBeRemoved
(
const
QList
<
AbstractProperty
>&
propertyList
);
void
variantPropertiesChanged
(
const
QList
<
VariantProperty
>&
propertyList
,
PropertyChangeFlags
propertyChange
);
void
bindingPropertiesChanged
(
const
QList
<
BindingProperty
>&
propertyList
,
PropertyChangeFlags
propertyChange
);
void
n
odeTypeChanged
(
const
ModelNode
&
node
,
const
QString
&
type
,
int
majorVersion
,
int
minorVersion
);
void
rootN
odeTypeChanged
(
const
QString
&
type
,
int
majorVersion
,
int
minorVersion
);
void
selectedNodesChanged
(
const
QList
<
ModelNode
>
&
selectedNodeList
,
const
QList
<
ModelNode
>
&
lastSelectedNodeList
);
...
...
src/plugins/qmldesigner/components/integration/componentview.cpp
View file @
f6a06085
...
...
@@ -158,7 +158,7 @@ void ComponentView::propertiesAboutToBeRemoved(const QList<AbstractProperty>& /*
void
ComponentView
::
propertiesRemoved
(
const
QList
<
AbstractProperty
>&
/*propertyList*/
)
{}
void
ComponentView
::
variantPropertiesChanged
(
const
QList
<
VariantProperty
>&
/*propertyList*/
,
PropertyChangeFlags
/*propertyChange*/
)
{}
void
ComponentView
::
bindingPropertiesChanged
(
const
QList
<
BindingProperty
>&
/*propertyList*/
,
PropertyChangeFlags
/*propertyChange*/
)
{}
void
ComponentView
::
n
odeTypeChanged
(
const
ModelNode
&
/*node*/
,
const
QString
&
/*type*/
,
int
/*majorVersion*/
,
int
/*minorVersion*/
)
{}
void
ComponentView
::
rootN
odeTypeChanged
(
const
QString
&
/*type*/
,
int
/*majorVersion*/
,
int
/*minorVersion*/
)
{}
...
...
src/plugins/qmldesigner/components/integration/componentview.h
View file @
f6a06085
...
...
@@ -63,7 +63,7 @@ public:
void
propertiesRemoved
(
const
QList
<
AbstractProperty
>&
propertyList
);
void
variantPropertiesChanged
(
const
QList
<
VariantProperty
>&
propertyList
,
PropertyChangeFlags
propertyChange
);
void
bindingPropertiesChanged
(
const
QList
<
BindingProperty
>&
propertyList
,
PropertyChangeFlags
propertyChange
);
void
n
odeTypeChanged
(
const
ModelNode
&
node
,
const
QString
&
type
,
int
majorVersion
,
int
minorVersion
);
void
rootN
odeTypeChanged
(
const
QString
&
type
,
int
majorVersion
,
int
minorVersion
);
...
...
src/plugins/qmldesigner/components/integration/designdocumentcontroller.cpp
View file @
f6a06085
...
...
@@ -584,7 +584,7 @@ void DesignDocumentController::copySelected()
foreach
(
ModelNode
node
,
view
.
rootModelNode
().
allDirectSubModelNodes
())
{
node
.
destroy
();
}
view
.
rootModelNode
().
chang
eType
(
"Qt/Rectangle"
,
4
,
6
);
view
.
changeRootNod
eType
(
"Qt/Rectangle"
,
4
,
6
);
view
.
rootModelNode
().
setId
(
"designer__Selection"
);
foreach
(
const
ModelNode
&
selectedNode
,
selectedNodes
)
{
...
...
src/plugins/qmldesigner/components/integration/designdocumentcontrollerview.cpp
View file @
f6a06085
...
...
@@ -48,7 +48,7 @@ void DesignDocumentControllerView::propertiesAboutToBeRemoved(const QList<Abstra
void
DesignDocumentControllerView
::
propertiesRemoved
(
const
QList
<
AbstractProperty
>&
/*propertyList*/
)
{};
void
DesignDocumentControllerView
::
variantPropertiesChanged
(
const
QList
<
VariantProperty
>&
/*propertyList*/
,
AbstractView
::
PropertyChangeFlags
/*propertyChange*/
)
{};
void
DesignDocumentControllerView
::
bindingPropertiesChanged
(
const
QList
<
BindingProperty
>&
/*propertyList*/
,
AbstractView
::
PropertyChangeFlags
/*propertyChange*/
)
{};
void
DesignDocumentControllerView
::
n
odeTypeChanged
(
const
ModelNode
&
/*node*/
,
const
QString
&
/*type*/
,
int
/*majorVersion*/
,
int
/*minorVersion*/
)
{};
void
DesignDocumentControllerView
::
rootN
odeTypeChanged
(
const
QString
&
/*type*/
,
int
/*majorVersion*/
,
int
/*minorVersion*/
)
{};
void
DesignDocumentControllerView
::
selectedNodesChanged
(
const
QList
<
ModelNode
>
&
/*selectedNodeList*/
,
const
QList
<
ModelNode
>
&
/*lastSelectedNodeList*/
)
{};
...
...
src/plugins/qmldesigner/components/integration/designdocumentcontrollerview.h
View file @
f6a06085
...
...
@@ -51,7 +51,7 @@ public:
virtual
void
propertiesRemoved
(
const
QList
<
AbstractProperty
>&
propertyList
);
virtual
void
variantPropertiesChanged
(
const
QList
<
VariantProperty
>&
propertyList
,
PropertyChangeFlags
propertyChange
);
virtual
void
bindingPropertiesChanged
(
const
QList
<
BindingProperty
>&
propertyList
,
PropertyChangeFlags
propertyChange
);
virtual
void
n
odeTypeChanged
(
const
ModelNode
&
node
,
const
QString
&
type
,
int
majorVersion
,
int
minorVersion
);
virtual
void
rootN
odeTypeChanged
(
const
QString
&
type
,
int
majorVersion
,
int
minorVersion
);
virtual
void
selectedNodesChanged
(
const
QList
<
ModelNode
>
&
selectedNodeList
,
const
QList
<
ModelNode
>
&
lastSelectedNodeList
);
...
...
src/plugins/qmldesigner/components/navigator/navigatorview.cpp
View file @
f6a06085
...
...
@@ -138,11 +138,11 @@ void NavigatorView::propertiesAboutToBeRemoved(const QList<AbstractProperty>& pr
}
}
void
NavigatorView
::
n
odeTypeChanged
(
const
ModelNode
&
node
,
const
QString
&
type
,
int
majorVersion
,
int
minorVersion
)
void
NavigatorView
::
rootN
odeTypeChanged
(
const
QString
&
type
,
int
majorVersion
,
int
minorVersion
)
{
QmlModelView
::
n
odeTypeChanged
(
node
,
type
,
majorVersion
,
minorVersion
);
if
(
m_treeModel
->
isInTree
(
n
ode
))
m_treeModel
->
updateItemRow
(
n
ode
);
QmlModelView
::
rootN
odeTypeChanged
(
type
,
majorVersion
,
minorVersion
);
if
(
m_treeModel
->
isInTree
(
rootModelN
ode
()
))
m_treeModel
->
updateItemRow
(
rootModelN
ode
()
);
}
void
NavigatorView
::
auxiliaryDataChanged
(
const
ModelNode
&
node
,
const
QString
&
name
,
const
QVariant
&
data
)
...
...
src/plugins/qmldesigner/components/navigator/navigatorview.h
View file @
f6a06085
...
...
@@ -65,7 +65,7 @@ public:
void
nodeOrderChanged
(
const
NodeListProperty
&
listProperty
,
const
ModelNode
&
movedNode
,
int
oldIndex
);
void
nodeReparented
(
const
ModelNode
&
node
,
const
NodeAbstractProperty
&
newPropertyParent
,
const
NodeAbstractProperty
&
oldPropertyParent
,
AbstractView
::
PropertyChangeFlags
propertyChange
);
void
n
odeTypeChanged
(
const
ModelNode
&
node
,
const
QString
&
type
,
int
majorVersion
,
int
minorVersion
);
void
rootN
odeTypeChanged
(
const
QString
&
type
,
int
majorVersion
,
int
minorVersion
);
void
nodeIdChanged
(
const
ModelNode
&
node
,
const
QString
&
newId
,
const
QString
&
oldId
);
void
propertiesAboutToBeRemoved
(
const
QList
<
AbstractProperty
>&
propertyList
);
...
...
src/plugins/qmldesigner/core/include/abstractview.h
View file @
f6a06085
...
...
@@ -111,7 +111,7 @@ public:
virtual
void
propertiesRemoved
(
const
QList
<
AbstractProperty
>&
propertyList
)
=
0
;
virtual
void
variantPropertiesChanged
(
const
QList
<
VariantProperty
>&
propertyList
,
PropertyChangeFlags
propertyChange
)
=
0
;
virtual
void
bindingPropertiesChanged
(
const
QList
<
BindingProperty
>&
propertyList
,
PropertyChangeFlags
propertyChange
)
=
0
;
virtual
void
n
odeTypeChanged
(
const
ModelNode
&
node
,
const
QString
&
type
,
int
majorVersion
,
int
minorVersion
)
=
0
;
virtual
void
rootN
odeTypeChanged
(
const
QString
&
type
,
int
majorVersion
,
int
minorVersion
)
=
0
;
virtual
void
selectedNodesChanged
(
const
QList
<
ModelNode
>
&
selectedNodeList
,
const
QList
<
ModelNode
>
&
lastSelectedNodeList
)
=
0
;
...
...
@@ -129,6 +129,8 @@ public:
QmlModelView
*
toQmlModelView
();
void
changeRootNodeType
(
const
QString
&
type
,
int
majorVersion
,
int
minorVersion
);
protected:
void
setModel
(
Model
*
model
);
void
removeModel
();
...
...
src/plugins/qmldesigner/core/include/forwardview.h
View file @
f6a06085
...
...
@@ -62,7 +62,7 @@ public:
void
propertiesRemoved
(
const
QList
<
AbstractProperty
>&
propertyList
);
void
variantPropertiesChanged
(
const
QList
<
VariantProperty
>&
propertyList
,
PropertyChangeFlags
propertyChange
);
void
bindingPropertiesChanged
(
const
QList
<
BindingProperty
>&
propertyList
,
PropertyChangeFlags
propertyChange
);
void
n
odeTypeChanged
(
const
ModelNode
&
node
,
const
QString
&
type
,
int
majorVersion
,
int
minorVersion
);
void
rootN
odeTypeChanged
(
const
QString
&
type
,
int
majorVersion
,
int
minorVersion
);
void
selectedNodesChanged
(
const
QList
<
ModelNode
>
&
selectedNodeList
,
const
QList
<
ModelNode
>
&
lastSelectedNodeList
);
...
...
@@ -187,10 +187,10 @@ void ForwardView<ViewType>::bindingPropertiesChanged(const QList<BindingProperty
}
template
<
class
ViewType
>
void
ForwardView
<
ViewType
>::
n
odeTypeChanged
(
const
ModelNode
&
node
,
const
QString
&
type
,
int
majorVersion
,
int
minorVersion
)
void
ForwardView
<
ViewType
>::
rootN
odeTypeChanged
(
const
QString
&
type
,
int
majorVersion
,
int
minorVersion
)
{
foreach
(
const
ViewTypePointer
&
view
,
m_targetViewList
)
view
->
n
odeTypeChanged
(
ModelNode
(
node
,
view
.
data
()),
type
,
majorVersion
,
minorVersion
);
view
->
rootN
odeTypeChanged
(
type
,
majorVersion
,
minorVersion
);
}
template
<
class
ViewType
>
...
...
src/plugins/qmldesigner/core/include/modelnode.h
View file @
f6a06085
...
...
@@ -90,7 +90,6 @@ public:
ModelNode
&
operator
=
(
const
ModelNode
&
other
);
QString
type
()
const
;
void
changeType
(
const
QString
&
type
,
int
majorVersion
,
int
minorVersion
);
QString
simplifiedTypeName
()
const
;
int
minorVersion
()
const
;
int
majorVersion
()
const
;
...
...
src/plugins/qmldesigner/core/include/nodeinstanceview.h
View file @
f6a06085
...
...
@@ -74,7 +74,7 @@ public:
void
variantPropertiesChanged
(
const
QList
<
VariantProperty
>&
propertyList
,
PropertyChangeFlags
propertyChange
);
void
bindingPropertiesChanged
(
const
QList
<
BindingProperty
>&
propertyList
,
PropertyChangeFlags
propertyChange
);
void
nodeReparented
(
const
ModelNode
&
node
,
const
NodeAbstractProperty
&
newPropertyParent
,
const
NodeAbstractProperty
&
oldPropertyParent
,
AbstractView
::
PropertyChangeFlags
propertyChange
);
void
n
odeTypeChanged
(
const
ModelNode
&
node
,
const
QString
&
type
,
int
majorVersion
,
int
minorVersion
);
void
rootN
odeTypeChanged
(
const
QString
&
type
,
int
majorVersion
,
int
minorVersion
);
void
fileUrlChanged
(
const
QUrl
&
oldUrl
,
const
QUrl
&
newUrl
);
void
nodeIdChanged
(
const
ModelNode
&
node
,
const
QString
&
newId
,
const
QString
&
oldId
);
...
...
src/plugins/qmldesigner/core/include/rewriterview.h
View file @
f6a06085
...
...
@@ -122,7 +122,7 @@ public:
void
nodeReparented
(
const
ModelNode
&
node
,
const
NodeAbstractProperty
&
newPropertyParent
,
const
NodeAbstractProperty
&
oldPropertyParent
,
AbstractView
::
PropertyChangeFlags
propertyChange
);
void
nodeIdChanged
(
const
ModelNode
&
node
,
const
QString
&
newId
,
const
QString
&
oldId
);
void
nodeOrderChanged
(
const
NodeListProperty
&
listProperty
,
const
ModelNode
&
movedNode
,
int
oldIndex
);
void
n
odeTypeChanged
(
const
ModelNode
&
node
,
const
QString
&
type
,
int
majorVersion
,
int
minorVersion
);
void
rootN
odeTypeChanged
(
const
QString
&
type
,
int
majorVersion
,
int
minorVersion
);
void
customNotification
(
const
AbstractView
*
view
,
const
QString
&
identifier
,
const
QList
<
ModelNode
>
&
nodeList
,
const
QList
<
QVariant
>
&
data
);
void
importAdded
(
const
Import
&
import
);
...
...
src/plugins/qmldesigner/core/instances/nodeinstance.cpp
View file @
f6a06085
...
...
@@ -132,6 +132,8 @@ Internal::ObjectNodeInstance::Pointer NodeInstance::createInstance(const NodeMet
{
Internal
::
ObjectNodeInstance
::
Pointer
instance
;
qDebug
()
<<
__FUNCTION__
<<
metaInfo
.
typeName
();
if
(
metaInfo
.
isSubclassOf
(
"Qt/QGraphicsView"
,
4
,
6
))
instance
=
Internal
::
GraphicsViewNodeInstance
::
create
(
metaInfo
,
context
,
objectToBeWrapped
);
else
if
(
metaInfo
.
isSubclassOf
(
"Qt/QmlView"
,
4
,
6
))
...
...
src/plugins/qmldesigner/core/instances/nodeinstanceview.cpp
View file @
f6a06085
...
...
@@ -197,14 +197,13 @@ void NodeInstanceView::removeInstanceAndSubInstances(const ModelNode &node)
}
}
void
NodeInstanceView
::
n
odeTypeChanged
(
const
ModelNode
&
node
,
const
QString
&
/*type*/
,
int
/*majorVersion*/
,
int
/*minorVersion*/
)
void
NodeInstanceView
::
rootN
odeTypeChanged
(
const
QString
&
/*type*/
,
int
/*majorVersion*/
,
int
/*minorVersion*/
)
{
removeInstance
AndSubInstances
(
node
);
remove
All
Instance
NodeRelationships
(
);
QList
<
ModelNode
>
nodeList
;
nodeList
.
append
(
node
.
allSubModelNodes
());
nodeList
.
append
(
node
);
nodeList
.
append
(
allModelNodes
());
loadNodes
(
nodeList
);
}
...
...
src/plugins/qmldesigner/core/model/abstractview.cpp
View file @
f6a06085
...
...
@@ -359,4 +359,11 @@ void AbstractView::emitCustomNotification(const QString &identifier, const QList
model
()
->
m_d
->
notifyCustomNotification
(
this
,
identifier
,
nodeList
,
data
);
}
void
AbstractView
::
changeRootNodeType
(
const
QString
&
type
,
int
majorVersion
,
int
minorVersion
)
{
Internal
::
WriteLocker
locker
(
m_model
.
data
());
m_model
.
data
()
->
m_d
->
changeRootNodeType
(
type
,
majorVersion
,
minorVersion
);
}
}
// namespace QmlDesigner
src/plugins/qmldesigner/core/model/model.cpp
View file @
f6a06085
...
...
@@ -168,6 +168,7 @@ InternalNode::Pointer ModelPrivate::createNode(const QString &typeString,
int
minorVersion
,
const
QList
<
QPair
<
QString
,
QVariant
>
>
&
propertyList
)
{
qDebug
()
<<
__FUNCTION__
<<
typeString
;
if
(
typeString
.
isEmpty
())
throw
InvalidArgumentException
(
__LINE__
,
__FUNCTION__
,
__FILE__
,
"typeString"
);
if
(
!
m_metaInfo
.
nodeMetaInfo
(
typeString
).
isValid
())
...
...
@@ -298,16 +299,15 @@ void ModelPrivate::notifyAuxiliaryDataChanged(const InternalNodePointer &interna
}
}
void
ModelPrivate
::
notifyNodeTypeChanged
(
const
InternalNodePointer
&
internalNode
,
const
QString
&
type
,
int
majorVersion
,
int
minorVersion
)
void
ModelPrivate
::
notify
Root
NodeTypeChanged
(
const
QString
&
type
,
int
majorVersion
,
int
minorVersion
)
{
bool
resetModel
=
false
;
QString
description
;
foreach
(
const
QWeakPointer
<
AbstractView
>
&
view
,
m_viewList
)
{
Q_ASSERT
(
view
!=
0
);
ModelNode
node
(
internalNode
,
model
(),
view
.
data
());
try
{
view
->
n
odeTypeChanged
(
node
,
type
,
majorVersion
,
minorVersion
);
view
->
rootN
odeTypeChanged
(
type
,
majorVersion
,
minorVersion
);
}
catch
(
RewritingException
&
e
)
{
description
=
e
.
description
();
resetModel
=
true
;
...
...
@@ -834,13 +834,13 @@ void ModelPrivate::clearParent(const InternalNodePointer &node)
notifyNodeReparent
(
node
,
InternalNodeAbstractProperty
::
Pointer
(),
oldParentNode
,
oldParentPropertyName
,
AbstractView
::
NoAdditionalChanges
);
}
void
ModelPrivate
::
change
Type
(
const
InternalNodePointer
&
internalNode
,
const
QString
&
type
,
int
majorVersion
,
int
minorVersion
)
void
ModelPrivate
::
change
RootNodeType
(
const
QString
&
type
,
int
majorVersion
,
int
minorVersion
)
{
Q_ASSERT
(
!
internal
Node
.
isNull
());
internal
Node
->
setType
(
type
);
internal
Node
->
setMajorVersion
(
majorVersion
);
internal
Node
->
setMinorVersion
(
minorVersion
);
notifyNodeTypeChanged
(
internalNode
,
type
,
majorVersion
,
minorVersion
);
Q_ASSERT
(
!
root
Node
()
.
isNull
());
root
Node
()
->
setType
(
type
);
root
Node
()
->
setMajorVersion
(
majorVersion
);
root
Node
()
->
setMinorVersion
(
minorVersion
);
notify
Root
NodeTypeChanged
(
type
,
majorVersion
,
minorVersion
);
}
void
ModelPrivate
::
changeNodeOrder
(
const
InternalNode
::
Pointer
&
internalParentNode
,
const
QString
&
listPropertyName
,
int
from
,
int
to
)
...
...
src/plugins/qmldesigner/core/model/model_p.h
View file @
f6a06085
...
...
@@ -136,7 +136,7 @@ public:
void
notifyNodeOrderChanged
(
const
InternalNodeListPropertyPointer
&
internalListPropertyPointer
,
const
InternalNodePointer
&
internalNodePointer
,
int
oldIndex
);
void
notifyAuxiliaryDataChanged
(
const
InternalNodePointer
&
internalNode
,
const
QString
&
name
,
const
QVariant
&
data
);
void
notifyNodeTypeChanged
(
const
InternalNodePointer
&
internalNode
,
const
QString
&
type
,
int
majorVersion
,
int
minorVersion
);
void
notify
Root
NodeTypeChanged
(
const
QString
&
type
,
int
majorVersion
,
int
minorVersion
);
void
notifyCustomNotification
(
const
AbstractView
*
senderView
,
const
QString
&
identifier
,
const
QList
<
ModelNode
>
&
nodeList
,
const
QList
<
QVariant
>
&
data
);
...
...
@@ -175,7 +175,7 @@ public:
void
changeNodeOrder
(
const
InternalNodePointer
&
internalParentNode
,
const
QString
&
listPropertyName
,
int
from
,
int
to
);
void
checkPropertyName
(
const
QString
&
propertyName
);
void
clearParent
(
const
InternalNodePointer
&
internalNode
);
void
change
Type
(
const
InternalNodePointer
&
internalNode
,
const
QString
&
type
,
int
majorVersion
,
int
minorVersion
);
void
change
RootNodeType
(
const
QString
&
type
,
int
majorVersion
,
int
minorVersion
);
InternalNodePointer
nodeForId
(
const
QString
&
id
)
const
;
bool
hasId
(
const
QString
&
id
)
const
;
...
...
src/plugins/qmldesigner/core/model/modelmerger.cpp
View file @
f6a06085
...
...
@@ -182,7 +182,7 @@ void ModelMerger::replaceModel(const ModelNode &modelNode)
syncId
(
rootNode
,
modelNode
,
idRenamingHash
);
syncNodeProperties
(
rootNode
,
modelNode
,
idRenamingHash
,
view
());
syncNodeListProperties
(
rootNode
,
modelNode
,
idRenamingHash
,
view
());
rootNode
.
chang
eType
(
modelNode
.
type
(),
modelNode
.
majorVersion
(),
modelNode
.
minorVersion
());
m_view
->
changeRootNod
eType
(
modelNode
.
type
(),
modelNode
.
majorVersion
(),
modelNode
.
minorVersion
());
}
}
//namespace QmlDesigner
...
...
Prev
1
2
Next
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment