-
Notifications
You must be signed in to change notification settings - Fork 0
/
tray_func.cpp
159 lines (126 loc) · 4.04 KB
/
tray_func.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
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
#include "bd_checker.h"
void BD_Checker::showTrayIcon ()
{
// Ñîçäà¸ì ýêçåìïëÿð êëàññà è çàäà¸ì åãî ñâîéñòâà...
trayIcon = new QSystemTrayIcon(this);
QIcon trayImg ("BD_Checker.ico");
trayIcon->setIcon (trayImg);
trayIcon->setContextMenu(trayIconMenu);
// Ïîäêëþ÷àåì îáðàáîò÷èê êëèêà ïî èêîíêå...
connect(trayIcon, SIGNAL(activated(QSystemTrayIcon::ActivationReason)), this, SLOT(trayIconActivated(QSystemTrayIcon::ActivationReason)));
// Âûâîäèì çíà÷îê...
trayIcon -> show();
}
//__________________________________________________________________________________________________
void BD_Checker::trayActionExecute()
{
//QMessageBox::information(this, "TrayIcon", "Òåñòîâîå ñîîáùåíèå. Çàìåíèòå âûçîâ ýòîãî ñîîáùåíèÿ ñâîèì êîäîì.");
vizual();
}
//__________________________________________________________________________________________________
void BD_Checker::trayIconActivated(QSystemTrayIcon::ActivationReason reason)
{
switch (reason)
{
case QSystemTrayIcon::Trigger:
case QSystemTrayIcon::DoubleClick:
this -> trayActionExecute();
break;
default:
break;
}
}
//__________________________________________________________________________________________________
void BD_Checker::setTrayIconActions()
{
// Setting actions...
minimizeAction = new QAction("Ñâåðíóòü", this);
restoreAction = new QAction("Âîññòàíîâèòü", this);
quitAction = new QAction("Âûõîä", this);
// Connecting actions to slots...
connect (minimizeAction, SIGNAL(triggered()), this, SLOT(hide()));
connect (restoreAction, SIGNAL(triggered()), this, SLOT(showNormal()));
connect (quitAction, SIGNAL(triggered()), qApp, SLOT(quit()));
// Setting system tray's icon menu...
trayIconMenu = new QMenu(this);
trayIconMenu -> addAction (minimizeAction);
trayIconMenu -> addAction (restoreAction);
trayIconMenu -> addAction (quitAction);
}
//__________________________________________________________________________________________________
void BD_Checker::changeEvent(QEvent *event)
{
QDialog::changeEvent(event);
if (event -> type() == QEvent::WindowStateChange)
{
if (isMinimized())
{
this -> hide();
}
}
}
//__________________________________________________________________________________________________
int Person::setData(QString _str)
{
_str.simplified();
// Birth
date_birth = QDate::fromString(_str.left(10),"dd.MM.yyyy");
_str.remove(0, 11);
int pos1 = _str.indexOf(" ");
// Surname
surname = _str.mid(1, pos1);
_str.remove(0, pos1+1);
pos1 = _str.indexOf(".");
// Name
name = _str.mid(0, pos1);
_str.remove(0, pos1+1);
pos1 = _str.indexOf(".");
// Father name
father_name = _str.mid(0, pos1);
_str.remove(0, pos1+2);
// Description
description = _str.simplified();
return 0;
}
//__________________________________________________________________________________________________
void BD_Checker::save_person()
{
person_data[settings_form.add_pers_form.prs.date_birth] = settings_form.add_pers_form.prs;
QFile F(FNAME);
Person prs;
QString str = "\n";
if (F.open(QIODevice::ReadWrite | QIODevice::Text))
{
while(!F.atEnd())
{
F.readLine();
}
QTextStream out(&F);
str+= settings_form.add_pers_form.prs.date_birth.toString("dd.MM.yyyy") + "\t\t";
str+= settings_form.add_pers_form.prs.surname + " " ;
str+= settings_form.add_pers_form.prs.name + "." ;
str+= settings_form.add_pers_form.prs.father_name + ".\t" ;
str+= settings_form.add_pers_form.prs.description ;
out << str;
F.close();
}
vizual();
}
//static int msecsTo(const QTime & at) {
// const int msecsPerDay = 24 * 60 * 60 * 1000;
// int msecs = QTime::currentTime().msecsTo(at);
// if (msecs < 0) msecs += msecsPerDay;
// return msecs;
//}
//
//// C++11
//
//void runAt(const std::function<void> & job, const QTime & at, Qt::TimerType type = Qt::VeryCoarseTimer) {
// // Timer ownership prevents timer leak when the thread terminates.
// auto timer = new QTimer(QAbstractEventDispatcher::instance());
// timer->start(msecsTo(at), type);
// QObject::connect(timer, &QTimer::timeout, [=job, &timer]{
// job();
// timer->deleteLater();
// });
//}