vconfigmanager.cpp 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. #include "vconfigmanager.h"
  2. #include <QDir>
  3. #include <QFile>
  4. #include <QString>
  5. #include <QJsonArray>
  6. #include <QJsonObject>
  7. #include <QJsonDocument>
  8. #include <QtDebug>
  9. #include <QTextEdit>
  10. #include "utils/vutils.h"
  11. #include "vstyleparser.h"
  12. const QString VConfigManager::dirConfigFileName = QString(".vnote.json");
  13. VConfigManager* VConfigManager::instance = NULL;
  14. VConfigManager::VConfigManager()
  15. : baseEditFont(QFont())
  16. {
  17. }
  18. VConfigManager* VConfigManager::getInst()
  19. {
  20. if (!instance) {
  21. instance = new VConfigManager();
  22. instance->initialize();
  23. }
  24. return instance;
  25. }
  26. void VConfigManager::initialize()
  27. {
  28. baseEditFont.setPointSize(11);
  29. baseEditPalette = QTextEdit().palette();
  30. updateMarkdownEditStyle();
  31. }
  32. QJsonObject VConfigManager::readDirectoryConfig(const QString &path)
  33. {
  34. QString configFile = QDir(path).filePath(dirConfigFileName);
  35. qDebug() << "read config file:" << configFile;
  36. QFile config(configFile);
  37. if (!config.open(QIODevice::ReadOnly)) {
  38. qWarning() << "error: fail to read directory configuration file:"
  39. << configFile;
  40. return QJsonObject();
  41. }
  42. QByteArray configData = config.readAll();
  43. return QJsonDocument::fromJson(configData).object();
  44. }
  45. bool VConfigManager::writeDirectoryConfig(const QString &path, const QJsonObject &configJson)
  46. {
  47. QString configFile = QDir(path).filePath(dirConfigFileName);
  48. qDebug() << "write config file:" << configFile;
  49. QFile config(configFile);
  50. if (!config.open(QIODevice::WriteOnly)) {
  51. qWarning() << "error: fail to open directory configuration file for write:"
  52. << configFile;
  53. return false;
  54. }
  55. QJsonDocument configDoc(configJson);
  56. config.write(configDoc.toJson());
  57. return true;
  58. }
  59. bool VConfigManager::deleteDirectoryConfig(const QString &path)
  60. {
  61. QString configFile = QDir(path).filePath(dirConfigFileName);
  62. QFile config(configFile);
  63. if (!config.remove()) {
  64. qWarning() << "error: fail to delete directory configuration file:"
  65. << configFile;
  66. return false;
  67. }
  68. qDebug() << "delete config file:" << configFile;
  69. return true;
  70. }
  71. void VConfigManager::updateMarkdownEditStyle()
  72. {
  73. // Read style file .mdhl
  74. QString file(":/resources/styles/default.mdhl");
  75. QString styleStr = VUtils::readFileFromDisk(file);
  76. if (styleStr.isEmpty()) {
  77. return;
  78. }
  79. VStyleParser parser;
  80. parser.parseMarkdownStyle(styleStr);
  81. mdHighlightingStyles = parser.fetchMarkdownStyles(baseEditFont);
  82. mdEditPalette = baseEditPalette;
  83. mdEditFont = baseEditFont;
  84. parser.fetchMarkdownEditorStyles(mdEditPalette, mdEditFont);
  85. }