#include <konq_operations.h>
#include <KStringHandler>
#include <knuminput.h>
+#include <kmimetype.h>
#include <QHBoxLayout>
#include <QLabel>
m_newName = items.first().name();
editLabel = new QLabel(i18nc("@label:textbox", "Rename the item <filename>%1</filename> to:", m_newName),
page);
+ editLabel->setTextFormat(Qt::PlainText);
} else {
m_newName = i18nc("@info:status", "New name #");
editLabel = new QLabel(i18ncp("@label:textbox",
if (m_renameOneItem) {
const QString fileName = items.first().url().prettyUrl();
const QString extension = KMimeType::extractKnownExtension(fileName.toLower());
- if (extension.length() > 0) {
+
+ // If the current item is a directory, select the whole file name.
+ if ((extension.length() > 0) && !items.first().isDir()) {
// Don't select the extension
selectionLength -= extension.length() + 1;
}
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);
}
void RenameDialog::renameItems()
{
- // Currently the items are sorted by the selection order, resort
- // them by the filename. This assures that the new sort order is similar to
- // the current filename sort order.
- qSort(m_items.begin(), m_items.end(), lessThan);
-
// Iterate through all items and rename them...
int index = m_spinBox->value();
foreach (const KFileItem& item, m_items) {