/** * * @file FITKAbstractAutoSaver.h * @brief 声明抽象自动保存器,用于自动保存工程文件、脚本等 * @author libaojun (libaojunqd@foxmail.com) * @date 2024-09-13 * */ #ifndef _FITKABSTRACT_AUTO_SAVER_H___ #define _FITKABSTRACT_AUTO_SAVER_H___ #include "FITKAppFrameworkAPI.h" #include class QTimer; namespace AppFrame { /** * @brief 抽象自动保存器,间隔一定时间执行一次 * @author libaojun (libaojunqd@foxmail.com) * @date 2024-09-13 */ class FITKAppFrameworkAPI FITKAbstractAutoSaver : public QObject { Q_OBJECT public: /** * @brief Construct a new FITKAbstractAutoSaver object * @param[i] msc 触发时间间隔 单位毫秒 * @author libaojun (libaojunqd@foxmail.com) * @date 2024-09-13 */ explicit FITKAbstractAutoSaver(const int & msc = 120000); /** * @brief Destroy the FITKAbstractAutoSaver object * @author libaojun (libaojunqd@foxmail.com) * @date 2024-09-13 */ virtual ~FITKAbstractAutoSaver(); /** * @brief 启动自动保存器 * @author libaojun (libaojunqd@foxmail.com) * @date 2024-09-13 */ virtual void start(); /** * @brief 停止计时 * @author libaojun (libaojunqd@foxmail.com) * @date 2024-09-13 */ virtual void stop(); /** * @brief 设置时间间隔,默认2分钟 * @param[i] msc 触发时间间隔 单位毫秒 * @author libaojun (libaojunqd@foxmail.com) * @date 2024-09-13 */ void setTimeInterval(const int & msc =120000 ); /** * @brief 自动保存逻辑 * @author libaojun (libaojunqd@foxmail.com) * @date 2024-09-13 */ virtual void autoSave() = 0; /** * @brief 程序正常运行结束,执行操作 * @author libaojun (libaojunqd@foxmail.com) * @date 2024-09-13 */ virtual void finalize() = 0; private slots: /** * @brief 超时信号 * @author libaojun (libaojunqd@foxmail.com) * @date 2024-09-13 */ void timeOutSlot(); private: /** * @brief 计时器 * @author libaojun (libaojunqd@foxmail.com) * @date 2024-09-13 */ QTimer* _timer{}; }; } #endif