-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathshowMessageThread.h
51 lines (40 loc) · 1.56 KB
/
showMessageThread.h
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
#ifndef SHOWMESSAGETHREAD_H
#define SHOWMESSAGETHREAD_H
#include <QThread>
#include <QtGui>
#include "message.h"
class ShowMessageThread : public QThread{
public:
ShowMessageThread(QSystemTrayIcon* tray, std::queue<Message>* messageQueue):
QThread(){
this->tray = tray;
this->messageQueue = messageQueue;
}
void run(){
while(true){
if( !messageQueue->empty() ){
//Достаём сообщение из Очереди и удаляем его оттуда
Message message = messageQueue->front();
messageQueue->pop();
//Выведем сообщение и заслипаем поток чтобы он не доставал следущее сообщение
showMessage(message.title, message.text, message.icon, message.delay);
msleep(message.delay);
if(messageQueue->empty()){
//Если мы показали последнее сообщение - убираем его сами чтобы не висело
tray->showMessage("","", QSystemTrayIcon::NoIcon, 0);
}
}
}
exec();
}
private:
QSystemTrayIcon* tray;
std::queue<Message>* messageQueue;
void showMessage(QString title, QString text, QSystemTrayIcon::MessageIcon icon, size_t delay){
tray->showMessage(title,
text,
icon,
delay);
}
};
#endif // SHOWMESSAGETHREAD_H