-
Notifications
You must be signed in to change notification settings - Fork 0
/
main.cpp
95 lines (82 loc) · 2.72 KB
/
main.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
#include <iostream>
#include <thread>
#include <future>
#include <windows.h>
using namespace std::chrono;
//void fun1(std::promise<int> px){
// int y=5;
// try {
// px.set_value(y);
// } catch(...){
// px.set_exception(std::current_exception());
// }
//}
//
//void fun2(std::future<int> fx){
// std::cout<< "Czekam" << std::endl;
// try{
// int x = fx.get();
// std::cout << "Otrzymałem: " << x << std::endl;
// } catch(...){
// std::cout << "Błąd" << std::endl;
// }
//}
//
//void fun3(){
// std::promise<int> px;
// std::future<int> fx = px.get_future();
// auto time0 = high_resolution_clock::now();
// std::thread t1{fun1, std::move(px)};
// std::thread t2{fun2, std::move(fx)};
// t1.join();
// t2.join();
// auto time1 = high_resolution_clock::now();
// std::cout << duration_cast<seconds>(time1-time0).count() << "s" << std::endl;
//}
void workTime(int duration = 8){
std::this_thread::sleep_for(std::chrono::seconds(duration*60*60-15*60));
std::cout<<"End of work \a"<<std::endl;
MessageBox(nullptr, "Szykuj się do wyjścia", "Koniec pracy", MB_OK);
//todo kill other threads
std::this_thread::sleep_for(std::chrono::seconds(15*60));
MessageBox(nullptr, "Jeszcze tu jesteś?", "Robi się niefajnie", MB_OK);
}
void lunchBreak(int duration = 30){
//todo write when you should go to lunch
std::this_thread::sleep_for((std::chrono::seconds(duration*60)));
std::async(MessageBox, nullptr, "Czas na obiad!", "Uwaga, uwaga!!!", MB_OK);
}
void breakClock() {
while (TRUE) {
std::this_thread::sleep_for(std::chrono::seconds(60 * 60));
{
std::cout << "Break \a" << std::endl;
MessageBox(nullptr, "Czas na przerwe!", "Uwaga, uwaga!!!", MB_OK);
}
auto breakTimeStart = high_resolution_clock::now();
MessageBox(nullptr, "Przerwa", "Przerwa", MB_OK);
auto breakDuration = duration_cast<minutes>(high_resolution_clock::now() - breakTimeStart).count();
std::string durationNotify = "Przerwa trwała: " + breakDuration;
durationNotify += " minut";
MessageBox(nullptr, durationNotify.c_str(), "Długość przerwy", MB_OK);
//todo zapis do pliku
}
}
void timeOfWork(){
auto startTimeStamp = high_resolution_clock::now();
if(/*stopsignal*/){
auto stopTimeStamp = high_resolution_clock::now();
}
}
int main() {
std::thread timeCounterThread{timeOfWork};
std::cout << "Hello, World!" << std::endl;
HWND okno = GetConsoleWindow();
ShowWindow( okno, SW_HIDE );
std::thread breakThread{breakClock};
breakThread.join();
ShowWindow( okno, SW_SHOW );
std::cin.get();
std::cin.get();
return 0;
}