monitor geht

This commit is contained in:
Tristan Krause 2019-04-05 08:47:06 +02:00
parent d508c308b5
commit 5a058dd18c
5 changed files with 83 additions and 3 deletions

View file

@ -0,0 +1,44 @@
#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));
}
}

22
driver/ui/view_monitor.h Normal file
View file

@ -0,0 +1,22 @@
#ifndef VIEW_MONITOR_H
#define VIEW_MONITOR_H
#include <thread>
#include <chrono>
#include "view_info.h"
class ViewMonitor : public ViewInfo
{
public:
ViewMonitor(void);
virtual std::function<void(int)> keypress(int& key) override;
protected:
virtual void worker(void);
volatile bool run_worker = true;
std::thread t_worker;
};
#endif // VIEW_MONITOR_H