#ifndef WORKERFACTORY_H #define WORKERFACTORY_H #include #include "../common/mydefine.h" #include "../common/reflect.h" /** * @brief 备份还原相关任务处理类基类 */ class Worker : public QObject { Q_OBJECT public: explicit Worker(); virtual ~Worker(); signals: // 检测结果信号 void checkResult(int result); // 进度百分比 void progress(int currentRate); // 工作结果信号 void workResult(bool result); // 任务取消 void cancel(); public slots: // 环境检测 void checkEnv(); // 任务处理 void doWork(); protected: // 环境检测,个性化部分派生类去实现 virtual bool checkEnvEx(); // 任务处理,个性化部分派生类去实现 virtual void doWorkEx(); // 任务取消,个性化部分派生类去实现 virtual void cancelEx(); public: void setParam(const BackupWrapper& backupWrapper) { m_backupWrapper = backupWrapper; } public: // 同一时间只能运行一个备份/还原等操作 BackupWrapper m_backupWrapper; // 是否取消操作 bool m_bCancel; }; /** * @brief 备份还原相关任务工厂类 */ class WorkerFactory { public: /** * @brief 根据操作类型和位置创建相应的处理类 * @param type 操作类型,如:系统备份, 系统还原 * @param position 本地备份还是U盘备份: 0-本地备份;1-移动设备备份 * @return Worker派生类对象指针,需调用者释放此对象 */ static Worker * createWorker(int type, int position); }; #endif // WORKERFACTORY_H