#include "dolphinmainwindow.h"
#include "dolphinnewfilemenu.h"
-#include "settings/dolphinsettings.h"
#include "dolphinviewcontainer.h"
#include "dolphin_generalsettings.h"
#include <kabstractfileitemactionplugin.h>
#include <KFileItemActions>
#include <KFileItemListProperties>
-#include <KFilePlacesModel>
#include <KGlobal>
#include <KIconLoader>
#include <KIO/NetAccess>
#include <KStandardDirs>
#include <KToolBar>
+#include <panels/places/placesitem.h>
+#include <panels/places/placesitemmodel.h>
+
#include <QApplication>
#include <QClipboard>
#include <QDir>
void DolphinContextMenu::slotRemoveActionTriggered()
{
const KActionCollection* collection = m_mainWindow->actionCollection();
- if (m_shiftPressed) {
- collection->action("delete")->trigger();
- } else {
+ if (moveToTrash()) {
collection->action("move_to_trash")->trigger();
+ } else {
+ collection->action("delete")->trigger();
}
}
emptyTrashAction->setEnabled(!trashConfig.group("Status").readEntry("Empty", true));
m_popup->addAction(emptyTrashAction);
- QAction* addToPlacesAction = m_popup->addAction(KIcon("bookmark-new"),
- i18nc("@action:inmenu Add current folder to places", "Add to Places"));
-
- // Don't show if url is already in places
- if (placeExists(m_mainWindow->activeViewContainer()->url())) {
- addToPlacesAction->setVisible(false);
- }
-
addCustomActions();
QAction* propertiesAction = m_mainWindow->actionCollection()->action("properties");
addShowMenuBarAction();
- QAction *action = m_popup->exec(m_pos);
- if (action == emptyTrashAction) {
+ if (m_popup->exec(m_pos) == emptyTrashAction) {
KonqOperations::emptyTrash(m_mainWindow);
- } else if (action == addToPlacesAction) {
- const KUrl& url = m_mainWindow->activeViewContainer()->url();
- if (url.isValid()) {
- DolphinSettings::instance().placesModel()->addPlace(i18nc("@label", "Trash"), url);
- }
}
}
addVersionControlPluginActions();
// insert 'Copy To' and 'Move To' sub menus
- if (DolphinSettings::instance().generalSettings()->showCopyMoveMenu()) {
+ if (GeneralSettings::showCopyMoveMenu()) {
m_copyToMenu.setItems(m_selectedItems);
m_copyToMenu.setReadOnly(!selectedItemsProperties().supportsWriting());
m_copyToMenu.addActionsTo(m_popup);
if (activatedAction == addToPlacesAction) {
const KUrl selectedUrl(m_fileInfo.url());
if (selectedUrl.isValid()) {
- DolphinSettings::instance().placesModel()->addPlace(placesName(selectedUrl),
- selectedUrl);
+ PlacesItemModel model;
+ const QString text = m_mainWindow->activeViewContainer()->placesText();
+ PlacesItem* item = model.createPlacesItem(text, selectedUrl);
+ model.appendItemToGroup(item);
}
} else if (activatedAction == openParentInNewWindowAction) {
m_command = OpenParentFolderInNewWindow;
QAction* action = m_popup->exec(m_pos);
if (addToPlacesAction && (action == addToPlacesAction)) {
- const KUrl url = m_mainWindow->activeViewContainer()->url();
- if (url.isValid()) {
- DolphinSettings::instance().placesModel()->addPlace(placesName(url), url);
+ const DolphinViewContainer* container = m_mainWindow->activeViewContainer();
+ if (container->url().isValid()) {
+ PlacesItemModel model;
+ PlacesItem* item = model.createPlacesItem(container->placesText(),
+ container->url());
+ model.appendItemToGroup(item);
}
}
}
}
}
-QString DolphinContextMenu::placesName(const KUrl& url) const
-{
- QString name = url.fileName();
- if (name.isEmpty()) {
- name = url.host();
- }
- return name;
-}
-
bool DolphinContextMenu::placeExists(const KUrl& url) const
{
- const KFilePlacesModel* placesModel = DolphinSettings::instance().placesModel();
- const int count = placesModel->rowCount();
+ PlacesItemModel model;
+ const int count = model.count();
for (int i = 0; i < count; ++i) {
- const QModelIndex index = placesModel->index(i, 0);
-
- if (url.equals(placesModel->url(index), KUrl::CompareWithoutTrailingSlash)) {
+ const KUrl placeUrl = model.placesItem(i)->url();
+ if (placeUrl.equals(url, KUrl::CompareWithoutTrailingSlash)) {
return true;
}
}
+
return false;
}
return action;
}
-KFileItemListProperties& DolphinContextMenu::selectedItemsProperties()
+KFileItemListProperties& DolphinContextMenu::selectedItemsProperties() const
{
if (!m_selectedItemsProperties) {
m_selectedItemsProperties = new KFileItemListProperties(m_selectedItems);
void DolphinContextMenu::updateRemoveAction()
{
const KActionCollection* collection = m_mainWindow->actionCollection();
- const bool moveToTrash = selectedItemsProperties().isLocal() && !m_shiftPressed;
// Using m_removeAction->setText(action->text()) does not apply the &-shortcut.
// This is only done until the original action has been shown at least once. To
// bypass this issue, the text and &-shortcut is applied manually.
const QAction* action = 0;
- if (moveToTrash) {
+ if (moveToTrash()) {
action = collection->action("move_to_trash");
m_removeAction->setText(i18nc("@action:inmenu", "&Move to Trash"));
} else {
m_removeAction->setShortcuts(action->shortcuts());
}
+bool DolphinContextMenu::moveToTrash() const
+{
+ return !m_shiftPressed;
+}
+
#include "dolphincontextmenu.moc"