#include <KLocale>
#include <konq_operations.h>
#include <KStringHandler>
+#include <knuminput.h>
+#include <kmimetype.h>
+#include <QHBoxLayout>
#include <QLabel>
#include <QVBoxLayout>
m_renameOneItem(false),
m_newName(),
m_lineEdit(0),
- m_items(items)
+ m_items(items),
+ m_spinBox(0)
{
const QSize minSize = minimumSize();
setMinimumSize(QSize(320, minSize.height()));
m_lineEdit = new KLineEdit(page);
connect(m_lineEdit, SIGNAL(textChanged(QString)), this, SLOT(slotTextChanged(QString)));
- QString fileName = items[0].url().prettyUrl();
- QString extension = KMimeType::extractKnownExtension(fileName.toLower());
- if (!extension.isEmpty()) {
- extension.insert(0, '.');
- // The first item seems to have a extension (e. g. '.jpg' or '.txt'). Now
- // check whether all other URLs have the same extension. If this is the
- // case, add this extension to the name suggestion.
- for (int i = 1; i < itemCount; ++i) {
- fileName = items[i].url().prettyUrl().toLower();
- if (!fileName.endsWith(extension)) {
- // at least one item does not have the same extension
- extension.truncate(0);
- break;
- }
- }
- }
-
int selectionLength = m_newName.length();
- if (!m_renameOneItem) {
- --selectionLength; // don't select the # character
- }
-
- const int extensionLength = extension.length();
- if (extensionLength > 0) {
- if (m_renameOneItem) {
- selectionLength -= extensionLength;
- } else {
- m_newName.append(extension);
+ if (m_renameOneItem) {
+ const QString fileName = items.first().url().prettyUrl();
+ const QString extension = KMimeType::extractKnownExtension(fileName.toLower());
+ if (extension.length() > 0) {
+ // Don't select the extension
+ selectionLength -= extension.length() + 1;
}
+ } else {
+ // Don't select the # character
+ --selectionLength;
}
m_lineEdit->setText(m_newName);
topLayout->addWidget(m_lineEdit);
if (!m_renameOneItem) {
- QLabel* infoLabel = new QLabel(i18nc("@info", "(# will be replaced by ascending numbers)"), page);
- topLayout->addWidget(infoLabel);
+ 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);
+
+ QHBoxLayout* horizontalLayout = new QHBoxLayout(page);
+ horizontalLayout->setMargin(0);
+ horizontalLayout->addWidget(infoLabel);
+ horizontalLayout->addWidget(m_spinBox);
+
+ topLayout->addLayout(horizontalLayout);
}
}
void RenameDialog::slotTextChanged(const QString& newName)
{
bool enable = !newName.isEmpty() && (newName != QLatin1String("..")) && (newName != QLatin1String("."));
- if (enable) {
- if (m_renameOneItem) {
- enable = enable && (newName != m_newName);
- } else {
- // 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);
+ 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);
}
enableButtonOk(enable);
}
qSort(m_items.begin(), m_items.end(), lessThan);
// Iterate through all items and rename them...
- int index = 1;
+ int index = m_spinBox->value();
foreach (const KFileItem& item, m_items) {
- const QString newName = indexedName(m_newName, index, QLatin1Char('#'));
+ QString newName = indexedName(m_newName, index, QLatin1Char('#'));
++index;
const KUrl oldUrl = item.url();
+ const QString extension = KMimeType::extractKnownExtension(oldUrl.prettyUrl().toLower());
+ if (!extension.isEmpty()) {
+ newName.append(QLatin1Char('.'));
+ newName.append(extension);
+ }
+
if (oldUrl.fileName() != newName) {
KUrl newUrl = oldUrl;
newUrl.setFileName(KIO::encodeFileName(newName));