Refactored code so that frame file loading/saving is all done through

a unified interface. Updated file filters. Notched up version number.
This commit is contained in:
Collin Kidder
2016-01-21 20:11:35 -05:00
parent 7a28951206
commit a42d9532d7
5 changed files with 129 additions and 241 deletions
+1 -1
View File
@@ -1,7 +1,7 @@
#ifndef CONFIG #ifndef CONFIG
#define CONFIG #define CONFIG
#define VERSION 147 #define VERSION 148
//try to keep this in sync. //try to keep this in sync.
//SavvyCAN will complain if you connect a GVRET board with a revision //SavvyCAN will complain if you connect a GVRET board with a revision
+6 -6
View File
@@ -58,11 +58,11 @@ void FileComparatorWindow::writeSettings()
void FileComparatorWindow::loadInterestedFile() void FileComparatorWindow::loadInterestedFile()
{ {
interestedFrames.clear(); interestedFrames.clear();
QString result = FrameFileIO::loadFrameFile(&interestedFrames); QString resultingFileName;
if (result.length() > 0) if (FrameFileIO::loadFrameFile(resultingFileName, &interestedFrames))
{ {
ui->lblFirstFile->setText(result); ui->lblFirstFile->setText(resultingFileName);
interestedFilename = result; interestedFilename = resultingFileName;
if (interestedFrames.count() > 0 && referenceFrames.count() > 0) calculateDetails(); if (interestedFrames.count() > 0 && referenceFrames.count() > 0) calculateDetails();
} }
} }
@@ -70,8 +70,8 @@ void FileComparatorWindow::loadInterestedFile()
void FileComparatorWindow::loadReferenceFile() void FileComparatorWindow::loadReferenceFile()
{ {
//secondFileFrames.clear(); //secondFileFrames.clear();
QString result = FrameFileIO::loadFrameFile(&referenceFrames); QString resultingFileName;
if (result.length() > 0) if (FrameFileIO::loadFrameFile(resultingFileName, &referenceFrames))
{ {
ui->lblRefFrames->setText(QString::number(referenceFrames.length())); ui->lblRefFrames->setText(QString::number(referenceFrames.length()));
if (interestedFrames.count() > 0 && referenceFrames.count() > 0) calculateDetails(); if (interestedFrames.count() > 0 && referenceFrames.count() > 0) calculateDetails();
+105 -13
View File
@@ -7,21 +7,113 @@ FrameFileIO::FrameFileIO()
} }
QString FrameFileIO::loadFrameFile(QVector<CANFrame>* frameCache) bool FrameFileIO::saveFrameFile(QString &fileName, const QVector<CANFrame>* frameCache)
{
QString filename;
QFileDialog dialog(qApp->activeWindow());
bool result = false;
QStringList filters;
filters.append(QString(tr("GVRET Logs (*.csv *.CSV)")));
filters.append(QString(tr("CRTD Logs (*.txt *.TXT)")));
filters.append(QString(tr("Generic ID/Data CSV (*.csv *.CSV)")));
filters.append(QString(tr("BusMaster Log (*.log *.LOG)")));
filters.append(QString(tr("Microchip Log (*.can *.CAN)")));
filters.append(QString(tr("Vector Trace Files (*.trace *.TRACE)")));
filters.append(QString(tr("IXXAT MiniLog (*.csv *.CSV)")));
filters.append(QString(tr("CAN-DO Log (*.can *.avc *.evc *.qcc *.CAN *.AVC *.EVC *.QCC)")));
dialog.setFileMode(QFileDialog::AnyFile);
dialog.setNameFilters(filters);
dialog.setViewMode(QFileDialog::Detail);
dialog.setAcceptMode(QFileDialog::AcceptSave);
if (dialog.exec() == QDialog::Accepted)
{
filename = dialog.selectedFiles()[0];
QProgressDialog progress(qApp->activeWindow());
progress.setWindowModality(Qt::WindowModal);
progress.setLabelText("Saving file...");
progress.setCancelButton(0);
progress.setRange(0,0);
progress.setMinimumDuration(0);
progress.show();
qApp->processEvents();
if (dialog.selectedNameFilter() == filters[0])
{
if (!filename.contains('.')) filename += ".csv";
result = saveNativeCSVFile(filename, frameCache);
}
if (dialog.selectedNameFilter() == filters[1])
{
if (!filename.contains('.')) filename += ".txt";
result = saveCRTDFile(filename, frameCache);
}
if (dialog.selectedNameFilter() == filters[2])
{
if (!filename.contains('.')) filename += ".csv";
result = saveGenericCSVFile(filename, frameCache);
}
if (dialog.selectedNameFilter() == filters[3])
{
if (!filename.contains('.')) filename += ".log";
result = saveLogFile(filename, frameCache);
}
if (dialog.selectedNameFilter() == filters[4])
{
if (!filename.contains('.')) filename += ".log";
result = saveMicrochipFile(filename, frameCache);
}
if (dialog.selectedNameFilter() == filters[5])
{
if (!filename.contains('.')) filename += ".trace";
result = saveTraceFile(filename, frameCache);
}
if (dialog.selectedNameFilter() == filters[6])
{
if (!filename.contains('.')) filename += ".csv";
result = saveIXXATFile(filename, frameCache);
}
if (dialog.selectedNameFilter() == filters[7])
{
if (!filename.contains('.')) filename += ".can";
result = saveCANDOFile(filename, frameCache);
}
progress.cancel();
if (result)
{
QStringList fileList = filename.split('/');
fileName = fileList[fileList.length() - 1];
return true;
}
return false;
}
return false;
}
bool FrameFileIO::loadFrameFile(QString &fileName, QVector<CANFrame>* frameCache)
{ {
QString filename; QString filename;
QFileDialog dialog; QFileDialog dialog;
bool result = false; bool result = false;
QStringList filters; QStringList filters;
filters.append(QString(tr("GVRET Logs (*.csv)"))); filters.append(QString(tr("GVRET Logs (*.csv *.CSV)")));
filters.append(QString(tr("CRTD Logs (*.txt)"))); filters.append(QString(tr("CRTD Logs (*.txt *.TXT)")));
filters.append(QString(tr("Generic ID/Data CSV (*.csv)"))); filters.append(QString(tr("Generic ID/Data CSV (*.csv *.CSV)")));
filters.append(QString(tr("BusMaster Log (*.log)"))); filters.append(QString(tr("BusMaster Log (*.log *.LOG)")));
filters.append(QString(tr("Microchip Log (*.can)"))); filters.append(QString(tr("Microchip Log (*.can *.CAN)")));
filters.append(QString(tr("Vector trace files (*.trace)"))); filters.append(QString(tr("Vector trace files (*.trace *.TRACE)")));
filters.append(QString(tr("IXXAT MiniLog (*.csv)"))); filters.append(QString(tr("IXXAT MiniLog (*.csv *.CSV)")));
filters.append(QString(tr("CAN-DO Log (*.*)"))); filters.append(QString(tr("CAN-DO Log (*.avc *.can *.evc *.qcc *.AVC *.CAN *.EVC *.QCC)")));
dialog.setFileMode(QFileDialog::ExistingFile); dialog.setFileMode(QFileDialog::ExistingFile);
dialog.setNameFilters(filters); dialog.setNameFilters(filters);
@@ -55,12 +147,12 @@ QString FrameFileIO::loadFrameFile(QVector<CANFrame>* frameCache)
if (result) if (result)
{ {
QStringList fileList = filename.split('/'); QStringList fileList = filename.split('/');
filename = fileList[fileList.length() - 1]; fileName = fileList[fileList.length() - 1];
return filename; return true;
} }
else return QString(""); else return false;
} }
return QString(""); return false;
} }
//CRTD format from Mark Webb-Johnson / OVMS project //CRTD format from Mark Webb-Johnson / OVMS project
+2 -1
View File
@@ -38,7 +38,8 @@ public:
static bool saveTraceFile(QString, const QVector<CANFrame>*); static bool saveTraceFile(QString, const QVector<CANFrame>*);
static bool saveIXXATFile(QString, const QVector<CANFrame>*); static bool saveIXXATFile(QString, const QVector<CANFrame>*);
static bool saveCANDOFile(QString, const QVector<CANFrame>*); static bool saveCANDOFile(QString, const QVector<CANFrame>*);
static QString loadFrameFile(QVector<CANFrame>*); static bool loadFrameFile(QString &, QVector<CANFrame>*);
static bool saveFrameFile(QString &, const QVector<CANFrame>*);
private: private:
static QString unQuote(QString); static QString unQuote(QString);
+8 -213
View File
@@ -525,58 +525,14 @@ void MainWindow::changeBaudRates()
void MainWindow::handleLoadFile() void MainWindow::handleLoadFile()
{ {
QString filename; QString filename;
QFileDialog dialog(this);
bool result = false;
QStringList filters;
filters.append(QString(tr("GVRET Logs (*.csv)")));
filters.append(QString(tr("CRTD Logs (*.txt)")));
filters.append(QString(tr("Generic ID/Data CSV (*.csv)")));
filters.append(QString(tr("BusMaster Log (*.log)")));
filters.append(QString(tr("Microchip Log (*.can)")));
filters.append(QString(tr("Vector Trace Files (*.trace)")));
filters.append(QString(tr("IXXAT MiniLog (*.csv)")));
filters.append(QString(tr("CAN-DO Log (*.*)")));
dialog.setFileMode(QFileDialog::ExistingFile);
dialog.setNameFilters(filters);
dialog.setViewMode(QFileDialog::Detail);
if (dialog.exec() == QDialog::Accepted)
{
filename = dialog.selectedFiles()[0];
ui->canFramesView->scrollToTop();
model->clearFrames();
QVector<CANFrame> tempFrames; QVector<CANFrame> tempFrames;
QProgressDialog progress(this); if (FrameFileIO::loadFrameFile(filename, &tempFrames))
progress.setWindowModality(Qt::WindowModal);
progress.setLabelText("Loading file...");
progress.setCancelButton(0);
progress.setRange(0,0);
progress.setMinimumDuration(0);
progress.show();
qApp->processEvents();
if (dialog.selectedNameFilter() == filters[0]) result = FrameFileIO::loadNativeCSVFile(filename, &tempFrames);
if (dialog.selectedNameFilter() == filters[1]) result = FrameFileIO::loadCRTDFile(filename, &tempFrames);
if (dialog.selectedNameFilter() == filters[2]) result = FrameFileIO::loadGenericCSVFile(filename, &tempFrames);
if (dialog.selectedNameFilter() == filters[3]) result = FrameFileIO::loadLogFile(filename, &tempFrames);
if (dialog.selectedNameFilter() == filters[4]) result = FrameFileIO::loadMicrochipFile(filename, &tempFrames);
if (dialog.selectedNameFilter() == filters[5]) result = FrameFileIO::loadTraceFile(filename, &tempFrames);
if (dialog.selectedNameFilter() == filters[6]) result = FrameFileIO::loadIXXATFile(filename, &tempFrames);
if (dialog.selectedNameFilter() == filters[7]) result = FrameFileIO::loadCANDOFile(filename, &tempFrames);
progress.cancel();
if (result)
{ {
ui->canFramesView->scrollToTop();
model->clearFrames();
model->insertFrames(tempFrames); model->insertFrames(tempFrames);
QStringList fileList = filename.split('/'); loadedFileName = filename;
loadedFileName = fileList[fileList.length() - 1];
model->recalcOverwrite(); model->recalcOverwrite();
ui->lbNumFrames->setText(QString::number(model->rowCount())); ui->lbNumFrames->setText(QString::number(model->rowCount()));
if (ui->cbAutoScroll->isChecked()) ui->canFramesView->scrollToBottom(); if (ui->cbAutoScroll->isChecked()) ui->canFramesView->scrollToBottom();
@@ -585,189 +541,28 @@ void MainWindow::handleLoadFile()
emit framesUpdated(-2); emit framesUpdated(-2);
} }
} }
}
void MainWindow::handleSaveFile() void MainWindow::handleSaveFile()
{ {
QString filename; QString filename;
QFileDialog dialog(this);
bool result = false;
QStringList filters; if (FrameFileIO::saveFrameFile(filename, model->getListReference()))
filters.append(QString(tr("GVRET Logs (*.csv)")));
filters.append(QString(tr("CRTD Logs (*.txt)")));
filters.append(QString(tr("Generic ID/Data CSV (*.csv)")));
filters.append(QString(tr("BusMaster Log (*.log)")));
filters.append(QString(tr("Microchip Log (*.can)")));
filters.append(QString(tr("Vector Trace Files (*.trace)")));
filters.append(QString(tr("IXXAT MiniLog (*.csv)")));
filters.append(QString(tr("CAN-DO Log (*.can)")));
dialog.setFileMode(QFileDialog::AnyFile);
dialog.setNameFilters(filters);
dialog.setViewMode(QFileDialog::Detail);
dialog.setAcceptMode(QFileDialog::AcceptSave);
if (dialog.exec() == QDialog::Accepted)
{ {
const QVector<CANFrame> *frames = model->getListReference(); loadedFileName = filename;
filename = dialog.selectedFiles()[0];
QProgressDialog progress(this);
progress.setWindowModality(Qt::WindowModal);
progress.setLabelText("Saving file...");
progress.setCancelButton(0);
progress.setRange(0,0);
progress.setMinimumDuration(0);
progress.show();
qApp->processEvents();
if (dialog.selectedNameFilter() == filters[0])
{
if (!filename.contains('.')) filename += ".csv";
result = FrameFileIO::saveNativeCSVFile(filename, frames);
}
if (dialog.selectedNameFilter() == filters[1])
{
if (!filename.contains('.')) filename += ".txt";
result = FrameFileIO::saveCRTDFile(filename, frames);
}
if (dialog.selectedNameFilter() == filters[2])
{
if (!filename.contains('.')) filename += ".csv";
result = FrameFileIO::saveGenericCSVFile(filename, frames);
}
if (dialog.selectedNameFilter() == filters[3])
{
if (!filename.contains('.')) filename += ".log";
result = FrameFileIO::saveLogFile(filename, frames);
}
if (dialog.selectedNameFilter() == filters[4])
{
if (!filename.contains('.')) filename += ".log";
result = FrameFileIO::saveMicrochipFile(filename, frames);
}
if (dialog.selectedNameFilter() == filters[5])
{
if (!filename.contains('.')) filename += ".trace";
result = FrameFileIO::saveTraceFile(filename, frames);
}
if (dialog.selectedNameFilter() == filters[6])
{
if (!filename.contains('.')) filename += ".csv";
result = FrameFileIO::saveIXXATFile(filename, frames);
}
if (dialog.selectedNameFilter() == filters[7])
{
if (!filename.contains('.')) filename += ".can";
result = FrameFileIO::saveCANDOFile(filename, frames);
}
progress.cancel();
if (result)
{
QStringList fileList = filename.split('/');
loadedFileName = fileList[fileList.length() - 1];
updateFileStatus(); updateFileStatus();
} }
} }
}
void MainWindow::handleSaveFilteredFile() void MainWindow::handleSaveFilteredFile()
{ {
QString filename; QString filename;
QFileDialog dialog(this);
bool result = false;
QStringList filters; if (FrameFileIO::saveFrameFile(filename, model->getFilteredListReference()))
filters.append(QString(tr("GVRET Logs (*.csv)")));
filters.append(QString(tr("CRTD Logs (*.txt)")));
filters.append(QString(tr("Generic ID/Data CSV (*.csv)")));
filters.append(QString(tr("BusMaster Log (*.log)")));
filters.append(QString(tr("Microchip Log (*.log)")));
filters.append(QString(tr("Vector Trace Files (*.trace)")));
filters.append(QString(tr("IXXAT MiniLog (*.csv)")));
filters.append(QString(tr("CAN-DO Log (*.can)")));
dialog.setFileMode(QFileDialog::AnyFile);
dialog.setNameFilters(filters);
dialog.setViewMode(QFileDialog::Detail);
dialog.setAcceptMode(QFileDialog::AcceptSave);
if (dialog.exec() == QDialog::Accepted)
{ {
const QVector<CANFrame> *frames = model->getFilteredListReference(); loadedFileName = filename;
filename = dialog.selectedFiles()[0];
QProgressDialog progress(this);
progress.setWindowModality(Qt::WindowModal);
progress.setLabelText("Saving filtered file...");
progress.setCancelButton(0);
progress.setRange(0,0);
progress.setMinimumDuration(0);
progress.show();
qApp->processEvents();
if (dialog.selectedNameFilter() == filters[0])
{
if (!filename.contains('.')) filename += ".csv";
result = FrameFileIO::saveNativeCSVFile(filename, frames);
}
if (dialog.selectedNameFilter() == filters[1])
{
if (!filename.contains('.')) filename += ".txt";
result = FrameFileIO::saveCRTDFile(filename, frames);
}
if (dialog.selectedNameFilter() == filters[2])
{
if (!filename.contains('.')) filename += ".csv";
result = FrameFileIO::saveGenericCSVFile(filename, frames);
}
if (dialog.selectedNameFilter() == filters[3])
{
if (!filename.contains('.')) filename += ".log";
result = FrameFileIO::saveLogFile(filename, frames);
}
if (dialog.selectedNameFilter() == filters[4])
{
if (!filename.contains('.')) filename += ".log";
result = FrameFileIO::saveMicrochipFile(filename, frames);
}
if (dialog.selectedNameFilter() == filters[5])
{
if (!filename.contains('.')) filename += ".trace";
result = FrameFileIO::saveTraceFile(filename, frames);
}
if (dialog.selectedNameFilter() == filters[6])
{
if (!filename.contains('.')) filename += ".csv";
result = FrameFileIO::saveIXXATFile(filename, frames);
}
if (dialog.selectedNameFilter() == filters[7])
{
if (!filename.contains('.')) filename += ".can";
result = FrameFileIO::saveCANDOFile(filename, frames);
}
progress.cancel();
if (result)
{
QStringList fileList = filename.split('/');
loadedFileName = fileList[fileList.length() - 1];
updateFileStatus(); updateFileStatus();
} }
} }
}
void MainWindow::handleSaveFilters() void MainWindow::handleSaveFilters()
{ {