vnote.cpp 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. #include <QSettings>
  2. #include <QDebug>
  3. #include <QJsonObject>
  4. #include <QJsonArray>
  5. #include <QDir>
  6. #include "vnote.h"
  7. #include "utils/vutils.h"
  8. #include "vconfigmanager.h"
  9. #include "vmainwindow.h"
  10. extern VConfigManager vconfig;
  11. QString VNote::s_markdownTemplate;
  12. const QString VNote::c_hoedownJsFile = ":/resources/hoedown.js";
  13. const QString VNote::c_markedJsFile = ":/resources/marked.js";
  14. const QString VNote::c_markedExtraFile = ":/utils/marked/marked.min.js";
  15. const QString VNote::c_markdownitJsFile = ":/resources/markdown-it.js";
  16. const QString VNote::c_markdownitExtraFile = ":/utils/markdown-it/markdown-it.min.js";
  17. const QString VNote::c_markdownitAnchorExtraFile = ":/utils/markdown-it/markdown-it-headinganchor.js";
  18. const QString VNote::c_markdownitTaskListExtraFile = ":/utils/markdown-it/markdown-it-task-lists.min.js";
  19. const QString VNote::c_mermaidApiJsFile = ":/utils/mermaid/mermaidAPI.min.js";
  20. const QString VNote::c_mermaidCssFile = ":/utils/mermaid/mermaid.css";
  21. const QString VNote::c_mermaidDarkCssFile = ":/utils/mermaid/mermaid.dark.css";
  22. const QString VNote::c_mermaidForestCssFile = ":/utils/mermaid/mermaid.forest.css";
  23. VNote::VNote(QObject *parent)
  24. : QObject(parent), m_mainWindow(dynamic_cast<VMainWindow *>(parent))
  25. {
  26. initTemplate();
  27. vconfig.getNotebooks(m_notebooks, this);
  28. }
  29. void VNote::initPalette(QPalette palette)
  30. {
  31. m_palette.clear();
  32. m_palette.append(QPair<QString, QString>("base-background",
  33. palette.background().color().name()));
  34. m_palette.append(QPair<QString, QString>("base-foreground",
  35. palette.background().color().name()));
  36. m_palette.append(QPair<QString, QString>("hover-color", "#42A5F5"));
  37. m_palette.append(QPair<QString, QString>("base-color", "#BDBDBD"));
  38. m_palette.append(QPair<QString, QString>("focus-color", "#15AE67"));
  39. m_palette.append(QPair<QString, QString>("logo-base", "#D6EACE"));
  40. m_palette.append(QPair<QString, QString>("logo-max", "#15AE67"));
  41. m_palette.append(QPair<QString, QString>("logo-min", "#75C5B5"));
  42. // Material Design Colors
  43. m_palette.append(QPair<QString, QString>("Teal0", "#E0F2F1"));
  44. m_palette.append(QPair<QString, QString>("Teal1", "#B2DFDB"));
  45. m_palette.append(QPair<QString, QString>("Teal2", "#80CBC4"));
  46. m_palette.append(QPair<QString, QString>("Teal3", "#4DB6AC"));
  47. m_palette.append(QPair<QString, QString>("Teal4", "#26A69A"));
  48. m_palette.append(QPair<QString, QString>("Indigo0", "#E8EAF6"));
  49. m_palette.append(QPair<QString, QString>("Indigo1", "#C5CAE9"));
  50. m_palette.append(QPair<QString, QString>("Indigo2", "#9FA8DA"));
  51. m_palette.append(QPair<QString, QString>("Indigo3", "#7986CB"));
  52. m_palette.append(QPair<QString, QString>("Indigo4", "#5C6BC0"));
  53. m_palette.append(QPair<QString, QString>("Grey0", "#FAFAFA"));
  54. m_palette.append(QPair<QString, QString>("Grey1", "#F5F5F5"));
  55. m_palette.append(QPair<QString, QString>("Grey2", "#EEEEEE"));
  56. m_palette.append(QPair<QString, QString>("Grey3", "#E0E0E0"));
  57. m_palette.append(QPair<QString, QString>("Grey4", "#BDBDBD"));
  58. m_palette.append(QPair<QString, QString>("Grey5", "#9E9E9E"));
  59. m_palette.append(QPair<QString, QString>("Grey6", "#757575"));
  60. m_palette.append(QPair<QString, QString>("Grey7", "#616161"));
  61. m_palette.append(QPair<QString, QString>("Grey8", "#424242"));
  62. m_palette.append(QPair<QString, QString>("Green0", "#E8F5E9"));
  63. m_palette.append(QPair<QString, QString>("Green1", "#C8E6C9"));
  64. m_palette.append(QPair<QString, QString>("Green2", "#A5D6A7"));
  65. m_palette.append(QPair<QString, QString>("Green3", "#81C784"));
  66. m_palette.append(QPair<QString, QString>("Green4", "#66BB6A"));
  67. m_palette.append(QPair<QString, QString>("Green5", "#4CAF50"));
  68. m_palette.append(QPair<QString, QString>("Green6", "#43A047"));
  69. m_palette.append(QPair<QString, QString>("Green7", "#388E3C"));
  70. m_palette.append(QPair<QString, QString>("Green8", "#2E7D32"));
  71. m_palette.append(QPair<QString, QString>("Green9", "#1B5E20"));
  72. }
  73. QString VNote::getColorFromPalette(const QString &p_name) const
  74. {
  75. for (int i = 0; i < m_palette.size(); ++i) {
  76. if (m_palette[i].first == p_name) {
  77. return m_palette[i].second;
  78. }
  79. }
  80. return "White";
  81. }
  82. void VNote::initTemplate()
  83. {
  84. if (s_markdownTemplate.isEmpty()) {
  85. updateTemplate();
  86. }
  87. }
  88. void VNote::updateTemplate()
  89. {
  90. const QString c_markdownTemplatePath(":/resources/markdown_template.html");
  91. // Get background color
  92. QString rgb;
  93. const QString &curRenderBg = vconfig.getCurRenderBackgroundColor();
  94. const QVector<VColor> &predefinedColors = vconfig.getPredefinedColors();
  95. if (curRenderBg != "System") {
  96. for (int i = 0; i < predefinedColors.size(); ++i) {
  97. if (predefinedColors[i].name == curRenderBg) {
  98. rgb = predefinedColors[i].rgb;
  99. break;
  100. }
  101. }
  102. }
  103. QString cssStyle;
  104. if (!rgb.isEmpty()) {
  105. cssStyle = "body { background-color: #" + rgb + "; }";
  106. }
  107. QString styleHolder("<!-- BACKGROUND_PLACE_HOLDER -->");
  108. QString cssHolder("CSS_PLACE_HOLDER");
  109. s_markdownTemplate = VUtils::readFileFromDisk(c_markdownTemplatePath);
  110. s_markdownTemplate.replace(cssHolder, vconfig.getTemplateCssUrl());
  111. if (!cssStyle.isEmpty()) {
  112. s_markdownTemplate.replace(styleHolder, cssStyle);
  113. }
  114. }
  115. const QVector<VNotebook *> &VNote::getNotebooks() const
  116. {
  117. return m_notebooks;
  118. }
  119. QVector<VNotebook *> &VNote::getNotebooks()
  120. {
  121. return m_notebooks;
  122. }