mirror of
https://invent.kde.org/system/dolphin
synced 2024-09-17 15:31:20 +00:00
Rename multiple files: Determine correctly if the name pattern is valid
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
This commit is contained in:
parent
8f4d13dab8
commit
a70fd06124
|
@ -147,16 +147,10 @@ void RenameDialog::slotTextChanged(const QString& newName)
|
||||||
bool enable = !newName.isEmpty() && (newName != QLatin1String("..")) && (newName != QLatin1String("."));
|
bool enable = !newName.isEmpty() && (newName != QLatin1String("..")) && (newName != QLatin1String("."));
|
||||||
if (enable && !m_renameOneItem) {
|
if (enable && !m_renameOneItem) {
|
||||||
// Assure that the new name contains exactly one # (or a connected sequence of #'s)
|
// Assure that the new name contains exactly one # (or a connected sequence of #'s)
|
||||||
const int minSplitCount = 1;
|
const int count = newName.count(QLatin1Char('#'));
|
||||||
int maxSplitCount = 2;
|
const int first = newName.indexOf(QLatin1Char('#'));
|
||||||
if (newName.startsWith(QLatin1Char('#'))) {
|
const int last = newName.lastIndexOf(QLatin1Char('#'));
|
||||||
--maxSplitCount;
|
enable = (last - first + 1 == count);
|
||||||
}
|
|
||||||
if (newName.endsWith(QLatin1Char('#'))) {
|
|
||||||
--maxSplitCount;
|
|
||||||
}
|
|
||||||
const int splitCount = newName.split(QLatin1Char('#'), QString::SkipEmptyParts).count();
|
|
||||||
enable = enable && (splitCount >= minSplitCount) && (splitCount <= maxSplitCount);
|
|
||||||
}
|
}
|
||||||
enableButtonOk(enable);
|
enableButtonOk(enable);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue