added context menu to systray
[quassel.git] / src / qtui / mainwin.cpp
index 12d4915..817a762 100644 (file)
@@ -70,7 +70,23 @@ void MainWin::init() {
   statusBar()->showMessage(tr("Not connected to core."));
   systray = new QSystemTrayIcon(this);
   systray->setIcon(QIcon(":/icons/quassel-icon.png"));
+  
+  QString toolTip("left click to minimize the quassel client to tray");
+  systray->setToolTip(toolTip);
+  
+  QMenu *systrayMenu = new QMenu();
+  systrayMenu->addAction(ui.actionAboutQuassel);
+  systrayMenu->addSeparator();
+  systrayMenu->addAction(ui.actionConnectCore);
+  systrayMenu->addAction(ui.actionDisconnectCore);
+  systrayMenu->addSeparator();
+  systrayMenu->addAction(ui.actionQuit);
+  
+  systray->setContextMenu(systrayMenu);
+  
   systray->show();
+  connect(systray, SIGNAL(activated( QSystemTrayIcon::ActivationReason )), 
+          this, SLOT(systrayActivated( QSystemTrayIcon::ActivationReason )));
 
   //setupSettingsDlg();
 
@@ -277,10 +293,20 @@ void MainWin::closeEvent(QCloseEvent *event)
     s.setValue("MainWinSize", size());
     s.setValue("MainWinPos", pos());
     s.setValue("MainWinState", saveState());
-    delete systray;
     event->accept();
   //} else {
     //event->ignore();
   //}
 }
 
+void MainWin::systrayActivated( QSystemTrayIcon::ActivationReason activationReason) {
+  if (activationReason == QSystemTrayIcon::Trigger) {
+    if (isHidden())
+      show();
+    else
+      hide();
+  }
+  
+  
+  
+}
\ No newline at end of file