aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--share/qtcreator/qmldesigner/effectComposerQmlSources/SaveAsDialog.qml8
-rw-r--r--src/plugins/effectcomposer/effectcomposermodel.cpp8
-rw-r--r--src/plugins/effectcomposer/effectcomposermodel.h1
3 files changed, 14 insertions, 3 deletions
diff --git a/share/qtcreator/qmldesigner/effectComposerQmlSources/SaveAsDialog.qml b/share/qtcreator/qmldesigner/effectComposerQmlSources/SaveAsDialog.qml
index d139ba92055..65b01be4573 100644
--- a/share/qtcreator/qmldesigner/effectComposerQmlSources/SaveAsDialog.qml
+++ b/share/qtcreator/qmldesigner/effectComposerQmlSources/SaveAsDialog.qml
@@ -50,11 +50,13 @@ StudioControls.Dialog {
if (/[^A-Za-z0-9_]+/.test(text))
errMsg = qsTr("Name contains invalid characters.")
else if (!/^[A-Z]/.test(text))
- errMsg = qsTr("Name must start with a capital letter")
+ errMsg = qsTr("Name must start with a capital letter.")
else if (text.length < 3)
- errMsg = qsTr("Name must have at least 3 characters")
+ errMsg = qsTr("Name must have at least 3 characters.")
else if (/\s/.test(text))
- errMsg = qsTr("Name cannot contain white space")
+ errMsg = qsTr("Name cannot contain white space.")
+ else if (EffectComposerBackend.effectComposerModel.nameExists(text))
+ errMsg = qsTr("Name is already taken.")
emptyText.text = errMsg
btnSave.enabled = errMsg.length === 0
diff --git a/src/plugins/effectcomposer/effectcomposermodel.cpp b/src/plugins/effectcomposer/effectcomposermodel.cpp
index 394b85aa552..606ca8e93e2 100644
--- a/src/plugins/effectcomposer/effectcomposermodel.cpp
+++ b/src/plugins/effectcomposer/effectcomposermodel.cpp
@@ -224,6 +224,14 @@ QString EffectComposerModel::getUniqueEffectName() const
return QString("Effect%1").arg(num, 2, 10, QChar('0'));
}
+bool EffectComposerModel::nameExists(const QString &name) const
+{
+ const QString effectsDir = QmlDesigner::ModelNodeOperations::getEffectsDefaultDirectory();
+ const QString path = effectsDir + QDir::separator() + "%1" + ".qep";
+
+ return QFile::exists(path.arg(name));
+}
+
QString EffectComposerModel::fragmentShader() const
{
return m_fragmentShader;
diff --git a/src/plugins/effectcomposer/effectcomposermodel.h b/src/plugins/effectcomposer/effectcomposermodel.h
index e92213d12a5..0c1b6355f9e 100644
--- a/src/plugins/effectcomposer/effectcomposermodel.h
+++ b/src/plugins/effectcomposer/effectcomposermodel.h
@@ -71,6 +71,7 @@ public:
Q_INVOKABLE void clear(bool clearName = false);
Q_INVOKABLE void assignToSelected();
Q_INVOKABLE QString getUniqueEffectName() const;
+ Q_INVOKABLE bool nameExists(const QString &name) const;
bool shadersUpToDate() const;
void setShadersUpToDate(bool newShadersUpToDate);