]> cloud.milkyroute.net Git - dolphin.git/commitdiff
allow to show/hide the menubar
authorPeter Penz <peter.penz19@gmail.com>
Sun, 18 Nov 2007 14:37:57 +0000 (14:37 +0000)
committerPeter Penz <peter.penz19@gmail.com>
Sun, 18 Nov 2007 14:37:57 +0000 (14:37 +0000)
BUG: 152463

svn path=/trunk/KDE/kdebase/apps/; revision=738282

src/dolphincontextmenu.cpp
src/dolphincontextmenu.h
src/dolphinmainwindow.cpp
src/dolphinmainwindow.h

index 29feffe3469f75725e7a4dad6807566454c21050..a7a5ae567cc6d28d454396b1ac7e4cf80d5f0b7a 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>
@@ -101,6 +102,8 @@ 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));
@@ -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();
@@ -216,6 +222,8 @@ 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();
@@ -386,4 +394,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"
index 05d565feee4f4985e44fa102681c0ede5b93b1e9..c9099925231ed90437e8ad40caf1f4b597c687e4 100644 (file)
@@ -97,6 +97,12 @@ private:
     bool containsEntry(const KMenu* menu,
                        const QString& entryName) const;
 
+    /**
+     * Adds the "Show menubar" action to the menu if the
+     * menubar is hidden.
+     */
+    void addShowMenubarAction(KMenu* menu);
+
 private:
     struct Entry
     {
index 361ea7e4fd3924a378a9d2e244c95dfa25839e28..ddabf21a4ff7d37a3b90fbeb64ba3e9ad45fdf36 100644 (file)
@@ -55,6 +55,7 @@
 #include <kinputdialog.h>
 #include <klocale.h>
 #include <kmenu.h>
+#include <kmenubar.h>
 #include <kmessagebox.h>
 #include <konqmimedata.h>
 #include <konq_operations.h>
@@ -76,6 +77,7 @@
 DolphinMainWindow::DolphinMainWindow(int id) :
     KXmlGuiWindow(0),
     m_newMenu(0),
+    m_showMenuBar(0),
     m_splitter(0),
     m_activeViewContainer(0),
     m_id(id)
@@ -916,6 +918,12 @@ void DolphinMainWindow::compareFiles()
 
 }
 
+void DolphinMainWindow::toggleShowMenuBar()
+{
+    const bool visible = menuBar()->isVisible();
+    menuBar()->setVisible(!visible);
+}
+
 void DolphinMainWindow::editSettings()
 {
     DolphinSettingsDialog dialog(this);
@@ -1243,6 +1251,7 @@ void DolphinMainWindow::setupActions()
     connect(compareFiles, SIGNAL(triggered()), this, SLOT(compareFiles()));
 
     // setup 'Settings' menu
+    m_showMenuBar = KStandardAction::showMenubar(this, SLOT(toggleShowMenuBar()), actionCollection());
     KStandardAction::preferences(this, SLOT(editSettings()), actionCollection());
 }
 
index 2f91f95532dd62253a95d4c1f1a01fd1068da90c..ef694513c3a37f609bc0c47e2c66e24173cf51d1 100644 (file)
@@ -93,6 +93,12 @@ public:
      */
     KNewMenu* newMenu() const;
 
+    /**
+     * Returns the 'Show Menubar' action which can be shared with
+     * other menus (e. g. a context menu).
+     */
+    KAction* showMenuBarAction() const;
+
 public slots:
     /**
      * Handles the dropping of URLs to the given
@@ -362,6 +368,12 @@ private slots:
     /** Opens Kompare for 2 selected files. */
     void compareFiles();
 
+    /**
+     * Hides the menu bar if it is visible, makes the menu bar
+     * visible if it is hidden.
+     */
+    void toggleShowMenuBar();
+
     /** Opens the settings dialog for Dolphin. */
     void editSettings();
 
@@ -487,6 +499,7 @@ private:
     };
 
     KNewMenu* m_newMenu;
+    KAction* m_showMenuBar;
     QSplitter* m_splitter;
     DolphinViewContainer* m_activeViewContainer;
     int m_id;
@@ -512,6 +525,11 @@ inline KNewMenu* DolphinMainWindow::newMenu() const
     return m_newMenu;
 }
 
+inline KAction* DolphinMainWindow::showMenuBarAction() const
+{
+    return m_showMenuBar;
+}
+
 inline int DolphinMainWindow::getId() const
 {
     return m_id;