Line data Source code
1 : // Copyright (c) 2011-2020 The Bitcoin Core developers 2 : // Distributed under the MIT software license, see the accompanying 3 : // file COPYING or http://www.opensource.org/licenses/mit-license.php. 4 : 5 : #ifndef BITCOIN_QT_CSVMODELWRITER_H 6 : #define BITCOIN_QT_CSVMODELWRITER_H 7 : 8 : #include <QList> 9 : #include <QObject> 10 : 11 : QT_BEGIN_NAMESPACE 12 : class QAbstractItemModel; 13 : QT_END_NAMESPACE 14 : 15 : /** Export a Qt table model to a CSV file. This is useful for analyzing or post-processing the data in 16 : a spreadsheet. 17 : */ 18 0 : class CSVModelWriter : public QObject 19 : { 20 : Q_OBJECT 21 : 22 : public: 23 : explicit CSVModelWriter(const QString &filename, QObject *parent = nullptr); 24 : 25 : void setModel(const QAbstractItemModel *model); 26 : void addColumn(const QString &title, int column, int role=Qt::EditRole); 27 : 28 : /** Perform export of the model to CSV. 29 : @returns true on success, false otherwise 30 : */ 31 : bool write(); 32 : 33 : private: 34 : QString filename; 35 : const QAbstractItemModel *model; 36 : 37 0 : struct Column 38 : { 39 : QString title; 40 : int column; 41 : int role; 42 : }; 43 : QList<Column> columns; 44 : }; 45 : 46 : #endif // BITCOIN_QT_CSVMODELWRITER_H