Overwrite mode now has a warning message before you can really enable
it. Also, it alters the main frame list to show just the one frame per ID so it is extremely obvious that you're in overwrite mode.
This commit is contained in:
+14
-19
@@ -160,6 +160,7 @@ void CANFrameModel::setOverwriteMode(bool mode)
|
|||||||
{
|
{
|
||||||
beginResetModel();
|
beginResetModel();
|
||||||
overwriteDups = mode;
|
overwriteDups = mode;
|
||||||
|
recalcOverwrite();
|
||||||
endResetModel();
|
endResetModel();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -191,26 +192,20 @@ void CANFrameModel::recalcOverwrite()
|
|||||||
|
|
||||||
mutex.lock();
|
mutex.lock();
|
||||||
beginResetModel();
|
beginResetModel();
|
||||||
for (int i = 1; i < frames.count(); i++)
|
|
||||||
{
|
|
||||||
found = false;
|
|
||||||
for (int j = 0; j <= lastUnique; j++)
|
|
||||||
{
|
|
||||||
if (frames[i].ID == frames[j].ID)
|
|
||||||
{
|
|
||||||
frames.replace(j, frames[i]);
|
|
||||||
found = true;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (!found)
|
|
||||||
{
|
|
||||||
lastUnique++;
|
|
||||||
frames.replace(lastUnique, frames[i]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
while (frames.count() > lastUnique) frames.removeLast();
|
//Look at the current list of frames and turn it into just a list of unique IDs
|
||||||
|
QHash<int, CANFrame> overWriteFrames;
|
||||||
|
foreach(CANFrame frame, frames)
|
||||||
|
{
|
||||||
|
if (!overWriteFrames.contains(frame.ID))
|
||||||
|
{
|
||||||
|
overWriteFrames.insert(frame.ID, frame);
|
||||||
|
}
|
||||||
|
else overWriteFrames[frame.ID] = frame;
|
||||||
|
}
|
||||||
|
//Then replace the old list of frames with just the unique list
|
||||||
|
frames.clear();
|
||||||
|
frames.append(overWriteFrames.values().toVector());
|
||||||
|
|
||||||
filteredFrames.clear();
|
filteredFrames.clear();
|
||||||
filteredFrames.reserve(preallocSize);
|
filteredFrames.reserve(preallocSize);
|
||||||
|
|||||||
+11
-1
@@ -399,7 +399,17 @@ void MainWindow::interpretToggled(bool state)
|
|||||||
|
|
||||||
void MainWindow::overwriteToggled(bool state)
|
void MainWindow::overwriteToggled(bool state)
|
||||||
{
|
{
|
||||||
model->setOverwriteMode(state);
|
if (state)
|
||||||
|
{
|
||||||
|
QMessageBox::StandardButton confirmDialog;
|
||||||
|
confirmDialog = QMessageBox::question(this, "Danger Will Robinson", "Enabling Overwrite mode will\ndelete your captured frames\nand replace them with one\nframe per ID.\n\nAre you ready to do that?",
|
||||||
|
QMessageBox::Yes|QMessageBox::No);
|
||||||
|
if (confirmDialog == QMessageBox::Yes)
|
||||||
|
{
|
||||||
|
model->setOverwriteMode(state);
|
||||||
|
}
|
||||||
|
else ui->cbOverwrite->setCheckState(Qt::Unchecked);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void MainWindow::updateFilterList()
|
void MainWindow::updateFilterList()
|
||||||
|
|||||||
Reference in New Issue
Block a user