Provide "Configure Notifications..." menu entry, to stay consistent with KDE guidelines
[quassel.git] / src / qtui / mainwin.cpp
index 4ebb003..dcb658f 100644 (file)
@@ -67,6 +67,9 @@
 #ifdef HAVE_PHONON
 #  include "phononnotificationbackend.h"
 #endif
+#ifdef HAVE_KDE
+#  include "knotificationbackend.h"
+#endif
 #include "systraynotificationbackend.h"
 #include "taskbarnotificationbackend.h"
 
@@ -110,14 +113,19 @@ MainWin::MainWin(QWidget *parent)
 
   installEventFilter(new JumpKeyHandler(this));
 
-  QtUi::registerNotificationBackend(new TaskbarNotificationBackend(this));
-  QtUi::registerNotificationBackend(new SystrayNotificationBackend(this));
-#ifdef HAVE_PHONON
-  QtUi::registerNotificationBackend(new PhononNotificationBackend(this));
-#endif
-#ifdef HAVE_DBUS
-  QtUi::registerNotificationBackend(new DesktopNotificationBackend(this));
-#endif
+#ifndef HAVE_KDE
+    QtUi::registerNotificationBackend(new TaskbarNotificationBackend(this));
+    QtUi::registerNotificationBackend(new SystrayNotificationBackend(this));
+#  ifdef HAVE_PHONON
+    QtUi::registerNotificationBackend(new PhononNotificationBackend(this));
+#  endif
+#  ifdef HAVE_DBUS
+    QtUi::registerNotificationBackend(new DesktopNotificationBackend(this));
+#  endif
+
+#else /* HAVE_KDE */
+    QtUi::registerNotificationBackend(new KNotificationBackend(this));
+#endif /* HAVE_KDE */
 
   QtUiApplication* app = qobject_cast<QtUiApplication*> qApp;
   connect(app, SIGNAL(saveStateToSession(const QString&)), SLOT(saveStateToSession(const QString&)));
@@ -253,6 +261,9 @@ void MainWin::setupMenus() {
   _viewMenu->addAction(coll->action("LockDockPositions"));
 
   _settingsMenu = menuBar()->addMenu(tr("&Settings"));
+#ifdef HAVE_KDE
+  _settingsMenu->addAction(KStandardAction::configureNotifications(this, SLOT(showNotificationsDlg()), this));
+#endif
   _settingsMenu->addAction(coll->action("ConfigureQuassel"));
 
   _helpMenu = menuBar()->addMenu(tr("&Help"));
@@ -330,6 +341,11 @@ BufferView *MainWin::allBuffersView() const {
   return 0;
 }
 
+void MainWin::showNotificationsDlg() {
+  SettingsPageDlg dlg(new NotificationsSettingsPage(this), this);
+  dlg.exec();
+}
+
 void MainWin::on_actionEditNetworks_triggered() {
   SettingsPageDlg dlg(new NetworksSettingsPage(this), this);
   dlg.exec();