#include <kiconloader.h>
#include <kio/netaccess.h>
#include <kmenu.h>
+#include <kmenubar.h>
#include <kmessagebox.h>
#include <kmimetypetrader.h>
#include <knewmenu.h>
m_context |= TrashContext;
}
- if (!m_fileInfo.isNull()) {
+ if (!m_fileInfo.isNull() && (m_selectedItems.count() > 0)) {
m_context |= ItemContext;
// TODO: handle other use cases like devices + desktop files
}
KMenu* popup = new KMenu(m_mainWindow);
+ addShowMenubarAction(popup);
+
QAction* emptyTrashAction = new QAction(KIcon("trash-empty"), i18nc("@action:inmenu", "Empty Trash"), popup);
- KConfig trashConfig("trashrc", KConfig::OnlyLocal);
+ KConfig trashConfig("trashrc", KConfig::SimpleConfig);
emptyTrashAction->setEnabled(!trashConfig.group("Status").readEntry("Empty", true));
popup->addAction(emptyTrashAction);
+ QAction* addToPlacesAction = popup->addAction(KIcon("bookmark-new"),
+ i18nc("@action:inmenu Add current folder to places", "Add to Places"));
+
QAction* propertiesAction = m_mainWindow->actionCollection()->action("properties");
popup->addAction(propertiesAction);
- if (popup->exec(QCursor::pos()) == emptyTrashAction) {
+ QAction *action = popup->exec(QCursor::pos());
+ if (action == emptyTrashAction) {
const QString text(i18nc("@info", "Do you really want to empty the Trash? All items will get deleted."));
const bool del = KMessageBox::warningContinueCancel(m_mainWindow,
text,
if (del) {
KonqOperations::emptyTrash(m_mainWindow);
}
+ } else if (action == addToPlacesAction) {
+ const KUrl& url = m_mainWindow->activeViewContainer()->url();
+ if (url.isValid()) {
+ DolphinSettings::instance().placesModel()->addPlace(i18n("Trash"), url);
+ }
}
popup->deleteLater();
KMenu* popup = new KMenu(m_mainWindow);
+ addShowMenubarAction(popup);
+
QAction* restoreAction = new QAction(i18nc("@action:inmenu", "Restore"), m_mainWindow);
popup->addAction(restoreAction);
Q_ASSERT(!m_fileInfo.isNull());
KMenu* popup = new KMenu(m_mainWindow);
+ addShowMenubarAction(popup);
insertDefaultItemActions(popup);
popup->addSeparator();
// insert 'Bookmark This Folder' entry if exactly one item is selected
QAction* addToPlacesAction = 0;
if (m_fileInfo.isDir() && (m_selectedUrls.count() == 1)) {
- addToPlacesAction = popup->addAction(KIcon("bookmark-folder"),
+ addToPlacesAction = popup->addAction(KIcon("bookmark-new"),
i18nc("@action:inmenu Add selected folder to places", "Add to Places"));
}
if ((addToPlacesAction != 0) && (activatedAction == addToPlacesAction)) {
const KUrl selectedUrl(m_fileInfo.url());
if (selectedUrl.isValid()) {
- DolphinSettings::instance().placesModel()->addPlace(selectedUrl.fileName(),
+ DolphinSettings::instance().placesModel()->addPlace(placesName(selectedUrl),
selectedUrl);
}
} else if (openWithActions.contains(activatedAction)) {
void DolphinContextMenu::openViewportContextMenu()
{
- Q_ASSERT(m_fileInfo.isNull());
KMenu* popup = new KMenu(m_mainWindow);
+ addShowMenubarAction(popup);
+
// setup 'Create New' menu
KNewMenu* newMenu = m_mainWindow->newMenu();
newMenu->slotCheckUpToDate();
popup->addMenu(newMenu->menu());
popup->addSeparator();
- QAction* pasteAction = m_mainWindow->actionCollection()->action(KStandardAction::stdName(KStandardAction::Paste));
+ QAction* pasteAction = m_mainWindow->actionCollection()->action(KStandardAction::name(KStandardAction::Paste));
popup->addAction(pasteAction);
// setup 'View Mode' menu
popup->addSeparator();
- QAction* addToPlacesAction = popup->addAction(KIcon("bookmark-folder"),
+ QAction* addToPlacesAction = popup->addAction(KIcon("bookmark-new"),
i18nc("@action:inmenu Add current folder to places", "Add to Places"));
popup->addSeparator();
QAction* action = popup->exec(QCursor::pos());
if (action == propertiesAction) {
const KUrl& url = m_mainWindow->activeViewContainer()->url();
- KPropertiesDialog dialog(url);
+ KPropertiesDialog dialog(url, m_mainWindow);
dialog.exec();
} else if (action == addToPlacesAction) {
const KUrl& url = m_mainWindow->activeViewContainer()->url();
if (url.isValid()) {
- DolphinSettings::instance().placesModel()->addPlace(url.fileName(), url);
+ DolphinSettings::instance().placesModel()->addPlace(placesName(url), url);
}
}
const KActionCollection* collection = m_mainWindow->actionCollection();
// insert 'Cut', 'Copy' and 'Paste'
- QAction* cutAction = collection->action(KStandardAction::stdName(KStandardAction::Cut));
- QAction* copyAction = collection->action(KStandardAction::stdName(KStandardAction::Copy));
- QAction* pasteAction = collection->action(KStandardAction::stdName(KStandardAction::Paste));
+ QAction* cutAction = collection->action(KStandardAction::name(KStandardAction::Cut));
+ QAction* copyAction = collection->action(KStandardAction::name(KStandardAction::Copy));
+ QAction* pasteAction = collection->action(KStandardAction::name(KStandardAction::Paste));
popup->addAction(cutAction);
popup->addAction(copyAction);
return false;
}
+void DolphinContextMenu::addShowMenubarAction(KMenu* menu)
+{
+ KAction* showMenuBar = m_mainWindow->showMenuBarAction();
+ if (!m_mainWindow->menuBar()->isVisible()) {
+ // TODO: it should not be necessary to uncheck the menu
+ // bar action, but currently the action states don't get
+ // updated if the menu is disabled
+ showMenuBar->setChecked(false);
+ menu->addAction(showMenuBar);
+ menu->addSeparator();
+ }
+}
+
+QString DolphinContextMenu::placesName(const KUrl& url) const
+{
+ QString name = url.fileName();
+ if (name.isEmpty()) {
+ name = url.host();
+ }
+ return name;
+}
+
#include "dolphincontextmenu.moc"