| 17 | } |
| 18 | |
| 19 | bool FrameFileIO::saveFrameFile(QString &fileName, const QVector<CANFrame>* frameCache) |
| 20 | { |
| 21 | QString filename; |
| 22 | QFileDialog dialog(qApp->activeWindow()); |
| 23 | QSettings settings; |
| 24 | bool result = false; |
| 25 | |
| 26 | QStringList filters; |
| 27 | filters.append(QString(tr("GVRET Logs (*.csv *.CSV)"))); |
| 28 | filters.append(QString(tr("CRTD Logs (*.crt *.crtd *.CRT *.CRTD)"))); |
| 29 | filters.append(QString(tr("Generic ID/Data CSV (*.csv *.CSV)"))); |
| 30 | filters.append(QString(tr("BusMaster Log (*.log *.LOG)"))); |
| 31 | filters.append(QString(tr("Microchip Log (*.can *.CAN)"))); |
| 32 | filters.append(QString(tr("Vector Trace Files (*.trace *.TRACE)"))); |
| 33 | filters.append(QString(tr("IXXAT MiniLog (*.csv *.CSV)"))); |
| 34 | filters.append(QString(tr("CAN-DO Log (*.can *.avc *.evc *.qcc *.CAN *.AVC *.EVC *.QCC)"))); |
| 35 | filters.append(QString(tr("Vehicle Spy (*.csv *.CSV)"))); |
| 36 | filters.append(QString(tr("Candump/Kayak(*.log)"))); |
| 37 | filters.append(QString(tr("Cabana Log(*.csv *.CSV)"))); |
| 38 | filters.append(QString(tr("CANalyzer Ascii Log (*.asc *.ASC)"))); |
| 39 | |
| 40 | dialog.setDirectory(settings.value("FileIO/LoadSaveDirectory", dialog.directory().path()).toString()); |
| 41 | dialog.setFileMode(QFileDialog::AnyFile); |
| 42 | dialog.setNameFilters(filters); |
| 43 | dialog.setViewMode(QFileDialog::Detail); |
| 44 | dialog.setAcceptMode(QFileDialog::AcceptSave); |
| 45 | |
| 46 | if (dialog.exec() == QDialog::Accepted) |
| 47 | { |
| 48 | filename = dialog.selectedFiles()[0]; |
| 49 | |
| 50 | QProgressDialog progress(qApp->activeWindow()); |
| 51 | progress.setWindowModality(Qt::WindowModal); |
| 52 | progress.setLabelText("Saving file..."); |
| 53 | progress.setCancelButton(nullptr); |
| 54 | progress.setRange(0,0); |
| 55 | progress.setMinimumDuration(0); |
| 56 | progress.show(); |
| 57 | |
| 58 | qApp->processEvents(); |
| 59 | |
| 60 | if (dialog.selectedNameFilter() == filters[0]) |
| 61 | { |
| 62 | if (!filename.contains('.')) filename += ".csv"; |
| 63 | result = saveNativeCSVFile(filename, frameCache); |
| 64 | } |
| 65 | if (dialog.selectedNameFilter() == filters[1]) |
| 66 | { |
| 67 | if (!filename.contains('.')) filename += ".txt"; |
| 68 | result = saveCRTDFile(filename, frameCache); |
| 69 | } |
| 70 | if (dialog.selectedNameFilter() == filters[2]) |
| 71 | { |
| 72 | if (!filename.contains('.')) filename += ".csv"; |
| 73 | result = saveGenericCSVFile(filename, frameCache); |
| 74 | } |
| 75 | if (dialog.selectedNameFilter() == filters[3]) |
| 76 | { |