Make menubar hideable
authorManuel Nickschas <sputnick@quassel-irc.org>
Thu, 27 Aug 2009 16:40:44 +0000 (18:40 +0200)
committerManuel Nickschas <sputnick@quassel-irc.org>
Thu, 27 Aug 2009 16:41:25 +0000 (18:41 +0200)
Closes #756.

icons/oxygen.qrc
icons/oxygen/16x16/actions/show-menu.png [new file with mode: 0644]
icons/oxygen/scalable/actions/show-menu.svgz [new file with mode: 0644]
src/qtui/mainwin.cpp
src/qtui/mainwin.h

index 02bf618..813f86b 100644 (file)
     <file>oxygen/16x16/actions/zoom-in.png</file>
     <file>oxygen/16x16/actions/im-kick-user.png</file>
     <file>oxygen/16x16/actions/zoom-out.png</file>
+    <file>oxygen/16x16/actions/show-menu.png</file>
     <file>oxygen/16x16/actions/application-exit.png</file>
     <file>oxygen/16x16/actions/im-ban-user.png</file>
     <file>oxygen/16x16/actions/go-down.png</file>
diff --git a/icons/oxygen/16x16/actions/show-menu.png b/icons/oxygen/16x16/actions/show-menu.png
new file mode 100644 (file)
index 0000000..a55df20
Binary files /dev/null and b/icons/oxygen/16x16/actions/show-menu.png differ
diff --git a/icons/oxygen/scalable/actions/show-menu.svgz b/icons/oxygen/scalable/actions/show-menu.svgz
new file mode 100644 (file)
index 0000000..3f19a26
Binary files /dev/null and b/icons/oxygen/scalable/actions/show-menu.svgz differ
index 451bc24..d14ebec 100644 (file)
@@ -300,8 +300,11 @@ void MainWin::setupActions() {
                                                0, 0, QKeySequence::Find))->setCheckable(true);
   coll->addAction("ShowAwayLog", new Action(tr("Show Away Log"), coll,
                                            this, SLOT(showAwayLog())));
+  coll->addAction("ToggleMenuBar", new Action(SmallIcon("show-menu"), tr("Show &Menubar"), coll,
+                                                0, 0, tr("Ctrl+M")))->setCheckable(true);
+
   coll->addAction("ToggleStatusBar", new Action(tr("Show Status &Bar"), coll,
-                                                 0, 0))->setCheckable(true);
+                                                0, 0))->setCheckable(true);
 
   // Settings
   coll->addAction("ConfigureQuassel", new Action(SmallIcon("configure"), tr("&Configure Quassel..."), coll,
@@ -357,20 +360,22 @@ void MainWin::setupMenus() {
   _bufferViewsMenu->addAction(coll->action("ConfigureBufferViews"));
   _toolbarMenu = _viewMenu->addMenu(tr("&Toolbars"));
   _viewMenu->addSeparator();
+
+  _viewMenu->addAction(coll->action("ToggleMenuBar"));
+  _viewMenu->addAction(coll->action("ToggleStatusBar"));
   _viewMenu->addAction(coll->action("ToggleSearchBar"));
 
   coreAction = coll->action("ShowAwayLog");
   flagRemoteCoreOnly(coreAction);
   _viewMenu->addAction(coreAction);
 
-  _viewMenu->addAction(coll->action("ToggleStatusBar"));
   _viewMenu->addSeparator();
   _viewMenu->addAction(coll->action("LockLayout"));
 
   _settingsMenu = menuBar()->addMenu(tr("&Settings"));
 #ifdef HAVE_KDE
-  _settingsMenu->addAction(KStandardAction::keyBindings(this, SLOT(showShortcutsDlg()), this));
   _settingsMenu->addAction(KStandardAction::configureNotifications(this, SLOT(showNotificationsDlg()), this));
+  _settingsMenu->addAction(KStandardAction::keyBindings(this, SLOT(showShortcutsDlg()), this));
 #endif
   _settingsMenu->addAction(coll->action("ConfigureQuassel"));
 
@@ -390,6 +395,17 @@ void MainWin::setupMenus() {
   _helpDebugMenu->addAction(coll->action("DebugLog"));
   _helpDebugMenu->addSeparator();
   _helpDebugMenu->addAction(coll->action("ReloadStyle"));
+
+  // Toggle visibility
+  QAction *showMenuBar = QtUi::actionCollection("General")->action("ToggleMenuBar");
+
+  QtUiSettings uiSettings;
+  bool enabled = uiSettings.value("ShowMenuBar", QVariant(true)).toBool();
+  showMenuBar->setChecked(enabled);
+  enabled ? menuBar()->show() : menuBar()->hide();
+
+  connect(showMenuBar, SIGNAL(toggled(bool)), menuBar(), SLOT(setVisible(bool)));
+  connect(showMenuBar, SIGNAL(toggled(bool)), this, SLOT(saveMenuBarStatus(bool)));
 }
 
 void MainWin::setupBufferWidget() {
@@ -618,6 +634,11 @@ void MainWin::setupHotList() {
   _bufferHotList = new BufferHotListFilter(flatProxy);
 }
 
+void MainWin::saveMenuBarStatus(bool enabled) {
+  QtUiSettings uiSettings;
+  uiSettings.setValue("ShowMenuBar", enabled);
+}
+
 void MainWin::saveStatusBarStatus(bool enabled) {
   QtUiSettings uiSettings;
   uiSettings.setValue("ShowStatusBar", enabled);
index dd0459c..63c0ca0 100644 (file)
@@ -138,6 +138,7 @@ class MainWin
     void clientNetworkUpdated();
     void connectOrDisconnectFromNet();
 
+    void saveMenuBarStatus(bool enabled);
     void saveStatusBarStatus(bool enabled);
 
     void loadLayout();