From: Frank Reininghaus Date: Thu, 20 Jun 2013 17:37:53 +0000 (+0200) Subject: Allow renaming multiple files without number if extensions are different X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/commitdiff_plain/e8c4d19b7c8d1881dae2a28b1ff7202683648ceb?ds=sidebyside Allow renaming multiple files without number if extensions are different Normally, we only allow renaming multiple files if the new file name contains a contiguous sequence of '#' placeholders, which are then replaced by numbers. However, if all extensions are different, we can also rename the files without such a placeholder because the original extension is preserved when renaming. This had been possible some time ago already. That this "accidental feature" was lost was a side effect of the fix for bug 318942. BUG: 321234 FIXED-IN: 4.10.5 REVIEW: 111079 --- diff --git a/src/views/renamedialog.cpp b/src/views/renamedialog.cpp index a16bb953c..abb37b897 100644 --- a/src/views/renamedialog.cpp +++ b/src/views/renamedialog.cpp @@ -45,6 +45,7 @@ RenameDialog::RenameDialog(QWidget *parent, const KFileItemList& items) : m_newName(), m_lineEdit(0), m_items(items), + m_allExtensionsDifferent(true), m_spinBox(0) { const QSize minSize = minimumSize(); @@ -107,6 +108,18 @@ RenameDialog::RenameDialog(QWidget *parent, const KFileItemList& items) : topLayout->addWidget(m_lineEdit); if (!m_renameOneItem) { + QSet extensions; + foreach (const KFileItem& item, m_items) { + const QString extension = KMimeType::extractKnownExtension(item.url().prettyUrl().toLower()); + + if (extensions.contains(extension)) { + m_allExtensionsDifferent = false; + break; + } + + extensions.insert(extension); + } + QLabel* infoLabel = new QLabel(i18nc("@info", "# will be replaced by ascending numbers starting with:"), page); m_spinBox = new KIntSpinBox(0, 10000, 1, 1, page, 10); @@ -146,11 +159,16 @@ 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 count = newName.count(QLatin1Char('#')); - const int first = newName.indexOf(QLatin1Char('#')); - const int last = newName.lastIndexOf(QLatin1Char('#')); - enable = (last - first + 1 == count); + if (count == 0) { + // Renaming multiple files without '#' will only work if all extensions are different. + enable = m_allExtensionsDifferent; + } else { + // Assure that the new name contains exactly one # (or a connected sequence of #'s) + const int first = newName.indexOf(QLatin1Char('#')); + const int last = newName.lastIndexOf(QLatin1Char('#')); + enable = (last - first + 1 == count); + } } enableButtonOk(enable); } diff --git a/src/views/renamedialog.h b/src/views/renamedialog.h index 18dca3617..29ef8bdf1 100644 --- a/src/views/renamedialog.h +++ b/src/views/renamedialog.h @@ -64,6 +64,7 @@ private: QString m_newName; KLineEdit* m_lineEdit; KFileItemList m_items; + bool m_allExtensionsDifferent; KIntSpinBox* m_spinBox; };