-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathayiktray.cpp
88 lines (79 loc) · 2.38 KB
/
ayiktray.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
#include "ayiktray.h"
#include "ayikoption.h"
#include "ayikpopup.h"
#include <QtWidgets/QMenu>
AyikTray* AyikTray::instance;
AyikTray::AyikTray()
{
createActions();
createTrayIcon();
AyikPopup* popup = AyikPopup::getInstance();
connect(popup, SIGNAL(windowHidden()), this, SLOT(startMessageTimer()));
connect(trayIcon, SIGNAL(activated(QSystemTrayIcon::ActivationReason)),
this, SLOT(iconActivated(QSystemTrayIcon::ActivationReason)));
connect(&timer,SIGNAL(timeout()),this,SLOT(showMessage()));
trayIcon->show();
timer.start(2000);//first message after 2 secs
}
AyikTray* AyikTray::getInstance()
{
if(instance==NULL) instance = new AyikTray();
return instance;
}
void AyikTray::setVisible(bool visible)
{
trayIcon->setVisible(visible);
}
void AyikTray::showSetup()
{
AyikOption* options = AyikOption::getInstance();
//setupAction->setEnabled( !(options->isVisible()) );
options->setVisible(true);
}
void AyikTray::startMessageTimer() {
AyikOption* options = AyikOption::getInstance();
timer.start(options->getMessageFrequency()*60000);//convert into mins -- 60*1000 = 60 sec * 1000 msec
}
void AyikTray::showMessage()
{
timer.stop();
AyikPopup::getInstance()->showPopup();
}
void AyikTray::showHelp()
{
AyikOption::getInstance()->showHelp();
}
void AyikTray::createActions()
{
setupAction = new QAction(tr("&Options"), this);
connect(setupAction, SIGNAL(triggered()), this, SLOT(showSetup()));
helpAction = new QAction(tr("&Help"), this);
connect(helpAction, SIGNAL(triggered()), this, SLOT(showHelp()));
quitAction = new QAction(tr("&Quit"), this);
connect(quitAction, SIGNAL(triggered()), qApp, SLOT(quit()));
}
void AyikTray::createTrayIcon()
{
trayIconMenu = new QMenu(this);
trayIconMenu->addAction(setupAction);
trayIconMenu->addAction(helpAction);
trayIconMenu->addSeparator();
trayIconMenu->addAction(quitAction);
trayIcon = new QSystemTrayIcon(QIcon(":/images/ayik.png"));
trayIcon->setToolTip("AYIK");
trayIcon->setContextMenu(trayIconMenu);
}
void AyikTray::iconActivated(QSystemTrayIcon::ActivationReason reason)
{
switch (reason) {
case QSystemTrayIcon::Trigger:
case QSystemTrayIcon::DoubleClick:
showMessage();
break;
case QSystemTrayIcon::MiddleClick:
showMessage();
break;
default:
;
}
}