task.hpp 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. #ifndef __TASK_HPP__
  2. #define __TASK_HPP__
  3. #include <QString>
  4. #include <memory>
  5. #include <vector>
  6. enum FileType { VIDEO = 1, IMAGE = 2 };
  7. struct KFileData {
  8. QString name;
  9. FileType type;
  10. QString path;
  11. QByteArray bytes;
  12. };
  13. namespace Scheduler {
  14. namespace Type {
  15. static constexpr const char* TEXT = "Text";
  16. static constexpr const char* FILE = "File";
  17. static constexpr const char* STRINGVECTOR = "StringVector";
  18. static constexpr const char* FILEVECTOR = "FileVector";
  19. static constexpr const char* DATETIME = "DateTime";
  20. static constexpr const char* BOOLEAN = "Boolean";
  21. } // namespace Type
  22. using ArgumentType = const char*;
  23. class TaskArgumentBase {
  24. public:
  25. virtual QString text() const = 0;
  26. };
  27. template <typename T>
  28. class TaskArgument : TaskArgumentBase {
  29. public:
  30. TaskArgument(QString n, ArgumentType t, T _value) {
  31. name = n;
  32. type = t;
  33. value = _value;
  34. }
  35. TaskArgument(TaskArgument&& a) : name(std::move(a.name)), type(std::move(a.type)), value(std::move(a.value)) {}
  36. virtual QString text() const { return name; }
  37. QString name;
  38. ArgumentType type;
  39. T value;
  40. };
  41. using TaskArguments = std::vector<std::unique_ptr<TaskArgumentBase>>;
  42. class Task {
  43. public:
  44. virtual void defineTaskArguments() = 0;
  45. virtual bool isReady() = 0;
  46. virtual const TaskArguments getTaskArguments() = 0;
  47. template <typename T>
  48. void setArgument(QString name, T new_value){};
  49. virtual void clear() = 0;
  50. virtual ~Task(){};
  51. };
  52. } // namespace Scheduler
  53. #endif // __TASK_HPP__