mirror of
https://invent.kde.org/system/dolphin
synced 2024-09-19 16:31:21 +00:00
Implement renaming in dolphinpart.
No more rename action provided by konqueror, the part provides it now. Had to move a bit of code around in dolphin, as discussed with Peter. svn path=/trunk/KDE/kdebase/apps/; revision=737121
This commit is contained in:
parent
205bf2035d
commit
53d65e6392
|
@ -53,7 +53,6 @@
|
||||||
#include <kiconloader.h>
|
#include <kiconloader.h>
|
||||||
#include <kio/netaccess.h>
|
#include <kio/netaccess.h>
|
||||||
#include <kio/deletejob.h>
|
#include <kio/deletejob.h>
|
||||||
#include <kio/renamedialog.h>
|
|
||||||
#include <kinputdialog.h>
|
#include <kinputdialog.h>
|
||||||
#include <klocale.h>
|
#include <klocale.h>
|
||||||
#include <kmenu.h>
|
#include <kmenu.h>
|
||||||
|
@ -123,10 +122,9 @@ void DolphinMainWindow::toggleViews()
|
||||||
m_viewContainer[SecondaryView] = container;
|
m_viewContainer[SecondaryView] = container;
|
||||||
}
|
}
|
||||||
|
|
||||||
void DolphinMainWindow::rename(const KUrl& oldUrl, const KUrl& newUrl)
|
void DolphinMainWindow::slotRenaming()
|
||||||
{
|
{
|
||||||
clearStatusBar();
|
clearStatusBar();
|
||||||
KonqOperations::rename(this, oldUrl, newUrl);
|
|
||||||
m_undoCommandTypes.append(KonqFileUndoManager::RENAME);
|
m_undoCommandTypes.append(KonqFileUndoManager::RENAME);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -484,7 +482,7 @@ void DolphinMainWindow::updateNewMenu()
|
||||||
void DolphinMainWindow::rename()
|
void DolphinMainWindow::rename()
|
||||||
{
|
{
|
||||||
clearStatusBar();
|
clearStatusBar();
|
||||||
m_activeViewContainer->renameSelectedItems();
|
m_activeViewContainer->view()->renameSelectedItems();
|
||||||
}
|
}
|
||||||
|
|
||||||
void DolphinMainWindow::moveToTrash()
|
void DolphinMainWindow::moveToTrash()
|
||||||
|
@ -1460,7 +1458,7 @@ void DolphinMainWindow::updateEditActions()
|
||||||
|
|
||||||
QAction* renameAction = actionCollection()->action("rename");
|
QAction* renameAction = actionCollection()->action("rename");
|
||||||
if (renameAction != 0) {
|
if (renameAction != 0) {
|
||||||
renameAction->setEnabled(list.count() >= 1);
|
renameAction->setEnabled(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool enableMoveToTrash = true;
|
bool enableMoveToTrash = true;
|
||||||
|
@ -1583,6 +1581,8 @@ void DolphinMainWindow::connectViewSignals(int viewIndex)
|
||||||
this, SLOT(slotRequestItemInfo(KFileItem)));
|
this, SLOT(slotRequestItemInfo(KFileItem)));
|
||||||
connect(view, SIGNAL(activated()),
|
connect(view, SIGNAL(activated()),
|
||||||
this, SLOT(toggleActiveView()));
|
this, SLOT(toggleActiveView()));
|
||||||
|
connect(view, SIGNAL(renaming()),
|
||||||
|
this, SLOT(slotRenaming()));
|
||||||
|
|
||||||
const KUrlNavigator* navigator = container->urlNavigator();
|
const KUrlNavigator* navigator = container->urlNavigator();
|
||||||
connect(navigator, SIGNAL(urlChanged(const KUrl&)),
|
connect(navigator, SIGNAL(urlChanged(const KUrl&)),
|
||||||
|
|
|
@ -422,6 +422,9 @@ private slots:
|
||||||
/** Toggles the active view if two views are shown within the main window. */
|
/** Toggles the active view if two views are shown within the main window. */
|
||||||
void toggleActiveView();
|
void toggleActiveView();
|
||||||
|
|
||||||
|
/** Called when the view is renaming a file. */
|
||||||
|
void slotRenaming();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
DolphinMainWindow(int id);
|
DolphinMainWindow(int id);
|
||||||
void init();
|
void init();
|
||||||
|
|
|
@ -78,14 +78,18 @@ DolphinPart::DolphinPart(QWidget* parentWidget, QObject* parent, const QStringLi
|
||||||
this, SLOT(slotErrorMessage(QString)));
|
this, SLOT(slotErrorMessage(QString)));
|
||||||
connect(m_view, SIGNAL(itemTriggered(KFileItem)),
|
connect(m_view, SIGNAL(itemTriggered(KFileItem)),
|
||||||
this, SLOT(slotItemTriggered(KFileItem)));
|
this, SLOT(slotItemTriggered(KFileItem)));
|
||||||
connect(m_view, SIGNAL(requestContextMenu(KFileItem, const KUrl&)),
|
connect(m_view, SIGNAL(requestContextMenu(KFileItem,KUrl)),
|
||||||
this, SLOT(slotOpenContextMenu(KFileItem, const KUrl&)));
|
this, SLOT(slotOpenContextMenu(KFileItem,KUrl)));
|
||||||
connect(m_view, SIGNAL(selectionChanged(KFileItemList)),
|
connect(m_view, SIGNAL(selectionChanged(KFileItemList)),
|
||||||
m_extension, SIGNAL(selectionInfo(KFileItemList)));
|
m_extension, SIGNAL(selectionInfo(KFileItemList)));
|
||||||
|
connect(m_view, SIGNAL(selectionChanged(KFileItemList)),
|
||||||
|
this, SLOT(slotSelectionChanged(KFileItemList)));
|
||||||
connect(m_view, SIGNAL(requestItemInfo(KFileItem)),
|
connect(m_view, SIGNAL(requestItemInfo(KFileItem)),
|
||||||
this, SLOT(slotRequestItemInfo(KFileItem)));
|
this, SLOT(slotRequestItemInfo(KFileItem)));
|
||||||
connect(m_view, SIGNAL(urlChanged(const KUrl&)),
|
connect(m_view, SIGNAL(urlChanged(KUrl)),
|
||||||
this, SLOT(slotUrlChanged(const KUrl&)));
|
this, SLOT(slotUrlChanged(KUrl)));
|
||||||
|
connect(m_view, SIGNAL(modeChanged()),
|
||||||
|
this, SLOT(updateViewActions()));
|
||||||
|
|
||||||
createActions();
|
createActions();
|
||||||
updateViewActions();
|
updateViewActions();
|
||||||
|
@ -122,6 +126,27 @@ void DolphinPart::createActions()
|
||||||
viewModeActions->addAction(DolphinView::detailsModeAction(actionCollection()));
|
viewModeActions->addAction(DolphinView::detailsModeAction(actionCollection()));
|
||||||
viewModeActions->addAction(DolphinView::columnsModeAction(actionCollection()));
|
viewModeActions->addAction(DolphinView::columnsModeAction(actionCollection()));
|
||||||
connect(viewModeActions, SIGNAL(triggered(QAction*)), this, SLOT(slotViewModeActionTriggered(QAction*)));
|
connect(viewModeActions, SIGNAL(triggered(QAction*)), this, SLOT(slotViewModeActionTriggered(QAction*)));
|
||||||
|
|
||||||
|
KAction* renameAction = new KAction(i18nc("@action:inmenu", "Rename..."), this);
|
||||||
|
connect(renameAction, SIGNAL(triggered()), m_view, SLOT(renameSelectedItems()));
|
||||||
|
renameAction->setShortcut(Qt::Key_F2);
|
||||||
|
actionCollection()->addAction("rename", renameAction);
|
||||||
|
}
|
||||||
|
|
||||||
|
void DolphinPart::slotSelectionChanged(const KFileItemList& selection)
|
||||||
|
{
|
||||||
|
// Yes, DolphinMainWindow has very similar code :/
|
||||||
|
if (selection.isEmpty()) {
|
||||||
|
stateChanged("has_no_selection");
|
||||||
|
} else {
|
||||||
|
stateChanged("has_selection");
|
||||||
|
|
||||||
|
QAction* renameAction = actionCollection()->action("rename");
|
||||||
|
Q_ASSERT(renameAction);
|
||||||
|
if (renameAction) {
|
||||||
|
renameAction->setEnabled(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void DolphinPart::updateViewActions()
|
void DolphinPart::updateViewActions()
|
||||||
|
@ -218,8 +243,18 @@ void DolphinPart::slotOpenContextMenu(const KFileItem& _item, const KUrl&)
|
||||||
item = KFileItem( S_IFDIR, (mode_t)-1, url() );
|
item = KFileItem( S_IFDIR, (mode_t)-1, url() );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
KParts::BrowserExtension::ActionGroupMap actionGroups;
|
||||||
|
QList<QAction *> editActions;
|
||||||
|
editActions.append(actionCollection()->action("rename"));
|
||||||
|
actionGroups.insert("editactions", editActions);
|
||||||
|
|
||||||
KFileItemList items; items.append(item);
|
KFileItemList items; items.append(item);
|
||||||
emit m_extension->popupMenu( QCursor::pos(), items, KParts::OpenUrlArguments(), KParts::BrowserArguments(), popupFlags );
|
emit m_extension->popupMenu(QCursor::pos(),
|
||||||
|
items,
|
||||||
|
KParts::OpenUrlArguments(),
|
||||||
|
KParts::BrowserArguments(),
|
||||||
|
popupFlags,
|
||||||
|
actionGroups);
|
||||||
}
|
}
|
||||||
|
|
||||||
void DolphinPart::slotViewModeActionTriggered(QAction* action)
|
void DolphinPart::slotViewModeActionTriggered(QAction* action)
|
||||||
|
|
|
@ -21,6 +21,7 @@
|
||||||
#define DOLPHINPART_H
|
#define DOLPHINPART_H
|
||||||
|
|
||||||
#include <kparts/part.h>
|
#include <kparts/part.h>
|
||||||
|
class KFileItemList;
|
||||||
class KFileItem;
|
class KFileItem;
|
||||||
class DolphinPartBrowserExtension;
|
class DolphinPartBrowserExtension;
|
||||||
class DolphinSortFilterProxyModel;
|
class DolphinSortFilterProxyModel;
|
||||||
|
@ -77,9 +78,19 @@ private Q_SLOTS:
|
||||||
*/
|
*/
|
||||||
void slotUrlChanged(const KUrl& url);
|
void slotUrlChanged(const KUrl& url);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Updates the state of the 'Edit' menu actions and emits
|
||||||
|
* the signal selectionChanged().
|
||||||
|
*/
|
||||||
|
void slotSelectionChanged(const KFileItemList& selection);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Same as in DolphinMainWindow: updates the view menu actions
|
||||||
|
*/
|
||||||
|
void updateViewActions();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void createActions();
|
void createActions();
|
||||||
void updateViewActions();
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
DolphinView* m_view;
|
DolphinView* m_view;
|
||||||
|
@ -90,6 +101,4 @@ private:
|
||||||
Q_DISABLE_COPY(DolphinPart)
|
Q_DISABLE_COPY(DolphinPart)
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
#endif /* DOLPHINPART_H */
|
#endif /* DOLPHINPART_H */
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,10 @@
|
||||||
<!DOCTYPE kpartgui SYSTEM "kpartgui.dtd">
|
<!DOCTYPE kpartgui SYSTEM "kpartgui.dtd">
|
||||||
<kpartgui version="3" name="dolphinpart" >
|
<kpartgui name="dolphinpart" version="4" >
|
||||||
<MenuBar>
|
<MenuBar>
|
||||||
<Menu name="edit">
|
<Menu name="edit">
|
||||||
|
<!-- TODO cut, copy, paste -->
|
||||||
|
<Action name="rename"/>
|
||||||
|
<!-- TODO trash, del -->
|
||||||
<Action name="select_all" />
|
<Action name="select_all" />
|
||||||
<Action name="invert_selection" />
|
<Action name="invert_selection" />
|
||||||
</Menu>
|
</Menu>
|
||||||
|
@ -46,4 +49,23 @@
|
||||||
<Action name="details" />
|
<Action name="details" />
|
||||||
<Action name="columns" />
|
<Action name="columns" />
|
||||||
</ToolBar>
|
</ToolBar>
|
||||||
|
<State name="has_selection" >
|
||||||
|
<enable>
|
||||||
|
<Action name="edit_cut" />
|
||||||
|
<Action name="edit_copy" />
|
||||||
|
<Action name="move_to_trash" />
|
||||||
|
<Action name="delete" />
|
||||||
|
<Action name="properties" />
|
||||||
|
</enable>
|
||||||
|
</State>
|
||||||
|
<State name="has_no_selection" >
|
||||||
|
<disable>
|
||||||
|
<Action name="edit_cut" />
|
||||||
|
<Action name="edit_copy" />
|
||||||
|
<Action name="rename" />
|
||||||
|
<Action name="move_to_trash" />
|
||||||
|
<Action name="delete" />
|
||||||
|
<Action name="properties" />
|
||||||
|
</disable>
|
||||||
|
</State>
|
||||||
</kpartgui>
|
</kpartgui>
|
||||||
|
|
|
@ -36,7 +36,6 @@
|
||||||
#include <klocale.h>
|
#include <klocale.h>
|
||||||
#include <kiconeffect.h>
|
#include <kiconeffect.h>
|
||||||
#include <kio/netaccess.h>
|
#include <kio/netaccess.h>
|
||||||
#include <kio/renamedialog.h>
|
|
||||||
#include <kio/previewjob.h>
|
#include <kio/previewjob.h>
|
||||||
#include <kmimetyperesolver.h>
|
#include <kmimetyperesolver.h>
|
||||||
#include <konqmimedata.h>
|
#include <konqmimedata.h>
|
||||||
|
@ -998,4 +997,73 @@ QString DolphinView::currentViewModeActionName() const
|
||||||
return QString(); // can't happen
|
return QString(); // can't happen
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void DolphinView::renameSelectedItems()
|
||||||
|
{
|
||||||
|
const KFileItemList items = 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(this, items);
|
||||||
|
if (dialog.exec() == QDialog::Rejected) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const QString newName = dialog.newName();
|
||||||
|
if (newName.isEmpty()) {
|
||||||
|
emit errorMessage(dialog.errorString());
|
||||||
|
} else {
|
||||||
|
// TODO: check how this can be integrated into KonqFileUndoManager/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;
|
||||||
|
|
||||||
|
KFileItemList::const_iterator it = items.begin();
|
||||||
|
const KFileItemList::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);
|
||||||
|
KonqOperations::rename(this, oldUrl, newUrl);
|
||||||
|
emit renaming();
|
||||||
|
}
|
||||||
|
++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(this, items);
|
||||||
|
if (dialog.exec() == QDialog::Rejected) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const QString& newName = dialog.newName();
|
||||||
|
if (newName.isEmpty()) {
|
||||||
|
emit errorMessage(dialog.errorString());
|
||||||
|
} else {
|
||||||
|
const KUrl& oldUrl = items.first().url();
|
||||||
|
KUrl newUrl = oldUrl;
|
||||||
|
newUrl.setFileName(newName);
|
||||||
|
KonqOperations::rename(this, oldUrl, newUrl);
|
||||||
|
emit renaming();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#include "dolphinview.moc"
|
#include "dolphinview.moc"
|
||||||
|
|
|
@ -358,6 +358,11 @@ public slots:
|
||||||
*/
|
*/
|
||||||
void changeSelection(const KFileItemList& selection);
|
void changeSelection(const KFileItemList& selection);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Triggers the renaming of the currently selected items, where
|
||||||
|
* the user must input a new name for the items.
|
||||||
|
*/
|
||||||
|
void renameSelectedItems();
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
/**
|
/**
|
||||||
|
@ -446,6 +451,12 @@ signals:
|
||||||
*/
|
*/
|
||||||
void startedPathLoading(const KUrl& url);
|
void startedPathLoading(const KUrl& url);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Is emitted when renaming one or more items.
|
||||||
|
* Used for feedback in the mainwindow.
|
||||||
|
*/
|
||||||
|
void renaming();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
/** @see QWidget::mouseReleaseEvent */
|
/** @see QWidget::mouseReleaseEvent */
|
||||||
virtual void mouseReleaseEvent(QMouseEvent* event);
|
virtual void mouseReleaseEvent(QMouseEvent* event);
|
||||||
|
|
|
@ -33,7 +33,6 @@
|
||||||
#include <klocale.h>
|
#include <klocale.h>
|
||||||
#include <kiconeffect.h>
|
#include <kiconeffect.h>
|
||||||
#include <kio/netaccess.h>
|
#include <kio/netaccess.h>
|
||||||
#include <kio/renamedialog.h>
|
|
||||||
#include <kio/previewjob.h>
|
#include <kio/previewjob.h>
|
||||||
#include <kmimetyperesolver.h>
|
#include <kmimetyperesolver.h>
|
||||||
#include <konqmimedata.h>
|
#include <konqmimedata.h>
|
||||||
|
@ -51,7 +50,6 @@
|
||||||
#include "dolphiniconsview.h"
|
#include "dolphiniconsview.h"
|
||||||
#include "dolphincontextmenu.h"
|
#include "dolphincontextmenu.h"
|
||||||
#include "filterbar.h"
|
#include "filterbar.h"
|
||||||
#include "renamedialog.h"
|
|
||||||
#include "kurlnavigator.h"
|
#include "kurlnavigator.h"
|
||||||
#include "viewproperties.h"
|
#include "viewproperties.h"
|
||||||
#include "dolphinsettings.h"
|
#include "dolphinsettings.h"
|
||||||
|
@ -184,76 +182,6 @@ bool DolphinViewContainer::isActive() const
|
||||||
return m_view->isActive();
|
return m_view->isActive();
|
||||||
}
|
}
|
||||||
|
|
||||||
void DolphinViewContainer::renameSelectedItems()
|
|
||||||
{
|
|
||||||
DolphinViewContainer* view = m_mainWindow->activeViewContainer();
|
|
||||||
const KFileItemList 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(this, 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 KonqFileUndoManager/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;
|
|
||||||
|
|
||||||
KFileItemList::const_iterator it = items.begin();
|
|
||||||
KFileItemList::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(this, 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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
bool DolphinViewContainer::isFilterBarVisible() const
|
bool DolphinViewContainer::isFilterBarVisible() const
|
||||||
{
|
{
|
||||||
return m_filterBar->isVisible();
|
return m_filterBar->isVisible();
|
||||||
|
|
|
@ -90,12 +90,6 @@ public:
|
||||||
void setActive(bool active);
|
void setActive(bool active);
|
||||||
bool isActive() const;
|
bool isActive() const;
|
||||||
|
|
||||||
/**
|
|
||||||
* Triggers the renaming of the currently selected items, where
|
|
||||||
* the user must input a new name for the items.
|
|
||||||
*/
|
|
||||||
void renameSelectedItems();
|
|
||||||
|
|
||||||
KFileItem fileItem(const QModelIndex& index) const;
|
KFileItem fileItem(const QModelIndex& index) const;
|
||||||
|
|
||||||
const DolphinStatusBar* statusBar() const;
|
const DolphinStatusBar* statusBar() const;
|
||||||
|
|
Loading…
Reference in a new issue