Line data Source code
1 : // Copyright (c) 2011-2013 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 = 0);
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
|