84 lines
1.9 KiB
C++
84 lines
1.9 KiB
C++
#ifndef RUNTIMECTRL_H
|
|
#define RUNTIMECTRL_H
|
|
|
|
#include <QDateTime>
|
|
#include <QObject>
|
|
#include <QTimer>
|
|
#include <QSettings>
|
|
#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; // 运行计时器,记录运行时间和更新总时间
|
|
int m_alertIntervalMinutes = 60; // 提示间隔(分钟)
|
|
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
|