forked from qt-creator/qt-creator
QmlDesigner: Refactoring ModelNode::setId
Add ModelNode::setIdWithoutRefactoring for changes without rewriter interaction and change the rewriter to use it. Rename ModelNode::setId to ModelNode::setIdWithRefactoring and add the refactoring capabilities. Change-Id: Ia5fba19bd2eeb034d525e92f39d30954e83fa747 Reviewed-by: Thomas Hartmann <Thomas.Hartmann@digia.com>
This commit is contained in:
@@ -168,7 +168,7 @@ void TabViewDesignerAction::addNewTab()
|
|||||||
tabViewModelNode.majorVersion(),
|
tabViewModelNode.majorVersion(),
|
||||||
tabViewModelNode.minorVersion(),
|
tabViewModelNode.minorVersion(),
|
||||||
propertyList);
|
propertyList);
|
||||||
newTabModelNode.setId(newTabModelNode.view()->generateNewId(tabName));
|
newTabModelNode.setIdWithRefactoring(newTabModelNode.view()->generateNewId(tabName));
|
||||||
tabViewModelNode.defaultNodeAbstractProperty().reparentHere(newTabModelNode);
|
tabViewModelNode.defaultNodeAbstractProperty().reparentHere(newTabModelNode);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -405,7 +405,7 @@ void DesignDocument::copySelected()
|
|||||||
node.destroy();
|
node.destroy();
|
||||||
}
|
}
|
||||||
view.changeRootNodeType("QtQuick.Rectangle", 1, 0);
|
view.changeRootNodeType("QtQuick.Rectangle", 1, 0);
|
||||||
view.rootModelNode().setId("designer__Selection");
|
view.rootModelNode().setIdWithRefactoring("designer__Selection");
|
||||||
|
|
||||||
foreach (const ModelNode &selectedNode, selectedNodes) {
|
foreach (const ModelNode &selectedNode, selectedNodes) {
|
||||||
ModelNode newNode(view.insertModel(selectedNode));
|
ModelNode newNode(view.insertModel(selectedNode));
|
||||||
|
|||||||
@@ -365,7 +365,7 @@ void NavigatorTreeModel::handleChangedItem(QStandardItem *item)
|
|||||||
if (node.isValidId(item->text()) && !node.view()->modelNodeForId(item->text()).isValid()) {
|
if (node.isValidId(item->text()) && !node.view()->modelNodeForId(item->text()).isValid()) {
|
||||||
if (node.id().isEmpty() || item->text().isEmpty()) { //no id
|
if (node.id().isEmpty() || item->text().isEmpty()) { //no id
|
||||||
try {
|
try {
|
||||||
node.setId(item->text());
|
node.setIdWithoutRefactoring(item->text());
|
||||||
} catch (InvalidIdException &e) { //better save then sorry
|
} catch (InvalidIdException &e) { //better save then sorry
|
||||||
QMessageBox::warning(Core::ICore::dialogParent(), tr("Invalid Id"), e.description());
|
QMessageBox::warning(Core::ICore::dialogParent(), tr("Invalid Id"), e.description());
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -151,7 +151,7 @@ void PropertyEditorView::changeValue(const QString &name)
|
|||||||
if (m_selectedNode.isValidId(newId) && !modelNodeForId(newId).isValid() ) {
|
if (m_selectedNode.isValidId(newId) && !modelNodeForId(newId).isValid() ) {
|
||||||
if (m_selectedNode.id().isEmpty() || newId.isEmpty()) { //no id
|
if (m_selectedNode.id().isEmpty() || newId.isEmpty()) { //no id
|
||||||
try {
|
try {
|
||||||
m_selectedNode.setId(newId);
|
m_selectedNode.setIdWithoutRefactoring(newId);
|
||||||
} catch (InvalidIdException &e) { //better save then sorry
|
} catch (InvalidIdException &e) { //better save then sorry
|
||||||
m_locked = true;
|
m_locked = true;
|
||||||
value->setValue(m_selectedNode.id());
|
value->setValue(m_selectedNode.id());
|
||||||
|
|||||||
@@ -152,7 +152,8 @@ public:
|
|||||||
|
|
||||||
QString id() const;
|
QString id() const;
|
||||||
QString validId();
|
QString validId();
|
||||||
void setId(const QString &id);
|
void setIdWithRefactoring(const QString &id);
|
||||||
|
void setIdWithoutRefactoring(const QString &id);
|
||||||
static bool isValidId(const QString &id);
|
static bool isValidId(const QString &id);
|
||||||
|
|
||||||
Model *model() const;
|
Model *model() const;
|
||||||
|
|||||||
@@ -74,7 +74,7 @@ static void syncBindingProperties(ModelNode &outputNode, const ModelNode &inputN
|
|||||||
static void syncId(ModelNode &outputNode, const ModelNode &inputNode, const QHash<QString, QString> &idRenamingHash)
|
static void syncId(ModelNode &outputNode, const ModelNode &inputNode, const QHash<QString, QString> &idRenamingHash)
|
||||||
{
|
{
|
||||||
if (!inputNode.id().isEmpty())
|
if (!inputNode.id().isEmpty())
|
||||||
outputNode.setId(idRenamingHash.value(inputNode.id()));
|
outputNode.setIdWithoutRefactoring(idRenamingHash.value(inputNode.id()));
|
||||||
}
|
}
|
||||||
|
|
||||||
static void splitIdInBaseNameAndNumber(const QString &id, QString *baseId, int *number)
|
static void splitIdInBaseNameAndNumber(const QString &id, QString *baseId, int *number)
|
||||||
|
|||||||
@@ -140,7 +140,7 @@ QString ModelNode::id() const
|
|||||||
QString ModelNode::validId()
|
QString ModelNode::validId()
|
||||||
{
|
{
|
||||||
if (id().isEmpty())
|
if (id().isEmpty())
|
||||||
setId(view()->generateNewId(QString::fromUtf8(simplifiedTypeName())));
|
setIdWithRefactoring(view()->generateNewId(QString::fromUtf8(simplifiedTypeName())));
|
||||||
|
|
||||||
return id();
|
return id();
|
||||||
}
|
}
|
||||||
@@ -164,7 +164,18 @@ bool ModelNode::isValidId(const QString &id)
|
|||||||
return id.isEmpty() || (!idContainsWrongLetter(id) && !idIsQmlKeyWord(id));
|
return id.isEmpty() || (!idContainsWrongLetter(id) && !idIsQmlKeyWord(id));
|
||||||
}
|
}
|
||||||
|
|
||||||
void ModelNode::setId(const QString& id)
|
void ModelNode::setIdWithRefactoring(const QString& id)
|
||||||
|
{
|
||||||
|
if (model()->rewriterView()
|
||||||
|
&& !id.isEmpty()
|
||||||
|
&& !m_internalNode->id().isEmpty()) { // refactor the id if they are not empty
|
||||||
|
model()->rewriterView()->renameId(m_internalNode->id(), id);
|
||||||
|
} else {
|
||||||
|
setIdWithoutRefactoring(id);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ModelNode::setIdWithoutRefactoring(const QString &id)
|
||||||
{
|
{
|
||||||
Internal::WriteLocker locker(m_model.data());
|
Internal::WriteLocker locker(m_model.data());
|
||||||
if (!isValid()) {
|
if (!isValid()) {
|
||||||
|
|||||||
@@ -500,7 +500,7 @@ QmlItemNode QmlObjectNode::instanceParentItem() const
|
|||||||
|
|
||||||
void QmlObjectNode::setId(const QString &id)
|
void QmlObjectNode::setId(const QString &id)
|
||||||
{
|
{
|
||||||
modelNode().setId(id);
|
modelNode().setIdWithRefactoring(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
QString QmlObjectNode::id() const
|
QString QmlObjectNode::id() const
|
||||||
|
|||||||
@@ -1243,14 +1243,14 @@ void TextToModelMerger::syncNodeId(ModelNode &modelNode, const QString &astObjec
|
|||||||
if (!modelNode.id().isEmpty()) {
|
if (!modelNode.id().isEmpty()) {
|
||||||
ModelNode existingNodeWithId = m_rewriterView->modelNodeForId(astObjectId);
|
ModelNode existingNodeWithId = m_rewriterView->modelNodeForId(astObjectId);
|
||||||
if (existingNodeWithId.isValid())
|
if (existingNodeWithId.isValid())
|
||||||
existingNodeWithId.setId(QString());
|
existingNodeWithId.setIdWithoutRefactoring(QString());
|
||||||
differenceHandler.idsDiffer(modelNode, astObjectId);
|
differenceHandler.idsDiffer(modelNode, astObjectId);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (modelNode.id() != astObjectId) {
|
if (modelNode.id() != astObjectId) {
|
||||||
ModelNode existingNodeWithId = m_rewriterView->modelNodeForId(astObjectId);
|
ModelNode existingNodeWithId = m_rewriterView->modelNodeForId(astObjectId);
|
||||||
if (existingNodeWithId.isValid())
|
if (existingNodeWithId.isValid())
|
||||||
existingNodeWithId.setId(QString());
|
existingNodeWithId.setIdWithoutRefactoring(QString());
|
||||||
differenceHandler.idsDiffer(modelNode, astObjectId);
|
differenceHandler.idsDiffer(modelNode, astObjectId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1809,7 +1809,7 @@ void ModelAmender::propertyAbsentFromQml(AbstractProperty &modelProperty)
|
|||||||
|
|
||||||
void ModelAmender::idsDiffer(ModelNode &modelNode, const QString &qmlId)
|
void ModelAmender::idsDiffer(ModelNode &modelNode, const QString &qmlId)
|
||||||
{
|
{
|
||||||
modelNode.setId(qmlId);
|
modelNode.setIdWithoutRefactoring(qmlId);
|
||||||
}
|
}
|
||||||
|
|
||||||
void TextToModelMerger::setupComponent(const ModelNode &node)
|
void TextToModelMerger::setupComponent(const ModelNode &node)
|
||||||
|
|||||||
Reference in New Issue
Block a user