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 <QJsonObject>
 | 
			
		||||
#include <QTextStream>
 | 
			
		||||
#include <QVariant>
 | 
			
		||||
 | 
			
		||||
namespace QmlDesigner {
 | 
			
		||||
@@ -269,4 +270,29 @@ QJsonArray CollectionDetails::getJsonCollection() const
 | 
			
		||||
    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
 | 
			
		||||
 
 | 
			
		||||
@@ -69,6 +69,8 @@ public:
 | 
			
		||||
 | 
			
		||||
    void swap(CollectionDetails &other);
 | 
			
		||||
    QJsonArray getJsonCollection() const;
 | 
			
		||||
    QString getCsvCollection() const;
 | 
			
		||||
 | 
			
		||||
    CollectionDetails &operator=(const CollectionDetails &other);
 | 
			
		||||
 | 
			
		||||
private:
 | 
			
		||||
 
 | 
			
		||||
@@ -361,7 +361,6 @@ void SingleCollectionModel::loadJsonCollection(const QString &source, const QStr
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    SourceFormat sourceFormat = jsonFileIsOk ? SourceFormat::Json : SourceFormat::Unknown;
 | 
			
		||||
 | 
			
		||||
    beginResetModel();
 | 
			
		||||
    m_currentCollection.resetDetails(getJsonHeaders(collectionNodes), elements, sourceFormat);
 | 
			
		||||
    endResetModel();
 | 
			
		||||
@@ -401,7 +400,6 @@ void SingleCollectionModel::loadCsvCollection(const QString &source,
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    SourceFormat sourceFormat = csvFileIsOk ? SourceFormat::Csv : SourceFormat::Unknown;
 | 
			
		||||
 | 
			
		||||
    beginResetModel();
 | 
			
		||||
    m_currentCollection.resetDetails(headers, elements, sourceFormat);
 | 
			
		||||
    endResetModel();
 | 
			
		||||
@@ -436,4 +434,14 @@ bool SingleCollectionModel::saveCollectionAsJson(const QString &collection, cons
 | 
			
		||||
    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
 | 
			
		||||
 
 | 
			
		||||
@@ -74,6 +74,7 @@ private:
 | 
			
		||||
    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);
 | 
			
		||||
    bool saveCollectionAsCsv(const QString &path, const QString &content);
 | 
			
		||||
 | 
			
		||||
    QHash<CollectionReference, CollectionDetails> m_openedCollections;
 | 
			
		||||
    CollectionDetails m_currentCollection;
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user