]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/dolphincontextmenu.cpp
Remember the additional-info property (size, date, type, ...) for each view mode...
[dolphin.git] / src / dolphincontextmenu.cpp
index 29feffe3469f75725e7a4dad6807566454c21050..d7953df4fd4c13e8b08aa64ef29297d3ccbf489c 100644 (file)
@@ -32,6 +32,7 @@
 #include <kiconloader.h>
 #include <kio/netaccess.h>
 #include <kmenu.h>
+#include <kmenubar.h>
 #include <kmessagebox.h>
 #include <kmimetypetrader.h>
 #include <knewmenu.h>
@@ -74,7 +75,7 @@ void DolphinContextMenu::open()
         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
     }
@@ -101,12 +102,14 @@ void DolphinContextMenu::openTrashContextMenu()
 
     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::SimpleConfig);
     emptyTrashAction->setEnabled(!trashConfig.group("Status").readEntry("Empty", true));
     popup->addAction(emptyTrashAction);
 
-    QAction* addToPlacesAction = popup->addAction(KIcon("folder-bookmarks"),
+    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");
@@ -141,6 +144,8 @@ void DolphinContextMenu::openTrashItemContextMenu()
 
     KMenu* popup = new KMenu(m_mainWindow);
 
+    addShowMenubarAction(popup);
+
     QAction* restoreAction = new QAction(i18nc("@action:inmenu", "Restore"), m_mainWindow);
     popup->addAction(restoreAction);
 
@@ -162,6 +167,7 @@ void DolphinContextMenu::openItemContextMenu()
     Q_ASSERT(!m_fileInfo.isNull());
 
     KMenu* popup = new KMenu(m_mainWindow);
+    addShowMenubarAction(popup);
     insertDefaultItemActions(popup);
 
     popup->addSeparator();
@@ -169,7 +175,7 @@ void DolphinContextMenu::openItemContextMenu()
     // 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("folder-bookmarks"),
+        addToPlacesAction = popup->addAction(KIcon("bookmark-new"),
                                              i18nc("@action:inmenu Add selected folder to places", "Add to Places"));
     }
 
@@ -213,9 +219,10 @@ void DolphinContextMenu::openItemContextMenu()
 
 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();
@@ -245,7 +252,7 @@ void DolphinContextMenu::openViewportContextMenu()
 
     popup->addSeparator();
 
-    QAction* addToPlacesAction = popup->addAction(KIcon("folder-bookmarks"),
+    QAction* addToPlacesAction = popup->addAction(KIcon("bookmark-new"),
                                                   i18nc("@action:inmenu Add current folder to places", "Add to Places"));
     popup->addSeparator();
 
@@ -254,7 +261,7 @@ void DolphinContextMenu::openViewportContextMenu()
     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();
@@ -386,4 +393,17 @@ bool DolphinContextMenu::containsEntry(const KMenu* menu,
     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();
+    }
+}
+
 #include "dolphincontextmenu.moc"