MCPcopy Create free account
hub / github.com/KDAB/KDChart / loadFromCSV

Method loadFromCSV

examples/tools/TableModel.cpp:128–189  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

126}
127
128bool TableModel::loadFromCSV(const QString &filename)
129{
130 QFile file(filename);
131 if (!file.exists() || !file.open(QIODevice::ReadOnly)) {
132 qDebug() << "TableModel::loadFromCSV: file" << filename
133 << "does not exist or could not be opened";
134 return false;
135 }
136
137 QStringList lines;
138 while (!file.atEnd()) {
139 lines.append(QString::fromUtf8(file.readLine()));
140 }
141
142 setTitleText(QString());
143 m_rows.clear();
144 m_rows.resize(qMax(0, lines.size() - (m_dataHasHorizontalHeaders ? 1 : 0)));
145
146 for (int row = 0; row < lines.size(); ++row) {
147 QStringList cells = splitLine(lines.at(row));
148
149 QVector<QVariant> values(qMax(0, cells.size() - (m_dataHasVerticalHeaders ? 1 : 0)));
150
151 for (int column = 0; column < cells.size(); ++column) {
152 QString cell = cells.at(column);
153
154 if (row == 0 && m_dataHasHorizontalHeaders) {
155 // interpret the first row as column headers:
156 // the first one is an exception: interpret that as title
157 if (column == 0 && m_dataHasVerticalHeaders) {
158 setTitleText(cell);
159 } else {
160 m_horizontalHeaderData.append(cell);
161 }
162 } else {
163 if (column == 0 && m_dataHasVerticalHeaders) {
164 // interpret first column as row headers:
165 m_verticalHeaderData.append(cell);
166 } else {
167 // try to interpret cell values as floating point
168 bool convertedOk = false;
169 qreal numeric = cell.toDouble(&convertedOk);
170 const int destColumn = column - (m_dataHasVerticalHeaders ? 1 : 0);
171 values[destColumn] = convertedOk ? numeric : (cell.isEmpty() ? QVariant() : cell);
172 }
173 }
174 }
175 const int destRow = row - (m_dataHasHorizontalHeaders ? 1 : 0);
176 if (destRow >= 0) {
177 m_rows[destRow] = values;
178 }
179 }
180
181 beginResetModel();
182 endResetModel();
183
184 if (m_rows.isEmpty()) {
185 qDebug() << "TableModel::loadFromCSV: table loaded, but no "

Callers 15

TestBarDiagramsClass · 0.80
TestLineDiagramsClass · 0.80
MainWindowMethod · 0.80
updateDataMethod · 0.80
TestPieDiagramsClass · 0.80
TestLegendsClass · 0.80
TestMeasureClass · 0.80
TestPolarPlanesClass · 0.80
TestAxisOwnershipClass · 0.80
TestPolarDiagramsClass · 0.80
MainWindowMethod · 0.80

Calls 7

setTitleTextFunction · 0.85
QStringClass · 0.85
splitLineFunction · 0.85
sizeMethod · 0.80
clearMethod · 0.45
resizeMethod · 0.45
isEmptyMethod · 0.45

Tested by

no test coverage detected