#ifndef DATAPROCESSWORKPOOL_H #define DATAPROCESSWORKPOOL_H #include #include #include namespace DataProcessWorkPool { class ParticleDataTask : public QRunnable { public: void SetAllChannelParticleDataFilename(const QString& all_channel_particle_data_filename); void SetFinishedNotifier(QObject* finished_notifier, const char* finished_process, const QString& project_name); const QString& GetAllChannelParticleDataFilename() const; const QString& GetProjectName() const; const char* GetFinishedNotifierProcess() const; QObject* GetFinishedNotifier() const; virtual bool IsValidSetWorkParameters() const; void StartTask(); virtual void run() override; private: virtual bool processEveryChannelParticleData() = 0; private: QString _all_channel_particle_data_filename; QObject* _finished_notifier { nullptr }; const char* _finished_notifier_process { nullptr }; QString _project_name; }; 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