From 5e2792ff1a8f8368271c84a4e630ff08726cf713 Mon Sep 17 00:00:00 2001
From: Kubat <mael.martin31@gmail.com>
Date: Mon, 30 Aug 2021 14:12:07 +0200
Subject: [PATCH] LIB: Use the JsonBuilder to create "ordered QJsonDocuments",
 to be ordered in the property viewer

---
 .../CRTPSubDocument/AssSubDocument.cc         | 11 +++-----
 .../CRTPSubDocument/AudioSubDocument.cc       | 10 +++----
 .../CRTPSubDocument/VideoSubDocument.cc       |  8 +++---
 src/Lib/Document/VivyDocument.cc              | 27 +++++++------------
 4 files changed, 21 insertions(+), 35 deletions(-)

diff --git a/src/Lib/Document/CRTPSubDocument/AssSubDocument.cc b/src/Lib/Document/CRTPSubDocument/AssSubDocument.cc
index aa47925c..b4650937 100644
--- a/src/Lib/Document/CRTPSubDocument/AssSubDocument.cc
+++ b/src/Lib/Document/CRTPSubDocument/AssSubDocument.cc
@@ -1,4 +1,5 @@
 #include "../CRTPSubDocument.hh"
+#include "../../JsonBuilder.hh"
 
 using namespace Vivy;
 
@@ -32,17 +33,13 @@ AssSubDocument::getStyles() const noexcept
 QJsonDocument
 AssSubDocument::getProperties() const noexcept
 {
-    QJsonDocument ret;
-
     QJsonObject styleObject;
     for (const Ass::StylePtr &style : styles) {
         styleObject.insert(style->getElementName(), style->getProperties().object());
     }
 
-    QJsonObject object{
-        { "Styles", styleObject },
+    return JsonBuilder::createOrderedJsonDocument({
         { "File", filePath },
-    };
-    ret.setObject(object);
-    return ret;
+        { "Styles", styleObject },
+    });
 }
diff --git a/src/Lib/Document/CRTPSubDocument/AudioSubDocument.cc b/src/Lib/Document/CRTPSubDocument/AudioSubDocument.cc
index c26b99e4..c91c3752 100644
--- a/src/Lib/Document/CRTPSubDocument/AudioSubDocument.cc
+++ b/src/Lib/Document/CRTPSubDocument/AudioSubDocument.cc
@@ -1,4 +1,5 @@
 #include "../CRTPSubDocument.hh"
+#include "../../JsonBuilder.hh"
 
 using namespace Vivy;
 
@@ -22,11 +23,8 @@ AudioSubDocument::getElementName() const noexcept
 QJsonDocument
 AudioSubDocument::getProperties() const noexcept
 {
-    QJsonDocument ret;
-    QJsonObject object{
-        { "Audio context", contextPtr->getProperties().object() },
+    return JsonBuilder::createOrderedJsonDocument({
         { "File", filePath },
-    };
-    ret.setObject(object);
-    return ret;
+        { "Audio context", contextPtr->getProperties().object() },
+    });
 }
diff --git a/src/Lib/Document/CRTPSubDocument/VideoSubDocument.cc b/src/Lib/Document/CRTPSubDocument/VideoSubDocument.cc
index 085131ab..6f837e9c 100644
--- a/src/Lib/Document/CRTPSubDocument/VideoSubDocument.cc
+++ b/src/Lib/Document/CRTPSubDocument/VideoSubDocument.cc
@@ -1,4 +1,5 @@
 #include "../CRTPSubDocument.hh"
+#include "../../JsonBuilder.hh"
 
 using namespace Vivy;
 
@@ -22,11 +23,8 @@ VideoSubDocument::getElementName() const noexcept
 QJsonDocument
 VideoSubDocument::getProperties() const noexcept
 {
-    QJsonDocument ret;
-    QJsonObject object{
+    return JsonBuilder::createOrderedJsonDocument({
         { "Video context", contextPtr->getProperties().object() },
         { "File", filePath },
-    };
-    ret.setObject(object);
-    return ret;
+    });
 }
diff --git a/src/Lib/Document/VivyDocument.cc b/src/Lib/Document/VivyDocument.cc
index 01f15771..6749fcc3 100644
--- a/src/Lib/Document/VivyDocument.cc
+++ b/src/Lib/Document/VivyDocument.cc
@@ -1,5 +1,6 @@
 #include "VivyDocument.hh"
 #include "../Utils.hh"
+#include "../JsonBuilder.hh"
 
 using namespace Vivy;
 
@@ -400,21 +401,13 @@ VivyDocument::getElementName() const noexcept
 QJsonDocument
 VivyDocument::getProperties() const noexcept
 {
-    QJsonDocument ret;
-    QJsonObject object;
-    QJsonObject subDocObject;
-
-    subDocObject.insert("Audio sub-document",
-                        audioDocument ? audioDocument->getProperties().object() : QJsonValue());
-    subDocObject.insert("Video sub-document",
-                        videoDocument ? videoDocument->getProperties().object() : QJsonValue());
-    subDocObject.insert("ASS sub-document",
-                        assDocument ? assDocument->getProperties().object() : QJsonValue());
-
-    object.insert("Uuid", getUuid().toString());
-    object.insert("Name", getName());
-    object.insert("Sub documents", subDocObject);
-
-    ret.setObject(object);
-    return ret;
+    return JsonBuilder::createOrderedJsonDocument(
+        { { QStringLiteral("Uuid"), getUuid().toString() },
+          { QStringLiteral("Name"), getName() },
+          { QStringLiteral("Sub documents"),
+            JsonBuilder::createOrderedJsonObject({
+                JsonBuilder::getSubDocumentJson("Audio sub document", audioDocument),
+                JsonBuilder::getSubDocumentJson("Video sub document", videoDocument),
+                JsonBuilder::getSubDocumentJson("ASS sub document", assDocument),
+            }) } });
 }
-- 
GitLab