exportdialog.h 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171
  1. #ifndef EXPORTDIALOG_H
  2. #define EXPORTDIALOG_H
  3. #include "scrolldialog.h"
  4. #include <QSharedPointer>
  5. #include <export/exportdata.h>
  6. class QGroupBox;
  7. class QPushButton;
  8. class QComboBox;
  9. class QCheckBox;
  10. class QLineEdit;
  11. class QProgressBar;
  12. class QPlainTextEdit;
  13. class QPageLayout;
  14. namespace vnotex
  15. {
  16. class Notebook;
  17. class Node;
  18. class Buffer;
  19. class Exporter;
  20. class ExportDialog : public ScrollDialog
  21. {
  22. Q_OBJECT
  23. public:
  24. // Current notebook/folder/buffer.
  25. ExportDialog(Notebook *p_notebook,
  26. Node *p_folder,
  27. Buffer *p_buffer,
  28. QWidget *p_parent = nullptr);
  29. protected:
  30. void rejectedButtonClicked() Q_DECL_OVERRIDE;
  31. private slots:
  32. void updateProgress(int p_val, int p_maximum);
  33. void appendLog(const QString &p_log);
  34. private:
  35. enum AdvancedSettings
  36. {
  37. General,
  38. HTML,
  39. PDF,
  40. Max
  41. };
  42. void setupUI();
  43. QGroupBox *setupSourceGroup(QWidget *p_parent);
  44. QGroupBox *setupTargetGroup(QWidget *p_parent);
  45. QGroupBox *setupAdvancedGroup(QWidget *p_parent);
  46. QWidget *setupGeneralAdvancedSettings(QWidget *p_parent);
  47. QWidget *getHtmlAdvancedSettings();
  48. QWidget *getPdfAdvancedSettings();
  49. void showAdvancedSettings(AdvancedSettings p_settings);
  50. void setupButtonBox();
  51. QString getOutputDir() const;
  52. void initOptions();
  53. void restoreFields(const ExportOption &p_option);
  54. void saveFields(ExportOption &p_option);
  55. void restoreFields(const ExportHtmlOption &p_option);
  56. void saveFields(ExportHtmlOption &p_option);
  57. void restoreFields(const ExportPdfOption &p_option);
  58. void saveFields(ExportPdfOption &p_option);
  59. void startExport();
  60. void updateUIOnExport();
  61. // Return exported files count.
  62. int doExport(ExportOption p_option);
  63. Exporter *getExporter();
  64. QString getDefaultOutputDir() const;
  65. void updatePageLayoutButtonLabel();
  66. // Managed by QObject.
  67. Exporter *m_exporter = nullptr;
  68. Notebook *m_notebook = nullptr;
  69. Node *m_folder = nullptr;
  70. Buffer *m_buffer = nullptr;
  71. // Last exported single file.
  72. QString m_exportedFile;
  73. bool m_exportOngoing = false;
  74. QPushButton *m_exportBtn = nullptr;
  75. QPushButton *m_openDirBtn = nullptr;
  76. QPushButton *m_copyContentBtn = nullptr;
  77. QComboBox *m_sourceComboBox = nullptr;
  78. QComboBox *m_targetFormatComboBox = nullptr;
  79. QCheckBox *m_transparentBgCheckBox = nullptr;
  80. QComboBox *m_renderingStyleComboBox = nullptr;
  81. QComboBox *m_syntaxHighlightStyleComboBox = nullptr;
  82. QLineEdit *m_outputDirLineEdit = nullptr;
  83. QProgressBar *m_progressBar = nullptr;
  84. QGroupBox *m_advancedGroupBox = nullptr;
  85. QVector<QWidget *> m_advancedSettings;
  86. // General settings.
  87. QCheckBox *m_recursiveCheckBox = nullptr;
  88. QCheckBox *m_exportAttachmentsCheckBox = nullptr;
  89. // HTML settings.
  90. QCheckBox *m_embedStylesCheckBox = nullptr;
  91. QCheckBox *m_embedImagesCheckBox = nullptr;
  92. QCheckBox *m_completePageCheckBox = nullptr;
  93. QCheckBox *m_useMimeHtmlFormatCheckBox = nullptr;
  94. QCheckBox *m_addOutlinePanelCheckBox = nullptr;
  95. // PDF settings.
  96. QPushButton *m_pageLayoutBtn = nullptr;
  97. QCheckBox *m_addTableOfContentsCheckBox = nullptr;
  98. QCheckBox *m_useWkhtmltopdfCheckBox = nullptr;
  99. QLineEdit *m_wkhtmltopdfExePathLineEdit = nullptr;
  100. QLineEdit *m_wkhtmltopdfArgsLineEdit = nullptr;
  101. QSharedPointer<QPageLayout> m_pageLayout;
  102. ExportOption m_option;
  103. };
  104. }
  105. #endif // EXPORTDIALOG_H