this, &DolphinView::slotRoleEditingFinished);
} else {
RenameDialog* dialog = new RenameDialog(this, items);
+
+ connect(dialog, &RenameDialog::renamingFinished, this, &DolphinView::slotRenameDialogRenamingFinished);
+
dialog->setAttribute(Qt::WA_DeleteOnClose);
dialog->show();
dialog->raise();
void DolphinView::observeCreatedItem(const QUrl& url)
{
if (m_active) {
- clearSelection();
- markUrlAsCurrent(url);
- markUrlsAsSelected({url});
+ forceUrlsSelection(url, {url});
}
}
KIO::FileUndoManager::self()->recordJob(KIO::FileUndoManager::Rename, {oldUrl}, newUrl, job);
job->uiDelegate()->setAutoErrorHandlingEnabled(true);
+ forceUrlsSelection(newUrl, {newUrl});
+
if (!newNameExistsAlready) {
// Only connect the result signal if there is no item with the new name
// in the model yet, see bug 328262.
url.setPath(m_viewPropertiesContext);
return url;
}
+
+void DolphinView::slotRenameDialogRenamingFinished(const QList<QUrl>& urls)
+{
+ forceUrlsSelection(urls.first(), urls);
+}
+
+void DolphinView::forceUrlsSelection(const QUrl& current, const QList<QUrl>& selected)
+{
+ clearSelection();
+ m_clearSelectionBeforeSelectingNewItems = true;
+ markUrlAsCurrent(current);
+ markUrlsAsSelected(selected);
+}
void slotItemDropEvent(int index, QGraphicsSceneDragDropEvent* event);
void slotModelChanged(KItemModelBase* current, KItemModelBase* previous);
void slotMouseButtonPressed(int itemIndex, Qt::MouseButtons buttons);
+ void slotRenameDialogRenamingFinished(const QList<QUrl>& urls);
/*
* Is called when new items get pasted or dropped.
*/
QUrl viewPropertiesUrl() const;
+ /**
+ * Clears the selection and updates current item and selection according to the parameters
+ *
+ * @param current URL to be set as current
+ * @param selected list of selected items
+ */
+ void forceUrlsSelection(const QUrl& current, const QList<QUrl>& selected);
+
private:
void updatePalette();
KIO::Job * job = KIO::moveAs(oldUrl, newUrl, KIO::HideProgressInfo);
KJobWidgets::setWindow(job, widget);
KIO::FileUndoManager::self()->recordJob(KIO::FileUndoManager::Rename, {oldUrl}, newUrl, job);
+
+ if (!job->error()) {
+ m_renamedItems << newUrl;
+ }
+
job->uiDelegate()->setAutoErrorHandlingEnabled(true);
}
renameItem(item, newName);
}
}
+
+ if (!m_items.empty()) {
+ emit renamingFinished(m_renamedItems);
+ }
}
QString RenameDialog::indexedName(const QString& name, int index, const QChar& indexPlaceHolder)
explicit RenameDialog(QWidget* parent, const KFileItemList& items);
virtual ~RenameDialog();
+signals:
+ void renamingFinished(const QList<QUrl>& urls);
+
private slots:
void slotAccepted();
void slotTextChanged(const QString& newName);
private:
bool m_renameOneItem;
+ QList<QUrl> m_renamedItems;
QString m_newName;
QLineEdit* m_lineEdit;
KFileItemList m_items;