-void DolphinViewContainer::renameSelectedItems()
-{
- DolphinViewContainer* view = m_mainWindow->activeViewContainer();
- const QList<KFileItem> items = m_view->selectedItems();
- if (items.count() > 1) {
- // More than one item has been selected for renaming. Open
- // a rename dialog and rename all items afterwards.
- RenameDialog dialog(items);
- if (dialog.exec() == QDialog::Rejected) {
- return;
- }
-
- const QString& newName = dialog.newName();
- if (newName.isEmpty()) {
- view->statusBar()->setMessage(dialog.errorString(),
- DolphinStatusBar::Error);
- } else {
- // TODO: check how this can be integrated into KonqUndoManager/KonqOperations
- // as one operation instead of n rename operations like it is done now...
- Q_ASSERT(newName.contains('#'));
-
- // iterate through all selected items and rename them...
- const int replaceIndex = newName.indexOf('#');
- Q_ASSERT(replaceIndex >= 0);
- int index = 1;
-
- QList<KFileItem>::const_iterator it = items.begin();
- QList<KFileItem>::const_iterator end = items.end();
- while (it != end) {
- const KUrl& oldUrl = (*it).url();
- QString number;
- number.setNum(index++);
-
- QString name(newName);
- name.replace(replaceIndex, 1, number);
-
- if (oldUrl.fileName() != name) {
- KUrl newUrl = oldUrl;
- newUrl.setFileName(name);
- m_mainWindow->rename(oldUrl, newUrl);
- }
- ++it;
- }
- }
- } else {
- // Only one item has been selected for renaming. Use the custom
- // renaming mechanism from the views.
- Q_ASSERT(items.count() == 1);
-
- // TODO: Think about using KFileItemDelegate as soon as it supports editing.
- // Currently the RenameDialog is used, but I'm not sure whether inline renaming
- // is a benefit for the user at all -> let's wait for some input first...
- RenameDialog dialog(items);
- if (dialog.exec() == QDialog::Rejected) {
- return;
- }
-
- const QString& newName = dialog.newName();
- if (newName.isEmpty()) {
- view->statusBar()->setMessage(dialog.errorString(),
- DolphinStatusBar::Error);
- } else {
- const KUrl& oldUrl = items.first().url();
- KUrl newUrl = oldUrl;
- newUrl.setFileName(newName);
- m_mainWindow->rename(oldUrl, newUrl);
- }
- }
-}
-