1 #include "csvmodelwriter.h"
3 #include <QAbstractItemModel>
7 CSVModelWriter::CSVModelWriter(const QString &filename, QObject *parent) :
9 filename(filename), model(0)
13 void CSVModelWriter::setModel(const QAbstractItemModel *model)
18 void CSVModelWriter::addColumn(const QString &title, int column, int role)
28 static void writeValue(QTextStream &f, const QString &value)
30 // TODO: quoting if " or \n in string
31 f << "\"" << value << "\"";
34 static void writeSep(QTextStream &f)
39 static void writeNewline(QTextStream &f)
44 bool CSVModelWriter::write()
47 if(!file.open(QIODevice::WriteOnly | QIODevice::Text))
49 QTextStream out(&file);
54 numRows = model->rowCount();
58 for(int i=0; i<columns.size(); ++i)
64 writeValue(out, columns[i].title);
69 for(int j=0; j<numRows; ++j)
71 for(int i=0; i<columns.size(); ++i)
77 QVariant data = model->index(j, columns[i].column).data(columns[i].role);
78 writeValue(out, data.toString());
85 return file.error() == QFile::NoError;