]> cloud.milkyroute.net Git - dolphin.git/commitdiff
Rename multiple files: Determine correctly if the name pattern is valid
authorFrank Reininghaus <frank78ac@googlemail.com>
Thu, 2 May 2013 17:23:19 +0000 (19:23 +0200)
committerFrank Reininghaus <frank78ac@googlemail.com>
Thu, 2 May 2013 17:23:38 +0000 (19:23 +0200)
The "Rename" button in the dialog should be enabled if and only if the
"new name" pattern is valid. This is the case if the pattern contains
exactly one sequence of '#', which will be replaced by digits.

This patch fixes the problem that
(a) A pattern that contains a single '#' is not considered valid, and
(b) A pattern without any '#' at all is not recognized as invalid.

BUG: 318942
FIXED-IN: 4.10.3
REVIEW: 110223

src/views/renamedialog.cpp

index 07add113a43379bff439f6669a6f4a031f64c4ea..a16bb953cb90bfbceee6a3de69327c7ab73cd268 100644 (file)
@@ -147,16 +147,10 @@ void RenameDialog::slotTextChanged(const QString& newName)
     bool enable = !newName.isEmpty() && (newName != QLatin1String("..")) && (newName != QLatin1String("."));
     if (enable && !m_renameOneItem) {
         // Assure that the new name contains exactly one # (or a connected sequence of #'s)
-        const int minSplitCount = 1;
-        int maxSplitCount = 2;
-        if (newName.startsWith(QLatin1Char('#'))) {
-            --maxSplitCount;
-        }
-        if (newName.endsWith(QLatin1Char('#'))) {
-            --maxSplitCount;
-        }
-        const int splitCount = newName.split(QLatin1Char('#'), QString::SkipEmptyParts).count();
-        enable = enable && (splitCount >= minSplitCount) && (splitCount <= maxSplitCount);
+        const int count = newName.count(QLatin1Char('#'));
+        const int first = newName.indexOf(QLatin1Char('#'));
+        const int last = newName.lastIndexOf(QLatin1Char('#'));
+        enable = (last - first + 1 == count);
     }
     enableButtonOk(enable);
 }