Nie możesz wybrać więcej, niż 25 tematów Tematy muszą się zaczynać od litery lub cyfry, mogą zawierać myślniki ('-') i mogą mieć do 35 znaków.

69 wiersze
1.9 KiB

  1. #include "project.h"
  2. #include <QJsonDocument>
  3. #include <QJsonObject>
  4. #include <QJsonArray>
  5. #include <QFile>
  6. bool Project::saveToFile(const QString& filePath) const {
  7. QJsonObject root;
  8. QJsonArray itemsArray;
  9. for (const ItemData& item : items_) {
  10. QJsonObject obj;
  11. obj["type"] = item.type;
  12. obj["x"] = item.x;
  13. obj["y"] = item.y;
  14. itemsArray.append(obj);
  15. }
  16. root["items"] = itemsArray;
  17. QJsonArray connArray;
  18. for (const ConnectionData& c : connections_) {
  19. QJsonObject obj;
  20. obj["from"] = c.from;
  21. obj["to"] = c.to;
  22. obj["fromType"] = c.fromType;
  23. obj["toType"] = c.toType;
  24. connArray.append(obj);
  25. }
  26. root["connections"] = connArray;
  27. QFile file(filePath);
  28. if (!file.open(QIODevice::WriteOnly))
  29. return false;
  30. file.write(QJsonDocument(root).toJson());
  31. file.close();
  32. return true;
  33. }
  34. bool Project::loadFromFile(const QString& filePath) {
  35. clear();
  36. QFile file(filePath);
  37. if (!file.open(QIODevice::ReadOnly))
  38. return false;
  39. QJsonDocument doc = QJsonDocument::fromJson(file.readAll());
  40. file.close();
  41. if (doc.isNull()) return false;
  42. QJsonObject root = doc.object();
  43. QJsonArray itemsArray = root["items"].toArray();
  44. for (const QJsonValue& v : itemsArray) {
  45. QJsonObject obj = v.toObject();
  46. ItemData d;
  47. d.type = obj["type"].toString();
  48. d.x = obj["x"].toDouble();
  49. d.y = obj["y"].toDouble();
  50. items_.append(d);
  51. }
  52. QJsonArray connArray = root["connections"].toArray();
  53. for (const QJsonValue& v : connArray) {
  54. QJsonObject obj = v.toObject();
  55. ConnectionData d;
  56. d.from = obj["from"].toInt();
  57. d.to = obj["to"].toInt();
  58. d.fromType = obj["fromType"].toInt();
  59. d.toType = obj["toType"].toInt();
  60. connections_.append(d);
  61. }
  62. return true;
  63. }