diff --git a/src/plugins/qmldesigner/components/collectioneditor/collectiondetails.cpp b/src/plugins/qmldesigner/components/collectioneditor/collectiondetails.cpp index 4b8a297140f..c2b29d32f08 100644 --- a/src/plugins/qmldesigner/components/collectioneditor/collectiondetails.cpp +++ b/src/plugins/qmldesigner/components/collectioneditor/collectiondetails.cpp @@ -3,6 +3,7 @@ #include "collectiondetails.h" +#include #include #include @@ -196,4 +197,13 @@ void CollectionDetails::markChanged() d->isChanged = true; } +QJsonArray CollectionDetails::getJsonCollection() const +{ + QJsonArray collectionArray; + for (const QJsonObject &element : std::as_const(d->elements)) + collectionArray.push_back(element); + + return collectionArray; +} + } // namespace QmlDesigner diff --git a/src/plugins/qmldesigner/components/collectioneditor/collectiondetails.h b/src/plugins/qmldesigner/components/collectioneditor/collectiondetails.h index c3ec59f5d8f..0362fbfe5bc 100644 --- a/src/plugins/qmldesigner/components/collectioneditor/collectiondetails.h +++ b/src/plugins/qmldesigner/components/collectioneditor/collectiondetails.h @@ -63,6 +63,7 @@ public: bool markSaved(); void swap(CollectionDetails &other); + QJsonArray getJsonCollection() const; CollectionDetails &operator=(const CollectionDetails &other); private: diff --git a/src/plugins/qmldesigner/components/collectioneditor/singlecollectionmodel.cpp b/src/plugins/qmldesigner/components/collectioneditor/singlecollectionmodel.cpp index a86b42cd169..35219a98da7 100644 --- a/src/plugins/qmldesigner/components/collectioneditor/singlecollectionmodel.cpp +++ b/src/plugins/qmldesigner/components/collectioneditor/singlecollectionmodel.cpp @@ -228,4 +228,25 @@ void SingleCollectionModel::setCollectionName(const QString &newCollectionName) } } +bool SingleCollectionModel::saveCollectionAsJson(const QString &collection, const QJsonArray &content, const QString &source) +{ + QFile sourceFile(source); + if (sourceFile.open(QFile::ReadWrite)) { + QJsonParseError jpe; + QJsonDocument document = QJsonDocument::fromJson(sourceFile.readAll(), &jpe); + + if (jpe.error == QJsonParseError::NoError) { + QJsonObject collectionMap = document.object(); + collectionMap[collection] = content; + document.setObject(collectionMap); + } + + sourceFile.resize(0); + if (sourceFile.write(document.toJson())) + return true; + } + + return false; +} + } // namespace QmlDesigner diff --git a/src/plugins/qmldesigner/components/collectioneditor/singlecollectionmodel.h b/src/plugins/qmldesigner/components/collectioneditor/singlecollectionmodel.h index a545f4b0e78..250f1dae5d5 100644 --- a/src/plugins/qmldesigner/components/collectioneditor/singlecollectionmodel.h +++ b/src/plugins/qmldesigner/components/collectioneditor/singlecollectionmodel.h @@ -42,6 +42,7 @@ private: void setCollectionName(const QString &newCollectionName); void loadJsonCollection(const QString &source, const QString &collection); void loadCsvCollection(const QString &source, const QString &collectionName); + bool saveCollectionAsJson(const QString &collection, const QJsonArray &content, const QString &source); QHash m_openedCollections; CollectionDetails m_currentCollection;