From 155296b0701c443afb6358c2e09557350e6aadab Mon Sep 17 00:00:00 2001 From: Christiaan Janssen <christiaan.janssen@nokia.com> Date: Fri, 5 Mar 2010 17:22:27 +0100 Subject: [PATCH] QmlDesigner.StatesEditor: Showing message box when wrong state name is entered --- .../components/stateseditor/stateseditormodel.cpp | 11 ++++++++--- .../components/stateseditor/stateslist.qml | 11 +++++++---- 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/src/plugins/qmldesigner/components/stateseditor/stateseditormodel.cpp b/src/plugins/qmldesigner/components/stateseditor/stateseditormodel.cpp index dc175078f41..5fef38fd6a6 100644 --- a/src/plugins/qmldesigner/components/stateseditor/stateseditormodel.cpp +++ b/src/plugins/qmldesigner/components/stateseditor/stateseditormodel.cpp @@ -31,6 +31,7 @@ #include "stateseditorview.h" #include <QtCore/QDebug> +#include <QMessageBox> enum { debug = false @@ -118,10 +119,14 @@ void StatesEditorModel::renameState(int i, const QString &newName) Q_ASSERT(i > 0 && i < m_stateNames.count()); if (m_stateNames[i] != newName) { - m_stateNames.replace(i, newName); - m_statesView->renameState(i,newName); + if (m_stateNames.contains(newName) || newName.isEmpty()) { + QMessageBox::warning(0, tr("Invalid state name"), newName.isEmpty()?tr("The empty string as a name is reserved for the base state."):tr("Name already used in another state")); + } else { + m_stateNames.replace(i, newName); + m_statesView->renameState(i,newName); - emit dataChanged(createIndex(i, 0), createIndex(i, 0)); + emit dataChanged(createIndex(i, 0), createIndex(i, 0)); + } } } diff --git a/src/plugins/qmldesigner/components/stateseditor/stateslist.qml b/src/plugins/qmldesigner/components/stateseditor/stateslist.qml index ca6585b2aac..af892cb4916 100644 --- a/src/plugins/qmldesigner/components/stateseditor/stateslist.qml +++ b/src/plugins/qmldesigner/components/stateseditor/stateslist.qml @@ -360,9 +360,10 @@ Rectangle { border.color:"#4f4f4f" radius:4 function unFocus() { - if (visible) + if (visible) { + visible=false; statesEditorModel.renameState(index,stateNameInput.text); - visible=false; + } } // There is no QFontMetrics equivalent in QML @@ -399,8 +400,10 @@ Rectangle { x = -cM; } onAccepted: { - statesEditorModel.renameState(index,text); - stateNameEditor.visible=false; + if (stateNameEditor.visible) { + stateNameEditor.visible=false; + statesEditorModel.renameState(index,text); + } } } } -- GitLab