Fix crash when loading grid in custom sender. Fix a few other issues while working on that form.
This commit is contained in:
+29
-14
@@ -27,18 +27,7 @@ FrameSenderWindow::FrameSenderWindow(const QVector<CANFrame> *frames, QWidget *p
|
|||||||
intervalTimer->setTimerType(Qt::PreciseTimer);
|
intervalTimer->setTimerType(Qt::PreciseTimer);
|
||||||
intervalTimer->setInterval(1);
|
intervalTimer->setInterval(1);
|
||||||
|
|
||||||
QStringList headers;
|
setupGrid();
|
||||||
headers << "En" << "Bus" << "ID" << "Len" << "Data" << "Trigger" << "Modifications" << "Count";
|
|
||||||
ui->tableSender->setColumnCount(8);
|
|
||||||
ui->tableSender->setColumnWidth(0, 50);
|
|
||||||
ui->tableSender->setColumnWidth(1, 50);
|
|
||||||
ui->tableSender->setColumnWidth(2, 50);
|
|
||||||
ui->tableSender->setColumnWidth(3, 50);
|
|
||||||
ui->tableSender->setColumnWidth(4, 220);
|
|
||||||
ui->tableSender->setColumnWidth(5, 220);
|
|
||||||
ui->tableSender->setColumnWidth(6, 220);
|
|
||||||
ui->tableSender->setColumnWidth(7, 80);
|
|
||||||
ui->tableSender->setHorizontalHeaderLabels(headers);
|
|
||||||
createBlankRow();
|
createBlankRow();
|
||||||
|
|
||||||
connect(ui->tableSender, SIGNAL(cellChanged(int,int)), this, SLOT(onCellChanged(int,int)));
|
connect(ui->tableSender, SIGNAL(cellChanged(int,int)), this, SLOT(onCellChanged(int,int)));
|
||||||
@@ -55,6 +44,22 @@ FrameSenderWindow::FrameSenderWindow(const QVector<CANFrame> *frames, QWidget *p
|
|||||||
installEventFilter(this);
|
installEventFilter(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void FrameSenderWindow::setupGrid()
|
||||||
|
{
|
||||||
|
QStringList headers;
|
||||||
|
headers << "En" << "Bus" << "ID" << "Len" << "Data" << "Trigger" << "Modifications" << "Count";
|
||||||
|
ui->tableSender->setColumnCount(8);
|
||||||
|
ui->tableSender->setColumnWidth(0, 50);
|
||||||
|
ui->tableSender->setColumnWidth(1, 50);
|
||||||
|
ui->tableSender->setColumnWidth(2, 50);
|
||||||
|
ui->tableSender->setColumnWidth(3, 50);
|
||||||
|
ui->tableSender->setColumnWidth(4, 220);
|
||||||
|
ui->tableSender->setColumnWidth(5, 220);
|
||||||
|
ui->tableSender->setColumnWidth(6, 220);
|
||||||
|
ui->tableSender->setColumnWidth(7, 80);
|
||||||
|
ui->tableSender->setHorizontalHeaderLabels(headers);
|
||||||
|
}
|
||||||
|
|
||||||
FrameSenderWindow::~FrameSenderWindow()
|
FrameSenderWindow::~FrameSenderWindow()
|
||||||
{
|
{
|
||||||
removeEventFilter(this);
|
removeEventFilter(this);
|
||||||
@@ -262,6 +267,8 @@ void FrameSenderWindow::loadGrid()
|
|||||||
loadSenderFile(filename);
|
loadSenderFile(filename);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
setupGrid();
|
||||||
}
|
}
|
||||||
|
|
||||||
void FrameSenderWindow::saveSenderFile(QString filename)
|
void FrameSenderWindow::saveSenderFile(QString filename)
|
||||||
@@ -309,22 +316,30 @@ void FrameSenderWindow::loadSenderFile(QString filename)
|
|||||||
}
|
}
|
||||||
|
|
||||||
ui->tableSender->clear();
|
ui->tableSender->clear();
|
||||||
|
while (ui->tableSender->rowCount() > 0) ui->tableSender->removeRow(0);
|
||||||
sendingData.clear();
|
sendingData.clear();
|
||||||
|
|
||||||
while (!inFile->atEnd()) {
|
while (!inFile->atEnd()) {
|
||||||
|
inhibitChanged = true;
|
||||||
line = inFile->readLine().simplified();
|
line = inFile->readLine().simplified();
|
||||||
if (line.length() > 2)
|
if (line.length() > 2)
|
||||||
{
|
{
|
||||||
QList<QByteArray> tokens = line.split('#');
|
QList<QByteArray> tokens = line.split('#');
|
||||||
int row = ui->tableSender->rowCount();
|
int row = ui->tableSender->rowCount();
|
||||||
ui->tableSender->insertRow(row);
|
ui->tableSender->insertRow(row);
|
||||||
ui->tableSender->item(row, 0)->setFlags(Qt::ItemIsUserCheckable);
|
QTableWidgetItem *item = new QTableWidgetItem();
|
||||||
|
ui->tableSender->setItem(row, 0, item);
|
||||||
|
ui->tableSender->item(row, 0)->setFlags(item->flags() | Qt::ItemIsUserCheckable);
|
||||||
if (tokens[0] == "T")
|
if (tokens[0] == "T")
|
||||||
{
|
{
|
||||||
ui->tableSender->item(row, 0)->setCheckState(Qt::Checked);
|
ui->tableSender->item(row, 0)->setCheckState(Qt::Checked);
|
||||||
}
|
}
|
||||||
else ui->tableSender->item(row, 0)->setCheckState(Qt::Unchecked);
|
else ui->tableSender->item(row, 0)->setCheckState(Qt::Unchecked);
|
||||||
for (int i = 0; i < 7; i++) ui->tableSender->item(row, i)->setText(tokens[i]);
|
for (int i = 1; i < 7; i++)
|
||||||
|
{
|
||||||
|
ui->tableSender->setItem(row, i, new QTableWidgetItem(QString(tokens[i])));
|
||||||
|
}
|
||||||
|
inhibitChanged = false;
|
||||||
for (int k = 0; k < 7; k++) processCellChange(row, k);
|
for (int k = 0; k < 7; k++) processCellChange(row, k);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -54,6 +54,7 @@ private:
|
|||||||
void buildFrameCache();
|
void buildFrameCache();
|
||||||
void processIncomingFrame(CANFrame *frame);
|
void processIncomingFrame(CANFrame *frame);
|
||||||
bool eventFilter(QObject *obj, QEvent *event);
|
bool eventFilter(QObject *obj, QEvent *event);
|
||||||
|
void setupGrid();
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // FRAMESENDERWINDOW_H
|
#endif // FRAMESENDERWINDOW_H
|
||||||
|
|||||||
Reference in New Issue
Block a user