#ifndef RUNTIMECTRL_H #define RUNTIMECTRL_H #include #include #include #include #include "SysPara.h" /** 当前类用于统计软件运行时间、到期提醒间隔 设备保养提醒 */ class RunTimeCtrl : public QObject { Q_OBJECT public: static RunTimeCtrl* instance() { static RunTimeCtrl ins; return &ins; } ~RunTimeCtrl(); // 启动计时 void start(); // 停止计时 void stop(); // 设置提示间隔(单位:分钟,默认5分钟) void setAlertInterval(qint64 minutes); // 获取本次运行时间(秒) qint64 getElapsedSeconds() const; // 获取已运行时间(秒) qint64 getTotalSeconds() const; // 初始化加载参数 void loadConfig(RFIDPara_t* para); // 更新参数 void updatePara(RFIDPara_t* para); // 授权时 void authorizationAccepted(RFIDPara_t* para); signals: void sig_alertTimeout(); void sig_updateTimeoutDay(int days); void sig_saveRunTime(); private slots: void slt_checkRunTime(); void slt_recodeTime(); private: RunTimeCtrl(); QTimer *m_checkTimer = nullptr; // 检查计时器 QTimer *m_alertTimer = nullptr; // 提示计时器 QTimer *m_runTimer = nullptr; // 运行计时器,记录运行时间和更新总时间 QDateTime m_startTime; // 开始时间 QDateTime m_stopTime; // 停止时间 unsigned int m_stopTimeHours = 0; // 停止时间(小时) int m_alertIntervalMinutes = 180; // 提示间隔(分钟) bool m_isAlter = false; // 启动提示计时器标志 quint64 m_elapsedSeconds = 0; // 本次运行的时间 quint64 m_totalSeconds = 0; // 总运行时间 30s更新一次 // todo 后续一个相关功能建立一个结构体和独立定时器 RFIDPara_t m_para; int timeoutDay = 0; void init(); bool checkRunTime(); bool checkTimeoutDay(); }; #endif // RUNTIMECTRL_H