#ifndef SRUNNINGPROCESS #define SRUNNINGPROCESS #include #include #include #include "sutilclass.h" #include #include "scompanyprocess.h" #include "serrorprocess.h" class SRunningProcess:public QObject { Q_OBJECT private: enum class E_PROCESS_MODE { WAIT = 0, RUN }; public: SRunningProcess(); bool isRunning(); void setList(const QVector& _list); void setList(QVector&& _list); void setList(const QVector& _list); void setList(QVector&& _list); template void start(QVector&& _list); public slots: void update(); void stop(); void start(); private: void terminate(); void initConnect(); private slots: void slotLog(const QString& _strLog); void slotUserAbort(); void slotCompanyComplete(int _num); void slotSuccessErrorCompany(int _num); void slotTerminateError(); void slotTerminateNormal(); void slotCompanyOutDated(const QVector& _vecCompanyNum); void slotCompanyStart(int _companyNum); signals: void signalLog(const QString& _strLog); void signalUserAbort(); void signalTerminateNormal(const QVector& _error, const QMap& _report); void signalTerminateError(); void signalCompanyComplete(int _num, const SReportSummary& summary); void signalSuccessErrorCompany(int _num); void signalCompanyOutDated(const QVector& _vecCompanyNum); void signalCompanyStart(int _companyNum); private: std::unique_ptr m_pTimer; std::shared_ptr m_pErrorProcess; std::shared_ptr m_pCompanyProcess; E_PROCESS_MODE m_eMode; std::shared_ptr m_pCurrentProcess; }; #endif // SRUNNINGPROCESS