Minor: fix memory leak on GraphingWindow file operations

This commit is contained in:
Alexey Esaulenko
2024-01-19 14:59:57 +04:00
parent c3683b0f40
commit fa707ab2da
2 changed files with 75 additions and 80 deletions
+75 -79
View File
@@ -39,7 +39,7 @@ GraphingWindow::GraphingWindow(const QVector<CANFrame> *frames, QWidget *parent)
if (Utility::timeStyle == TS_CLOCK) if (Utility::timeStyle == TS_CLOCK)
{ {
QSharedPointer<QCPAxisTickerTime> timeTicker(new QCPAxisTickerTime); QSharedPointer timeTicker = QSharedPointer<QCPAxisTickerTime>::create();
timeTicker->setTimeFormat("%h:%m:%s.%z"); timeTicker->setTimeFormat("%h:%m:%s.%z");
ui->graphingView->xAxis->setTicker(timeTicker); ui->graphingView->xAxis->setTicker(timeTicker);
} }
@@ -571,7 +571,7 @@ void GraphingWindow::removeSelectedGraph()
int idx = -1; int idx = -1;
for (int i = 0; i < graphParams.count(); i++) for (int i = 0; i < graphParams.count(); i++)
{ {
if (graphParams[i].ref == ui->graphingView->selectedGraphs().first()) if (graphParams[i].ref == ui->graphingView->selectedGraphs().constFirst())
{ {
idx = i; idx = i;
break; break;
@@ -590,7 +590,7 @@ void GraphingWindow::removeSelectedGraph()
graphParams.removeAt(idx); graphParams.removeAt(idx);
ui->graphingView->removeGraph(ui->graphingView->selectedGraphs().first()); ui->graphingView->removeGraph(ui->graphingView->selectedGraphs().constFirst());
if (graphParams.count() == 0) needScaleSetup = true; if (graphParams.count() == 0) needScaleSetup = true;
@@ -605,7 +605,7 @@ void GraphingWindow::editSelectedGraph()
int idx = -1; int idx = -1;
for (int i = 0; i < graphParams.count(); i++) for (int i = 0; i < graphParams.count(); i++)
{ {
if (graphParams[i].ref == ui->graphingView->selectedGraphs().first()) if (graphParams[i].ref == ui->graphingView->selectedGraphs().constFirst())
{ {
idx = i; idx = i;
break; break;
@@ -701,7 +701,6 @@ void GraphingWindow::contextMenuRequest(QPoint pos)
void GraphingWindow::saveGraphs() void GraphingWindow::saveGraphs()
{ {
QString filename;
QFileDialog dialog(this); QFileDialog dialog(this);
QSettings settings; QSettings settings;
@@ -718,7 +717,7 @@ void GraphingWindow::saveGraphs()
if (dialog.exec() == QDialog::Accepted) if (dialog.exec() == QDialog::Accepted)
{ {
filename = dialog.selectedFiles()[0]; QString filename = dialog.selectedFiles().constFirst();
settings.setValue("Graphing/LoadSaveDirectory", dialog.directory().path()); settings.setValue("Graphing/LoadSaveDirectory", dialog.directory().path());
if (dialog.selectedNameFilter() == filters[0]) if (dialog.selectedNameFilter() == filters[0])
@@ -741,7 +740,6 @@ void GraphingWindow::saveGraphs()
void GraphingWindow::saveSpreadsheet() void GraphingWindow::saveSpreadsheet()
{ {
QString filename;
QFileDialog dialog(this); QFileDialog dialog(this);
QSettings settings; QSettings settings;
@@ -756,14 +754,14 @@ void GraphingWindow::saveSpreadsheet()
if (dialog.exec() == QDialog::Accepted) if (dialog.exec() == QDialog::Accepted)
{ {
filename = dialog.selectedFiles()[0]; QString filename = dialog.selectedFiles().constFirst();
settings.setValue("Graphing/LoadSaveDirectory", dialog.directory().path()); settings.setValue("Graphing/LoadSaveDirectory", dialog.directory().path());
if (!filename.contains('.')) filename += ".csv"; if (!filename.contains('.')) filename += ".csv";
QFile *outFile = new QFile(filename); QFile outFile(filename);
if (!outFile->open(QIODevice::WriteOnly | QIODevice::Text)) if (!outFile.open(QIODevice::WriteOnly | QIODevice::Text))
return; return;
/* /*
@@ -798,19 +796,19 @@ void GraphingWindow::saveSpreadsheet()
QList<int> indices; QList<int> indices;
indices.reserve(numGraphs); indices.reserve(numGraphs);
outFile->write("TimeStamp"); outFile.write("TimeStamp");
for (auto && graph : graphParams) { for (auto && graph : graphParams) {
indices.append(0); indices.append(0);
outFile->putChar(','); outFile.putChar(',');
outFile->write(graph.graphName.toUtf8()); outFile.write(graph.graphName.toUtf8());
} }
outFile->write("\n"); outFile.write("\n");
for (int j = 1; j < (maxCount - 1); j++) for (int j = 1; j < (maxCount - 1); j++)
{ {
double currentX = xMin + (j * sliceSize); double currentX = xMin + (j * sliceSize);
qDebug() << "X: " << currentX; qDebug() << "X: " << currentX;
outFile->write(QString::number(currentX, 'f').toUtf8()); outFile.write(QString::number(currentX, 'f').toUtf8());
for (int k = 0; k < numGraphs; k++) for (int k = 0; k < numGraphs; k++)
{ {
double value = 0.0; double value = 0.0;
@@ -854,20 +852,19 @@ void GraphingWindow::saveSpreadsheet()
value = Utility::Lerp(graphParams[k].y[cursor], graphParams[k].y[cursor+1], progress); value = Utility::Lerp(graphParams[k].y[cursor], graphParams[k].y[cursor+1], progress);
qDebug() << "Span: " << span << " Prog: " << progress << " Value: " << value; qDebug() << "Span: " << span << " Prog: " << progress << " Value: " << value;
} }
outFile->putChar(','); outFile.putChar(',');
outFile->write(QString::number(value).toUtf8()); outFile.write(QString::number(value).toUtf8());
} }
outFile->write("\n"); outFile.write("\n");
} }
outFile->close(); outFile.close();
} }
} }
void GraphingWindow::saveDefinitions() void GraphingWindow::saveDefinitions()
{ {
QString filename;
QFileDialog dialog(this); QFileDialog dialog(this);
QSettings settings; QSettings settings;
@@ -882,79 +879,78 @@ void GraphingWindow::saveDefinitions()
if (dialog.exec() == QDialog::Accepted) if (dialog.exec() == QDialog::Accepted)
{ {
filename = dialog.selectedFiles()[0]; QString filename = dialog.selectedFiles().constFirst();
settings.setValue("Graphing/LoadSaveDirectory", dialog.directory().path()); settings.setValue("Graphing/LoadSaveDirectory", dialog.directory().path());
if (!filename.contains('.')) filename += ".gdf"; if (!filename.contains('.')) filename += ".gdf";
QFile *outFile = new QFile(filename); QFile outFile(filename);
if (!outFile->open(QIODevice::WriteOnly | QIODevice::Text)) if (!outFile.open(QIODevice::WriteOnly | QIODevice::Text))
return; return;
QList<GraphParams>::iterator iter; QList<GraphParams>::iterator iter;
for (iter = graphParams.begin(); iter != graphParams.end(); ++iter) for (iter = graphParams.begin(); iter != graphParams.end(); ++iter)
{ {
outFile->write("Z,"); outFile.write("Z,");
outFile->write(QString::number(iter->ID, 16).toUtf8()); outFile.write(QString::number(iter->ID, 16).toUtf8());
outFile->putChar(','); outFile.putChar(',');
outFile->write(QString::number(iter->mask, 16).toUtf8()); outFile.write(QString::number(iter->mask, 16).toUtf8());
outFile->putChar(','); outFile.putChar(',');
if (iter->intelFormat) outFile->write(QString::number(iter->startBit).toUtf8()); if (iter->intelFormat) outFile.write(QString::number(iter->startBit).toUtf8());
else outFile->write(QString::number(iter->startBit * -1).toUtf8()); else outFile.write(QString::number(iter->startBit * -1).toUtf8());
outFile->putChar(','); outFile.putChar(',');
outFile->write(QString::number(iter->numBits).toUtf8()); outFile.write(QString::number(iter->numBits).toUtf8());
outFile->putChar(','); outFile.putChar(',');
if (iter->isSigned) outFile->putChar('Y'); if (iter->isSigned) outFile.putChar('Y');
else outFile->putChar('N'); else outFile.putChar('N');
outFile->putChar(','); outFile.putChar(',');
outFile->write(QString::number(iter->bias).toUtf8()); outFile.write(QString::number(iter->bias).toUtf8());
outFile->putChar(','); outFile.putChar(',');
outFile->write(QString::number(iter->scale).toUtf8()); outFile.write(QString::number(iter->scale).toUtf8());
outFile->putChar(','); outFile.putChar(',');
outFile->write(QString::number(iter->stride).toUtf8()); outFile.write(QString::number(iter->stride).toUtf8());
outFile->putChar(','); outFile.putChar(',');
outFile->write(QString::number(iter->bus).toUtf8()); outFile.write(QString::number(iter->bus).toUtf8());
outFile->putChar(','); outFile.putChar(',');
outFile->write(QString::number(iter->lineColor.red()).toUtf8()); outFile.write(QString::number(iter->lineColor.red()).toUtf8());
outFile->putChar(','); outFile.putChar(',');
outFile->write(QString::number(iter->lineColor.green()).toUtf8()); outFile.write(QString::number(iter->lineColor.green()).toUtf8());
outFile->putChar(','); outFile.putChar(',');
outFile->write(QString::number(iter->lineColor.blue()).toUtf8()); outFile.write(QString::number(iter->lineColor.blue()).toUtf8());
outFile->putChar(','); outFile.putChar(',');
outFile->write(iter->graphName.toUtf8()); outFile.write(iter->graphName.toUtf8());
outFile->putChar(','); outFile.putChar(',');
outFile->write(QString::number(iter->fillColor.red()).toUtf8()); outFile.write(QString::number(iter->fillColor.red()).toUtf8());
outFile->putChar(','); outFile.putChar(',');
outFile->write(QString::number(iter->fillColor.green()).toUtf8()); outFile.write(QString::number(iter->fillColor.green()).toUtf8());
outFile->putChar(','); outFile.putChar(',');
outFile->write(QString::number(iter->fillColor.blue()).toUtf8()); outFile.write(QString::number(iter->fillColor.blue()).toUtf8());
outFile->putChar(','); outFile.putChar(',');
outFile->write(QString::number(iter->fillColor.alpha()).toUtf8()); outFile.write(QString::number(iter->fillColor.alpha()).toUtf8());
outFile->putChar(','); outFile.putChar(',');
if (iter->drawOnlyPoints) outFile->putChar('Y'); if (iter->drawOnlyPoints) outFile.putChar('Y');
else outFile->putChar('N'); else outFile.putChar('N');
outFile->putChar(','); outFile.putChar(',');
outFile->write(QString::number(iter->pointType).toUtf8()); outFile.write(QString::number(iter->pointType).toUtf8());
outFile->putChar(','); outFile.putChar(',');
outFile->write(QString::number(iter->lineWidth).toUtf8()); outFile.write(QString::number(iter->lineWidth).toUtf8());
if (iter->associatedSignal) if (iter->associatedSignal)
{ {
outFile->putChar(','); outFile.putChar(',');
outFile->write(iter->associatedSignal->parentMessage->name.toUtf8()); outFile.write(iter->associatedSignal->parentMessage->name.toUtf8());
outFile->putChar(','); outFile.putChar(',');
outFile->write(iter->associatedSignal->name.toUtf8()); outFile.write(iter->associatedSignal->name.toUtf8());
} }
outFile->write("\n"); outFile.write("\n");
} }
outFile->close(); outFile.close();
} }
} }
void GraphingWindow::loadDefinitions() void GraphingWindow::loadDefinitions()
{ {
QString filename;
QFileDialog dialog; QFileDialog dialog;
QSettings settings; QSettings settings;
@@ -971,17 +967,17 @@ void GraphingWindow::loadDefinitions()
if (dialog.exec() == QDialog::Accepted) if (dialog.exec() == QDialog::Accepted)
{ {
filename = dialog.selectedFiles()[0]; QString filename = dialog.selectedFiles().constFirst();
settings.setValue("Graphing/LoadSaveDirectory", dialog.directory().path()); settings.setValue("Graphing/LoadSaveDirectory", dialog.directory().path());
QFile *inFile = new QFile(filename); QFile inFile(filename);
QByteArray line; QByteArray line;
if (!inFile->open(QIODevice::ReadOnly | QIODevice::Text)) if (!inFile.open(QIODevice::ReadOnly | QIODevice::Text))
return; return;
while (!inFile->atEnd()) { while (!inFile.atEnd()) {
line = inFile->readLine().simplified(); line = inFile.readLine().simplified();
if (line.length() > 2) if (line.length() > 2)
{ {
GraphParams gp; GraphParams gp;
@@ -1203,7 +1199,7 @@ void GraphingWindow::loadDefinitions()
} }
} }
} }
inFile->close(); inFile.close();
} }
} }
-1
View File
@@ -361,7 +361,6 @@ void NewGraphDialog::loadNodes()
void NewGraphDialog::loadMessages(int idx) void NewGraphDialog::loadMessages(int idx)
{ {
int numFiles = 0; int numFiles = 0;
DBC_MESSAGE *msg;
ui->cbMessages->clear(); ui->cbMessages->clear();
if (dbcHandler == nullptr) return; if (dbcHandler == nullptr) return;
if ((numFiles = dbcHandler->getFileCount()) == 0) return; if ((numFiles = dbcHandler->getFileCount()) == 0) return;