vsettingsdialog.h 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200
  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 QCheckBox;
  11. class VLineEdit;
  12. class QStackedLayout;
  13. class QListWidget;
  14. class QPlainTextEdit;
  15. class QVBoxLayout;
  16. class VGeneralTab : public QWidget
  17. {
  18. Q_OBJECT
  19. public:
  20. explicit VGeneralTab(QWidget *p_parent = 0);
  21. bool loadConfiguration();
  22. bool saveConfiguration();
  23. private:
  24. QLayout *setupStartupPagesLayout();
  25. bool loadLanguage();
  26. bool saveLanguage();
  27. bool loadSystemTray();
  28. bool saveSystemTray();
  29. bool loadStartupPageType();
  30. bool saveStartupPageType();
  31. // Language
  32. QComboBox *m_langCombo;
  33. // System tray
  34. QCheckBox *m_systemTray;
  35. // Startup page type.
  36. QComboBox *m_startupPageTypeCombo;
  37. // Startup pages.
  38. QPlainTextEdit *m_startupPagesEdit;
  39. // Startup pages add files button.
  40. QPushButton *m_startupPagesAddBtn;
  41. static const QVector<QString> c_availableLangs;
  42. };
  43. class VReadEditTab : public QWidget
  44. {
  45. Q_OBJECT
  46. public:
  47. explicit VReadEditTab(QWidget *p_parent = 0);
  48. bool loadConfiguration();
  49. bool saveConfiguration();
  50. private:
  51. bool loadWebZoomFactor();
  52. bool saveWebZoomFactor();
  53. bool loadSwapFile();
  54. bool saveSwapFile();
  55. bool loadAutoSave();
  56. bool saveAutoSave();
  57. void showTipsAboutAutoSave();
  58. bool loadFlashAnchor();
  59. bool saveFlashAnchor();
  60. // Web zoom factor.
  61. QCheckBox *m_customWebZoom;
  62. QDoubleSpinBox *m_webZoomFactorSpin;
  63. // Web flash anchor.
  64. QCheckBox *m_flashAnchor;
  65. // Swap file.
  66. QCheckBox *m_swapFile;
  67. // Auto save.
  68. QCheckBox *m_autoSave;
  69. QGroupBox *m_readBox;
  70. QGroupBox *m_editBox;
  71. };
  72. class VNoteManagementTab : public QWidget
  73. {
  74. Q_OBJECT
  75. public:
  76. explicit VNoteManagementTab(QWidget *p_parent = 0);
  77. bool loadConfiguration();
  78. bool saveConfiguration();
  79. private slots:
  80. void customImageFolderChanged(int p_state);
  81. void customImageFolderExtChanged(int p_state);
  82. void customAttachmentFolderChanged(int p_state);
  83. private:
  84. bool loadImageFolder();
  85. bool saveImageFolder();
  86. bool loadImageFolderExt();
  87. bool saveImageFolderExt();
  88. bool loadAttachmentFolder();
  89. bool saveAttachmentFolder();
  90. bool loadSingleClickOpen();
  91. bool saveSingleClickOpen();
  92. QGroupBox *m_noteBox;
  93. QGroupBox *m_externalBox;
  94. // Image folder.
  95. QCheckBox *m_customImageFolder;
  96. VLineEdit *m_imageFolderEdit;
  97. // Image folder of External File.
  98. QCheckBox *m_customImageFolderExt;
  99. VLineEdit *m_imageFolderEditExt;
  100. // Attachment folder.
  101. QCheckBox *m_customAttachmentFolder;
  102. VLineEdit *m_attachmentFolderEdit;
  103. // Single click to open note in current tab.
  104. QCheckBox *m_singleClickOpen;
  105. };
  106. class VMarkdownTab : public QWidget
  107. {
  108. Q_OBJECT
  109. public:
  110. explicit VMarkdownTab(QWidget *p_parent = 0);
  111. bool loadConfiguration();
  112. bool saveConfiguration();
  113. private:
  114. bool loadOpenMode();
  115. bool saveOpenMode();
  116. bool loadHeadingSequence();
  117. bool saveHeadingSequence();
  118. bool loadColorColumn();
  119. bool saveColorColumn();
  120. // Default note open mode for markdown.
  121. QComboBox *m_openModeCombo;
  122. // Whether enable heading sequence.
  123. QComboBox *m_headingSequenceTypeCombo;
  124. QComboBox *m_headingSequenceLevelCombo;
  125. // Color column in code block.
  126. VLineEdit *m_colorColumnEdit;
  127. };
  128. class VSettingsDialog : public QDialog
  129. {
  130. Q_OBJECT
  131. public:
  132. explicit VSettingsDialog(QWidget *p_parent = 0);
  133. private slots:
  134. void saveConfiguration();
  135. void resetVNote();
  136. void resetLayout();
  137. private:
  138. void loadConfiguration();
  139. void addTab(QWidget *p_widget, const QString &p_label);
  140. QStackedLayout *m_tabs;
  141. QListWidget *m_tabList;
  142. QDialogButtonBox *m_btnBox;
  143. // Reset all the configuration of VNote.
  144. QPushButton *m_resetVNoteBtn;
  145. // Reset the layout.
  146. QPushButton *m_resetLayoutBtn;
  147. };
  148. #endif // VSETTINGSDIALOG_H