summaryrefslogtreecommitdiffstats
path: root/trayicon.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'trayicon.cpp')
-rw-r--r--trayicon.cpp84
1 files changed, 84 insertions, 0 deletions
diff --git a/trayicon.cpp b/trayicon.cpp
new file mode 100644
index 00000000..8dace210
--- /dev/null
+++ b/trayicon.cpp
@@ -0,0 +1,84 @@
+#include "trayicon.h"
+
+trayIcon::trayIcon(QMainWindow *parent)
+{
+ parentwin = parent;
+
+ createActions();
+ createTrayIcon();
+
+ sysTrayIcon->setIcon(QIcon(":/artwork/icon.png"));
+
+ sysTrayIcon->show();
+
+ QObject::connect(sysTrayIcon, SIGNAL(activated(QSystemTrayIcon::ActivationReason)),
+ this, SLOT(iconActivated(QSystemTrayIcon::ActivationReason)));
+
+}
+
+void trayIcon::setVisible(bool visible)
+{
+ if(visible == true) {
+ parentwin->show();
+ } else {
+ parentwin->hide();
+ }
+}
+
+void trayIcon::createActions()
+{
+// minimizeAction = new QAction(tr("Mi&nimize"), this);
+// connect(minimizeAction, SIGNAL(triggered()), this, SLOT(hide()));
+
+// maximizeAction = new QAction(tr("Ma&ximize"), this);
+// connect(maximizeAction, SIGNAL(triggered()), this, SLOT(showMaximized()));
+
+// restoreAction = new QAction(tr("&Restore"), this);
+// connect(restoreAction, SIGNAL(triggered()), this, SLOT(showNormal()));
+
+ quitAction = new QAction(tr("&Quit"), this);
+ connect(quitAction, SIGNAL(triggered()), qApp, SLOT(quit()));
+}
+
+
+void trayIcon::createTrayIcon()
+{
+ trayIconMenu = new QMenu(this);
+// trayIconMenu->addAction(minimizeAction);
+// trayIconMenu->addAction(maximizeAction);
+// trayIconMenu->addAction(restoreAction);
+// trayIconMenu->addSeparator();
+ trayIconMenu->addAction(quitAction);
+
+ sysTrayIcon = new QSystemTrayIcon(this);
+ sysTrayIcon->setContextMenu(trayIconMenu);
+}
+
+void trayIcon::showHideParent()
+{
+ if(parentwin->isVisible() == true) {
+ parentwin->hide();
+ } else {
+ parentwin->show();
+ }
+}
+
+void trayIcon::iconActivated(QSystemTrayIcon::ActivationReason reason)
+{
+ switch (reason) {
+ case QSystemTrayIcon::Trigger:
+ case QSystemTrayIcon::DoubleClick:
+ showHideParent();
+ break;
+ case QSystemTrayIcon::MiddleClick:
+ showMessage("test", "test msg", 1000);
+ break;
+ default:
+ ;
+ }
+}
+
+void trayIcon::showMessage(QString title, QString msg, int time)
+{
+ sysTrayIcon->showMessage(title, msg, QSystemTrayIcon::Information, time);
+}