forked from qt-creator/qt-creator
QmlDesigner: Export collection as CSV
Task-number: QDS-10618 Change-Id: Iaae95dd920b453e53c22fdf65c2f6d80652d5be3 Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io> Reviewed-by: Qt CI Patch Build Bot <ci_patchbuild_bot@qt.io> Reviewed-by: Ali Kianian <ali.kianian@qt.io>
This commit is contained in:
@@ -5,6 +5,7 @@
|
|||||||
|
|
||||||
#include <QJsonArray>
|
#include <QJsonArray>
|
||||||
#include <QJsonObject>
|
#include <QJsonObject>
|
||||||
|
#include <QTextStream>
|
||||||
#include <QVariant>
|
#include <QVariant>
|
||||||
|
|
||||||
namespace QmlDesigner {
|
namespace QmlDesigner {
|
||||||
@@ -269,4 +270,29 @@ QJsonArray CollectionDetails::getJsonCollection() const
|
|||||||
return collectionArray;
|
return collectionArray;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QString CollectionDetails::getCsvCollection() const
|
||||||
|
{
|
||||||
|
QString content;
|
||||||
|
if (d->headers.count() <= 0)
|
||||||
|
return "";
|
||||||
|
|
||||||
|
for (const QString &header : std::as_const(d->headers))
|
||||||
|
content += header + ',';
|
||||||
|
|
||||||
|
content.back() = '\n';
|
||||||
|
|
||||||
|
for (const QJsonObject &elementsRow : std::as_const(d->elements)) {
|
||||||
|
for (const QString &header : std::as_const(d->headers)) {
|
||||||
|
const QJsonValue &value = elementsRow.value(header);
|
||||||
|
|
||||||
|
if (value.isDouble())
|
||||||
|
content += QString::number(value.toDouble()) + ',';
|
||||||
|
else
|
||||||
|
content += value.toString() + ',';
|
||||||
|
}
|
||||||
|
content.back() = '\n';
|
||||||
|
}
|
||||||
|
|
||||||
|
return content;
|
||||||
|
}
|
||||||
} // namespace QmlDesigner
|
} // namespace QmlDesigner
|
||||||
|
|||||||
@@ -69,6 +69,8 @@ public:
|
|||||||
|
|
||||||
void swap(CollectionDetails &other);
|
void swap(CollectionDetails &other);
|
||||||
QJsonArray getJsonCollection() const;
|
QJsonArray getJsonCollection() const;
|
||||||
|
QString getCsvCollection() const;
|
||||||
|
|
||||||
CollectionDetails &operator=(const CollectionDetails &other);
|
CollectionDetails &operator=(const CollectionDetails &other);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|||||||
@@ -361,7 +361,6 @@ void SingleCollectionModel::loadJsonCollection(const QString &source, const QStr
|
|||||||
}
|
}
|
||||||
|
|
||||||
SourceFormat sourceFormat = jsonFileIsOk ? SourceFormat::Json : SourceFormat::Unknown;
|
SourceFormat sourceFormat = jsonFileIsOk ? SourceFormat::Json : SourceFormat::Unknown;
|
||||||
|
|
||||||
beginResetModel();
|
beginResetModel();
|
||||||
m_currentCollection.resetDetails(getJsonHeaders(collectionNodes), elements, sourceFormat);
|
m_currentCollection.resetDetails(getJsonHeaders(collectionNodes), elements, sourceFormat);
|
||||||
endResetModel();
|
endResetModel();
|
||||||
@@ -401,7 +400,6 @@ void SingleCollectionModel::loadCsvCollection(const QString &source,
|
|||||||
}
|
}
|
||||||
|
|
||||||
SourceFormat sourceFormat = csvFileIsOk ? SourceFormat::Csv : SourceFormat::Unknown;
|
SourceFormat sourceFormat = csvFileIsOk ? SourceFormat::Csv : SourceFormat::Unknown;
|
||||||
|
|
||||||
beginResetModel();
|
beginResetModel();
|
||||||
m_currentCollection.resetDetails(headers, elements, sourceFormat);
|
m_currentCollection.resetDetails(headers, elements, sourceFormat);
|
||||||
endResetModel();
|
endResetModel();
|
||||||
@@ -436,4 +434,14 @@ bool SingleCollectionModel::saveCollectionAsJson(const QString &collection, cons
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool SingleCollectionModel::saveCollectionAsCsv(const QString &path, const QString &content)
|
||||||
|
{
|
||||||
|
QFile file(path);
|
||||||
|
|
||||||
|
if (file.open(QFile::WriteOnly) && file.write(content.toUtf8()))
|
||||||
|
return true;
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace QmlDesigner
|
} // namespace QmlDesigner
|
||||||
|
|||||||
@@ -74,6 +74,7 @@ private:
|
|||||||
void loadJsonCollection(const QString &source, const QString &collection);
|
void loadJsonCollection(const QString &source, const QString &collection);
|
||||||
void loadCsvCollection(const QString &source, const QString &collectionName);
|
void loadCsvCollection(const QString &source, const QString &collectionName);
|
||||||
bool saveCollectionAsJson(const QString &collection, const QJsonArray &content, const QString &source);
|
bool saveCollectionAsJson(const QString &collection, const QJsonArray &content, const QString &source);
|
||||||
|
bool saveCollectionAsCsv(const QString &path, const QString &content);
|
||||||
|
|
||||||
QHash<CollectionReference, CollectionDetails> m_openedCollections;
|
QHash<CollectionReference, CollectionDetails> m_openedCollections;
|
||||||
CollectionDetails m_currentCollection;
|
CollectionDetails m_currentCollection;
|
||||||
|
|||||||
Reference in New Issue
Block a user