From: Peter Penz Date: Sun, 18 Nov 2007 14:37:57 +0000 (+0000) Subject: allow to show/hide the menubar X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/commitdiff_plain/1ce2fb199db7bdf5baf05b61e4e58c549404b4df?ds=inline allow to show/hide the menubar BUG: 152463 svn path=/trunk/KDE/kdebase/apps/; revision=738282 --- diff --git a/src/dolphincontextmenu.cpp b/src/dolphincontextmenu.cpp index 29feffe34..a7a5ae567 100644 --- a/src/dolphincontextmenu.cpp +++ b/src/dolphincontextmenu.cpp @@ -32,6 +32,7 @@ #include #include #include +#include #include #include #include @@ -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" diff --git a/src/dolphincontextmenu.h b/src/dolphincontextmenu.h index 05d565fee..c90999252 100644 --- a/src/dolphincontextmenu.h +++ b/src/dolphincontextmenu.h @@ -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 { diff --git a/src/dolphinmainwindow.cpp b/src/dolphinmainwindow.cpp index 361ea7e4f..ddabf21a4 100644 --- a/src/dolphinmainwindow.cpp +++ b/src/dolphinmainwindow.cpp @@ -55,6 +55,7 @@ #include #include #include +#include #include #include #include @@ -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()); } diff --git a/src/dolphinmainwindow.h b/src/dolphinmainwindow.h index 2f91f9553..ef694513c 100644 --- a/src/dolphinmainwindow.h +++ b/src/dolphinmainwindow.h @@ -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;