Bitcoin Core
31.1.0
P2P Digital Currency
Toggle main menu visibility
Loading...
Searching...
No Matches
src
qt
csvmodelwriter.cpp
Go to the documentation of this file.
1
// Copyright (c) 2011-present 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
#include <
qt/csvmodelwriter.h
>
6
7
#include <QAbstractItemModel>
8
#include <QFile>
9
#include <QTextStream>
10
11
CSVModelWriter::CSVModelWriter
(
const
QString& _filename, QObject* parent)
12
: QObject(parent),
13
filename
(_filename)
14
{
15
}
16
17
void
CSVModelWriter::setModel
(
const
QAbstractItemModel *_model)
18
{
19
this->
model
= _model;
20
}
21
22
void
CSVModelWriter::addColumn
(
const
QString &title,
int
column,
int
role)
23
{
24
Column
col;
25
col.
title
= title;
26
col.
column
= column;
27
col.
role
= role;
28
29
columns
.append(col);
30
}
31
32
static
void
writeValue
(QTextStream &f,
const
QString &value)
33
{
34
QString escaped = value;
35
escaped.replace(
'"'
,
"\"\""
);
36
f <<
"\""
<< escaped <<
"\""
;
37
}
38
39
static
void
writeSep
(QTextStream &f)
40
{
41
f <<
","
;
42
}
43
44
static
void
writeNewline
(QTextStream &f)
45
{
46
f <<
"\n"
;
47
}
48
49
bool
CSVModelWriter::write
()
50
{
51
QFile file(
filename
);
52
if
(!file.open(QIODevice::WriteOnly | QIODevice::Text))
53
return
false
;
54
QTextStream out(&file);
55
56
int
numRows = 0;
57
if
(
model
)
58
{
59
numRows =
model
->rowCount();
60
}
61
62
// Header row
63
for
(
int
i=0; i<
columns
.size(); ++i)
64
{
65
if
(i!=0)
66
{
67
writeSep
(out);
68
}
69
writeValue
(out,
columns
[i].title);
70
}
71
writeNewline
(out);
72
73
// Data rows
74
for
(
int
j=0; j<numRows; ++j)
75
{
76
for
(
int
i=0; i<
columns
.size(); ++i)
77
{
78
if
(i!=0)
79
{
80
writeSep
(out);
81
}
82
QVariant data =
model
->index(j,
columns
[i].column).data(
columns
[i].role);
83
writeValue
(out, data.toString());
84
}
85
writeNewline
(out);
86
}
87
88
file.close();
89
90
return
file.error() == QFile::NoError;
91
}
CSVModelWriter::columns
QList< Column > columns
Definition
csvmodelwriter.h:43
CSVModelWriter::CSVModelWriter
CSVModelWriter(const QString &filename, QObject *parent=nullptr)
Definition
csvmodelwriter.cpp:11
CSVModelWriter::write
bool write()
Perform export of the model to CSV.
Definition
csvmodelwriter.cpp:49
CSVModelWriter::setModel
void setModel(const QAbstractItemModel *model)
Definition
csvmodelwriter.cpp:17
CSVModelWriter::filename
QString filename
Definition
csvmodelwriter.h:34
CSVModelWriter::addColumn
void addColumn(const QString &title, int column, int role=Qt::EditRole)
Definition
csvmodelwriter.cpp:22
CSVModelWriter::model
const QAbstractItemModel * model
Definition
csvmodelwriter.h:35
writeValue
static void writeValue(QTextStream &f, const QString &value)
Definition
csvmodelwriter.cpp:32
writeSep
static void writeSep(QTextStream &f)
Definition
csvmodelwriter.cpp:39
writeNewline
static void writeNewline(QTextStream &f)
Definition
csvmodelwriter.cpp:44
csvmodelwriter.h
CSVModelWriter::Column
Definition
csvmodelwriter.h:38
CSVModelWriter::Column::title
QString title
Definition
csvmodelwriter.h:39
CSVModelWriter::Column::role
int role
Definition
csvmodelwriter.h:41
CSVModelWriter::Column::column
int column
Definition
csvmodelwriter.h:40
Generated on
for Bitcoin Core by
1.17.0