b15f/driver/ui/view_monitor.cpp
Tristan Krause 5a058dd18c monitor geht
2019-04-05 08:47:06 +02:00

45 lines
946 B
C++

#include "view_monitor.h"
ViewMonitor::ViewMonitor() : t_worker(&ViewMonitor::worker, this)
{
}
std::function<void(int)> ViewMonitor::keypress(int& key)
{
switch(key)
{
case KEY_MOUSE:
{
// http://pronix.linuxdelta.de/C/Linuxprogrammierung/Linuxsystemprogrammieren_C_Kurs_Kapitel10b.shtml
MEVENT event;
if(getmouse(&event) == OK && event.bstate & (BUTTON1_CLICKED | BUTTON1_DOUBLE_CLICKED))
{
size_t column = start_x + close_offset_x;
size_t row = start_y + close_offset_y;
if(event.y == row && event.x >= column && event.x < column + label_close.length())
key = -1; // do return from view
}
break;
}
case KEY_ENT:
run_worker = false;
key = -1; // do return from view
wclear(win);
wrefresh(win);
t_worker.join();
break;
default:
break;
}
return calls[0];
}
void ViewMonitor::worker()
{
while(run_worker)
{
std::this_thread::sleep_for(std::chrono::seconds(1));
}
}