| 266 | } |
| 267 | |
| 268 | void FileManager::performWrite(bool withScopyHeader) |
| 269 | { |
| 270 | QString additionalInfo = ""; |
| 271 | if(openedFor == IMPORT) { |
| 272 | qDebug() << "Can't write when opened for import!"; |
| 273 | return; |
| 274 | } |
| 275 | |
| 276 | QFile exportFile(filename); |
| 277 | exportFile.open(QIODevice::WriteOnly); |
| 278 | QTextStream exportStream(&exportFile); |
| 279 | |
| 280 | additionalInfo = (additionalInformation.size() != 0) ? additionalInformation[0] : ""; |
| 281 | |
| 282 | if(withScopyHeader) { |
| 283 | QStringList header = ScopyFileHeader::getHeader(); |
| 284 | |
| 285 | // prepare header |
| 286 | exportStream << header[0] << separator << QString(SCOPY_VERSION_GIT) << "\n"; |
| 287 | exportStream << header[1] << separator << QDate::currentDate().toString("dddd MMMM dd/MM/yyyy") << "\n"; |
| 288 | exportStream << header[2] << separator << "M2K" |
| 289 | << "\n"; |
| 290 | exportStream << header[3] << separator << data.size() << "\n"; |
| 291 | exportStream << header[4] << separator << sampleRate << "\n"; |
| 292 | exportStream << header[5] << separator << toolName << "\n"; |
| 293 | exportStream << header[6] << separator << additionalInfo << "\n"; |
| 294 | } |
| 295 | |
| 296 | // column names row |
| 297 | exportStream << "Sample" << separator; |
| 298 | bool skipFirstSeparator = true; |
| 299 | for(const QString &columnName : qAsConst(columnNames)) { |
| 300 | if(!skipFirstSeparator) |
| 301 | exportStream << separator; |
| 302 | exportStream << columnName; |
| 303 | skipFirstSeparator = false; |
| 304 | } |
| 305 | exportStream << "\n"; |
| 306 | |
| 307 | for(int i = 0; i < data.size(); ++i) { |
| 308 | skipFirstSeparator = true; |
| 309 | exportStream << QString::number(i) << separator; |
| 310 | for(int j = 0; j < data[i].size(); ++j) { |
| 311 | if(!skipFirstSeparator) |
| 312 | exportStream << separator; |
| 313 | exportStream << data[i][j]; |
| 314 | skipFirstSeparator = false; |
| 315 | } |
| 316 | |
| 317 | if(!decoder_data.isEmpty()) { |
| 318 | for(int j = 0; j < decoder_data[i].size(); ++j) { |
| 319 | if(!skipFirstSeparator) |
| 320 | exportStream << separator; |
| 321 | if(!decoder_data[i][j].isEmpty()) { |
| 322 | exportStream << "\"" << decoder_data[i][j] << "\""; |
| 323 | } |
| 324 | skipFirstSeparator = false; |
| 325 | } |