argdialog.h 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. #ifndef ARGDIALOG_H
  2. #define ARGDIALOG_H
  3. #include <include/ui/kfiledialog.h>
  4. #include <QDialog>
  5. #include <QFile>
  6. #include <QFileDialog>
  7. #include <QKeyEvent>
  8. #include <QMessageBox>
  9. #include <QPushButton>
  10. #include <headers/util.hpp>
  11. #include <include/task/instagram_task.hpp>
  12. #include <include/task/task.hpp>
  13. #include <string_view>
  14. #include <unordered_map>
  15. using namespace Scheduler;
  16. typedef std::string Str;
  17. typedef struct IGPost {
  18. std::string header = "Learn to speak like native Korean speakers 🙆‍♀️🇰🇷";
  19. std::string description;
  20. std::string datetime;
  21. std::string promote_share = "Share the post through IG story if you enjoy the phrase 🙋‍♀️";
  22. std::string link_in_bio = "Subscribe to my YouTube channel (link 🔗in bio) to learn more about Korean language and culture ❤";
  23. std::vector<std::string> hashtags;
  24. std::vector<std::string> requested_by;
  25. const char *requested_by_phrase = "The phrase was requested by ";
  26. std::string user;
  27. bool is_video;
  28. bool isReady() {
  29. return header.size() > 0 && description.size() > 0 && datetime.size() > 0 &&
  30. promote_share.size() > 0 && link_in_bio.size() > 0 &&
  31. hashtags.size() > 0 && requested_by.size() > 0 && !files.empty() &&
  32. files.at(0).path.size() > 0 && user.size() > 0;
  33. }
  34. } IGPost;
  35. namespace Ui {
  36. class ArgDialog;
  37. }
  38. class ArgDialog : public QDialog {
  39. Q_OBJECT
  40. public:
  41. explicit ArgDialog(QWidget *parent = nullptr);
  42. virtual void keyPressEvent(QKeyEvent* e);
  43. void setFilePath(QString path);
  44. virtual void accept() override;
  45. void setConfig(QString config_string);
  46. ~ArgDialog();
  47. signals:
  48. void taskRequestReady(Scheduler::Task *task);
  49. private:
  50. void clearPost();
  51. void defaultPost();
  52. void clearTask();
  53. void addToArgList(QString value, QString type);
  54. void addOrReplaceInArgList(QString value, QString type);
  55. void addHashtag(QString tag);
  56. void addRequestedBy(QString value);
  57. void setTaskArguments();
  58. void setArgTypes();
  59. Ui::ArgDialog *ui;
  60. void addItem(QString value, QString type);
  61. void addFile(QString path);
  62. Task *m_task;
  63. IGPost m_ig_post;
  64. QString m_file_path;
  65. QString m_config_string;
  66. };
  67. #endif // ARGDIALOG_H