#ifndef DATAPROCESSWORKPOOL_H #define DATAPROCESSWORKPOOL_H #include #include #include namespace DataProcessWorkPool { class DataProcessTask : public QRunnable { public: void SetFinishedNotifier(QObject* finished_notifier, const char* finished_process, const QString& project_name); const QString& GetProjectName() const; const char* GetFinishedNotifierProcess() const; QObject* GetFinishedNotifier() const; virtual bool IsValidSetWorkParameters() const; void StartTask(); virtual void run() override; private: virtual bool processTask() = 0; private: QObject* _finished_notifier { nullptr }; const char* _finished_notifier_process { nullptr }; QString _project_name; }; class ParticleDataTask : public DataProcessTask { public: void SetAllChannelParticleDataFilename(const QString& all_channel_particle_data_filename); const QString& GetAllChannelParticleDataFilename() const; virtual bool IsValidSetWorkParameters() const; private: virtual bool processTask() final; virtual bool processEveryChannelParticleData() = 0; private: QString _all_channel_particle_data_filename; }; class EveryChannelParticleDataSeparateTask : public ParticleDataTask { public: void SetResultDataDir(const QString& result_data_dir); const QString& GetResultDataDir() const; virtual bool IsValidSetWorkParameters() const; private: virtual bool processEveryChannelParticleData() override; private: QString _result_data_dir; }; class EveryChannelParticleCountDataTask : public ParticleDataTask { public: void SetAllChannelCountResultDir(const QString& dir_path); const QString& GetAllChannelCountResultDir() const; void SetEveryChannelCountResultDir(const QString&dir_path); const QString& GetEveryChannelCountResultDir() const; virtual bool IsValidSetWorkParameters() const; private: virtual bool processEveryChannelParticleData() override; private: QString _all_ch_count_dir; QString _every_ch_count_dir; }; class ParticleDataSortTask : public ParticleDataTask { public: void SetSortedResultDir(const QString& sorted_result_dir); const QString& GetSortedResultDir() const; virtual bool IsValidSetWorkParameters() const; private: virtual bool processEveryChannelParticleData() override; private: QString _sorted_result_dir; }; } #endif // DATAPROCESSWORKPOOL_H