vsettingsdialog.h 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275
  1. #ifndef VSETTINGSDIALOG_H
  2. #define VSETTINGSDIALOG_H
  3. #include <QDialog>
  4. #include <QVector>
  5. #include <QString>
  6. class QDialogButtonBox;
  7. class QComboBox;
  8. class QGroupBox;
  9. class QDoubleSpinBox;
  10. class QSpinBox;
  11. class QCheckBox;
  12. class VLineEdit;
  13. class QStackedLayout;
  14. class QListWidget;
  15. class QPlainTextEdit;
  16. class QVBoxLayout;
  17. class VGeneralTab : public QWidget
  18. {
  19. Q_OBJECT
  20. public:
  21. explicit VGeneralTab(QWidget *p_parent = 0);
  22. bool loadConfiguration();
  23. bool saveConfiguration();
  24. private:
  25. QLayout *setupStartupPagesLayout();
  26. bool loadLanguage();
  27. bool saveLanguage();
  28. bool loadSystemTray();
  29. bool saveSystemTray();
  30. bool loadStartupPageType();
  31. bool saveStartupPageType();
  32. bool loadQuickAccess();
  33. bool saveQuickAccess();
  34. // Language
  35. QComboBox *m_langCombo;
  36. // System tray
  37. QCheckBox *m_systemTray;
  38. // Startup page type.
  39. QComboBox *m_startupPageTypeCombo;
  40. // Startup pages.
  41. QPlainTextEdit *m_startupPagesEdit;
  42. // Startup pages add files button.
  43. QPushButton *m_startupPagesAddBtn;
  44. // Quick access note path.
  45. VLineEdit *m_quickAccessEdit;
  46. static const QVector<QString> c_availableLangs;
  47. };
  48. class VLookTab: public QWidget
  49. {
  50. Q_OBJECT
  51. public:
  52. explicit VLookTab(QWidget *p_parent = 0);
  53. bool loadConfiguration();
  54. bool saveConfiguration();
  55. private:
  56. bool loadToolBarIconSize();
  57. bool saveToolBarIconSize();
  58. // Tool bar icon size.
  59. QSpinBox *m_tbIconSizeSpin;
  60. };
  61. class VReadEditTab : public QWidget
  62. {
  63. Q_OBJECT
  64. public:
  65. explicit VReadEditTab(QWidget *p_parent = 0);
  66. bool loadConfiguration();
  67. bool saveConfiguration();
  68. private:
  69. bool loadWebZoomFactor();
  70. bool saveWebZoomFactor();
  71. bool loadSwapFile();
  72. bool saveSwapFile();
  73. bool loadAutoSave();
  74. bool saveAutoSave();
  75. void showTipsAboutAutoSave();
  76. bool loadKeyMode();
  77. bool saveKeyMode();
  78. bool loadFlashAnchor();
  79. bool saveFlashAnchor();
  80. bool loadEditorZoomDelta();
  81. bool saveEditorZoomDelta();
  82. // Web zoom factor.
  83. QCheckBox *m_customWebZoom;
  84. QDoubleSpinBox *m_webZoomFactorSpin;
  85. // Web flash anchor.
  86. QCheckBox *m_flashAnchor;
  87. // Swap file.
  88. QCheckBox *m_swapFile;
  89. // Auto save.
  90. QCheckBox *m_autoSave;
  91. // Key mode.
  92. QComboBox *m_keyModeCB;
  93. // Smart IM in Vim mode.
  94. QCheckBox *m_smartIM;
  95. // Editor zoom delta.
  96. QSpinBox *m_editorZoomDeltaSpin;
  97. QGroupBox *m_readBox;
  98. QGroupBox *m_editBox;
  99. };
  100. class VNoteManagementTab : public QWidget
  101. {
  102. Q_OBJECT
  103. public:
  104. explicit VNoteManagementTab(QWidget *p_parent = 0);
  105. bool loadConfiguration();
  106. bool saveConfiguration();
  107. private slots:
  108. void customImageFolderChanged(int p_state);
  109. void customImageFolderExtChanged(int p_state);
  110. void customAttachmentFolderChanged(int p_state);
  111. private:
  112. bool loadImageFolder();
  113. bool saveImageFolder();
  114. bool loadImageFolderExt();
  115. bool saveImageFolderExt();
  116. bool loadAttachmentFolder();
  117. bool saveAttachmentFolder();
  118. bool loadSingleClickOpen();
  119. bool saveSingleClickOpen();
  120. QGroupBox *m_noteBox;
  121. QGroupBox *m_externalBox;
  122. // Image folder.
  123. QCheckBox *m_customImageFolder;
  124. VLineEdit *m_imageFolderEdit;
  125. // Image folder of External File.
  126. QCheckBox *m_customImageFolderExt;
  127. VLineEdit *m_imageFolderEditExt;
  128. // Attachment folder.
  129. QCheckBox *m_customAttachmentFolder;
  130. VLineEdit *m_attachmentFolderEdit;
  131. // Single click to open note in current tab.
  132. QCheckBox *m_singleClickOpen;
  133. };
  134. class VMarkdownTab : public QWidget
  135. {
  136. Q_OBJECT
  137. public:
  138. explicit VMarkdownTab(QWidget *p_parent = 0);
  139. bool loadConfiguration();
  140. bool saveConfiguration();
  141. private:
  142. bool loadOpenMode();
  143. bool saveOpenMode();
  144. bool loadHeadingSequence();
  145. bool saveHeadingSequence();
  146. bool loadColorColumn();
  147. bool saveColorColumn();
  148. bool loadMathJax();
  149. bool saveMathJax();
  150. bool loadPlantUML();
  151. bool savePlantUML();
  152. bool loadGraphviz();
  153. bool saveGraphviz();
  154. // Default note open mode for markdown.
  155. QComboBox *m_openModeCombo;
  156. // Whether enable heading sequence.
  157. QComboBox *m_headingSequenceTypeCombo;
  158. QComboBox *m_headingSequenceLevelCombo;
  159. // Color column in code block.
  160. VLineEdit *m_colorColumnEdit;
  161. // MathJax.
  162. VLineEdit *m_mathjaxConfigEdit;
  163. // PlantUML.
  164. QComboBox *m_plantUMLModeCombo;
  165. VLineEdit *m_plantUMLServerEdit;
  166. VLineEdit *m_plantUMLJarEdit;
  167. // Graphviz.
  168. QCheckBox *m_graphvizCB;
  169. VLineEdit *m_graphvizDotEdit;
  170. };
  171. class VMiscTab : public QWidget
  172. {
  173. Q_OBJECT
  174. public:
  175. explicit VMiscTab(QWidget *p_parent = 0);
  176. bool loadConfiguration();
  177. bool saveConfiguration();
  178. private:
  179. bool loadMatchesInPage();
  180. bool saveMatchesInPage();
  181. // Highlight matches in page.
  182. QCheckBox *m_matchesInPageCB;
  183. };
  184. class VSettingsDialog : public QDialog
  185. {
  186. Q_OBJECT
  187. public:
  188. explicit VSettingsDialog(QWidget *p_parent = 0);
  189. private slots:
  190. void saveConfiguration();
  191. void resetVNote();
  192. void resetLayout();
  193. private:
  194. void loadConfiguration();
  195. void addTab(QWidget *p_widget, const QString &p_label);
  196. QStackedLayout *m_tabs;
  197. QListWidget *m_tabList;
  198. QDialogButtonBox *m_btnBox;
  199. // Reset all the configuration of VNote.
  200. QPushButton *m_resetVNoteBtn;
  201. // Reset the layout.
  202. QPushButton *m_resetLayoutBtn;
  203. };
  204. #endif // VSETTINGSDIALOG_H