Files
utun2/tools/chatgui/src/user_activity_monitor.h
T

44 lines
1.3 KiB
C++

/* Первая активность после start(): системный idle time или события приложения при ограничениях ОС.
* stop() отменяет наблюдение и запоздалые D-Bus ответы. Все вызовы и сигнал — в GUI-потоке. */
#pragma once
#include <QObject>
#include <QElapsedTimer>
#include <QTimer>
class UserActivityMonitor : public QObject {
Q_OBJECT
public:
explicit UserActivityMonitor(QObject* parent = nullptr);
~UserActivityMonitor() override;
void start();
void stop();
signals:
void activity();
protected:
bool eventFilter(QObject* object, QEvent* event) override;
virtual qint64 systemIdleTime();
private:
void pollIdleTime();
void checkIdleTime(qint64 idleMs, qint64 elapsedMs);
void useLocalActivity();
void startWaylandFallback();
QTimer m_pollTimer;
QElapsedTimer m_elapsed;
bool m_watching = false;
bool m_localWarningLogged = false;
bool m_dbusPending = false;
bool m_useGnome = false;
bool m_gnomeUnavailable = false;
bool m_gnomeReadyLogged = false;
bool m_useKIdleTime = false;
QMetaObject::Connection m_kIdleConnection;
quint64 m_generation = 0;
void* m_display = nullptr;
bool m_x11Checked = false;
};