X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/fa988586bc923b33497cbc97aaac07fc93a4ca83..d094c8ffe64d226d5afef50693a3bb04b360ed7b:/src/dolphincontextmenu.cpp diff --git a/src/dolphincontextmenu.cpp b/src/dolphincontextmenu.cpp index cb389b19c..0830d4b8b 100644 --- a/src/dolphincontextmenu.cpp +++ b/src/dolphincontextmenu.cpp @@ -27,8 +27,7 @@ #include "dolphinremoveaction.h" #include -#include -#include +#include #include #include #include @@ -38,7 +37,6 @@ #include #include #include -#include #include #include #include @@ -46,6 +44,7 @@ #include #include +#include #include #include @@ -287,8 +286,9 @@ void DolphinContextMenu::openItemContextMenu() // insert 'Copy To' and 'Move To' sub menus if (GeneralSettings::showCopyMoveMenu()) { - m_copyToMenu.setItems(m_selectedItems); + m_copyToMenu.setUrls(m_selectedItems.urlList()); m_copyToMenu.setReadOnly(!selectedItemsProps.supportsWriting()); + m_copyToMenu.setAutoErrorHandlingEnabled(true); m_copyToMenu.addActionsTo(this); } @@ -305,6 +305,7 @@ void DolphinContextMenu::openItemContextMenu() const QString text = selectedUrl.fileName(); PlacesItem* item = model.createPlacesItem(text, selectedUrl); model.appendItemToGroup(item); + model.saveBookmarks(); } } else if (activatedAction == openParentAction) { m_command = OpenParentFolder; @@ -370,6 +371,7 @@ void DolphinContextMenu::openViewportContextMenu() PlacesItem* item = model.createPlacesItem(container->placesText(), container->url()); model.appendItemToGroup(item); + model.saveBookmarks(); } } } @@ -425,16 +427,11 @@ void DolphinContextMenu::addShowMenuBarAction() bool DolphinContextMenu::placeExists(const QUrl& url) const { - PlacesItemModel model; - - const int count = model.count(); - for (int i = 0; i < count; ++i) { - const QUrl placeUrl = model.placesItem(i)->url(); - if (placeUrl.matches(url, QUrl::StripTrailingSlash)) { - return true; - } - } - + // Creating up a PlacesItemModel to find out if 'url' is one of the Places + // can be expensive because the model asks Solid for the devices which are + // available, which can take some time. + // TODO: Consider restoring this check if the handling of Places and devices + // will be decoupled in the future. return false; } @@ -467,7 +464,7 @@ KFileItemListProperties& DolphinContextMenu::selectedItemsProperties() const KFileItem DolphinContextMenu::baseFileItem() { if (!m_baseFileItem) { - m_baseFileItem = new KFileItem(KFileItem::Unknown, KFileItem::Unknown, m_baseUrl); + m_baseFileItem = new KFileItem(m_baseUrl); } return *m_baseFileItem; } @@ -511,13 +508,6 @@ void DolphinContextMenu::addFileItemPluginActions() continue; } - // Old API (kdelibs-4.6.0 only) - KFileItemActionPlugin* plugin = service->createInstance(); - if (plugin) { - plugin->setParent(this); - addActions(plugin->actions(props, m_mainWindow)); - } - // New API (kdelibs >= 4.6.1) KAbstractFileItemActionPlugin* abstractPlugin = service->createInstance(); if (abstractPlugin) { abstractPlugin->setParent(this); @@ -531,17 +521,13 @@ void DolphinContextMenu::addVersionControlPluginActions() const DolphinView* view = m_mainWindow->activeViewContainer()->view(); const QList versionControlActions = view->versionControlActions(m_selectedItems); if (!versionControlActions.isEmpty()) { - foreach (QAction* action, versionControlActions) { - addAction(action); - } + addActions(versionControlActions); addSeparator(); } } void DolphinContextMenu::addCustomActions() { - foreach (QAction* action, m_customActions) { - addAction(action); - } + addActions(m_customActions); }