vedit.cpp 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. #include <QtWidgets>
  2. #include "vedit.h"
  3. #include "vnote.h"
  4. #include "vconfigmanager.h"
  5. #include "hgmarkdownhighlighter.h"
  6. extern VConfigManager vconfig;
  7. VEdit::VEdit(VNoteFile *noteFile, QWidget *parent)
  8. : QTextEdit(parent), noteFile(noteFile), mdHighlighter(NULL)
  9. {
  10. if (noteFile->docType == DocType::Markdown) {
  11. setPalette(vconfig.getMdEditPalette());
  12. setFont(vconfig.getMdEditFont());
  13. setAcceptRichText(false);
  14. mdHighlighter = new HGMarkdownHighlighter(vconfig.getMdHighlightingStyles(),
  15. 500, document());
  16. } else {
  17. setFont(vconfig.getBaseEditFont());
  18. setAutoFormatting(QTextEdit::AutoBulletList);
  19. }
  20. }
  21. void VEdit::beginEdit()
  22. {
  23. setReadOnly(false);
  24. switch (noteFile->docType) {
  25. case DocType::Html:
  26. setHtml(noteFile->content);
  27. break;
  28. case DocType::Markdown:
  29. setFont(vconfig.getMdEditFont());
  30. setPlainText(noteFile->content);
  31. break;
  32. default:
  33. qWarning() << "error: unknown doc type" << int(noteFile->docType);
  34. }
  35. }
  36. bool VEdit::tryEndEdit()
  37. {
  38. return !document()->isModified();
  39. }
  40. void VEdit::beginSave()
  41. {
  42. if (!document()->isModified()) {
  43. return;
  44. }
  45. switch (noteFile->docType) {
  46. case DocType::Html:
  47. noteFile->content = toHtml();
  48. break;
  49. case DocType::Markdown:
  50. noteFile->content = toPlainText();
  51. break;
  52. default:
  53. qWarning() << "error: unknown doc type" << int(noteFile->docType);
  54. }
  55. }
  56. void VEdit::endSave()
  57. {
  58. document()->setModified(false);
  59. }
  60. void VEdit::reloadFile()
  61. {
  62. switch (noteFile->docType) {
  63. case DocType::Html:
  64. setHtml(noteFile->content);
  65. break;
  66. case DocType::Markdown:
  67. setPlainText(noteFile->content);
  68. break;
  69. default:
  70. qWarning() << "error: unknown doc type" << int(noteFile->docType);
  71. }
  72. }