Cleaned up all the UI elements and error checking for rebase and duplicate
This commit is contained in:
@@ -4,6 +4,7 @@
|
||||
#include <QSettings>
|
||||
#include <QKeyEvent>
|
||||
#include <QColorDialog>
|
||||
#include <QMessageBox>
|
||||
#include "helpwindow.h"
|
||||
#include "utility.h"
|
||||
|
||||
@@ -18,58 +19,87 @@ DBCNodeDuplicateEditor::DBCNodeDuplicateEditor(QWidget *parent) :
|
||||
dbcHandler = DBCHandler::getReference();
|
||||
dbcNode = nullptr;
|
||||
|
||||
connect(ui->btnDuplicate, &QPushButton::pressed,
|
||||
[=]()
|
||||
connect(ui->btnDuplicate, &QPushButton::pressed,
|
||||
[=]()
|
||||
{
|
||||
if (dbcNode == nullptr) return;
|
||||
if (lowestMsgId > 0x1FFFFFFFul) return;
|
||||
|
||||
uint newBase = Utility::ParseStringToNum(ui->lineNewBaseId->text());
|
||||
|
||||
if(newBase <= 0 || newBase > 0x1FFFFFFFul)
|
||||
{
|
||||
if (dbcNode == nullptr) return;
|
||||
if (lowestMsgId > 0x1FFFFFFFul) return;
|
||||
QMessageBox::question(this, "Invalid Address", "The new address is outside of the valid range.",
|
||||
QMessageBox::Ok);
|
||||
return;
|
||||
}
|
||||
|
||||
uint newBase = Utility::ParseStringToNum(ui->lineNewBaseId->text());
|
||||
if(newBase == lowestMsgId)
|
||||
{
|
||||
QMessageBox::question(this, "Invalid Address", "The new address is the same as the original.",
|
||||
QMessageBox::Ok);
|
||||
return;
|
||||
}
|
||||
|
||||
if (newBase <= 0x1FFFFFFFul && newBase != lowestMsgId)
|
||||
uint rebaseDiff = newBase - lowestMsgId;
|
||||
|
||||
QList<DBC_MESSAGE*> messagesForNode = dbcFile->messageHandler->findMsgsByNode(dbcNode);
|
||||
if(messagesForNode.count() == 0)
|
||||
{
|
||||
QMessageBox::question(this, "No Messages", "The node has no messages to duplicate.",
|
||||
QMessageBox::Ok);
|
||||
return;
|
||||
}
|
||||
|
||||
if(ui->lineNodeName->text().isEmpty())
|
||||
{
|
||||
QMessageBox::question(this, "No Name", "The new node needs a name before it can be created.",
|
||||
QMessageBox::Ok);
|
||||
return;
|
||||
}
|
||||
|
||||
QString newNodeName = ui->lineNodeName->text();
|
||||
emit createNode(newNodeName);
|
||||
|
||||
DBC_NODE *nodePtr = dbcFile->findNodeByName(newNodeName);
|
||||
|
||||
if(nodePtr == nullptr)
|
||||
{
|
||||
QMessageBox::question(this, "Node Invalid", "There was an problem identifying the selected node.",
|
||||
QMessageBox::Ok);
|
||||
return;
|
||||
}
|
||||
|
||||
for (int i=0; i<messagesForNode.count(); i++)
|
||||
{
|
||||
uint newMsgId = messagesForNode[i]->ID + rebaseDiff;
|
||||
|
||||
if(newMsgId < 0 || newMsgId > 0x1FFFFFFFul)
|
||||
{
|
||||
uint rebaseDiff = newBase - lowestMsgId;
|
||||
|
||||
QList<DBC_MESSAGE*> messagesForNode = dbcFile->messageHandler->findMsgsByNode(dbcNode);
|
||||
if(messagesForNode.count() == 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if(ui->lineNodeName->text().isEmpty())
|
||||
{
|
||||
//tell!
|
||||
return;
|
||||
}
|
||||
|
||||
QString newNodeName = ui->lineNodeName->text();
|
||||
emit createNode(newNodeName);
|
||||
|
||||
DBC_NODE *nodePtr = dbcFile->findNodeByName(newNodeName);
|
||||
|
||||
if(nodePtr == nullptr)
|
||||
{
|
||||
//uhoh
|
||||
return;
|
||||
}
|
||||
|
||||
for (int i=0; i<messagesForNode.count(); i++)
|
||||
{
|
||||
uint newMsgId = messagesForNode[i]->ID + rebaseDiff;
|
||||
emit cloneMessageToNode(nodePtr, messagesForNode[i], newMsgId);
|
||||
}
|
||||
|
||||
dbcFile->setDirtyFlag();
|
||||
emit nodeAdded();
|
||||
QMessageBox::question(this, "Invalid Address Range", "The new starting address would cause a message to be outside of the valid address range.",
|
||||
QMessageBox::Ok);
|
||||
return;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
connect(ui->btnCancel, &QPushButton::pressed,
|
||||
[=]()
|
||||
for (int i=0; i<messagesForNode.count(); i++)
|
||||
{
|
||||
uint newMsgId = messagesForNode[i]->ID + rebaseDiff;
|
||||
emit cloneMessageToNode(nodePtr, messagesForNode[i], newMsgId);
|
||||
}
|
||||
|
||||
dbcFile->setDirtyFlag();
|
||||
emit nodeAdded();
|
||||
|
||||
});
|
||||
this->close();
|
||||
|
||||
});
|
||||
|
||||
connect(ui->btnCancel, &QPushButton::pressed,
|
||||
[=]()
|
||||
{
|
||||
this->close();
|
||||
});
|
||||
|
||||
installEventFilter(this);
|
||||
}
|
||||
@@ -144,19 +174,20 @@ void DBCNodeDuplicateEditor::showEvent(QShowEvent* event)
|
||||
refreshView();
|
||||
}
|
||||
|
||||
void DBCNodeDuplicateEditor::refreshView()
|
||||
bool DBCNodeDuplicateEditor::refreshView()
|
||||
{
|
||||
ui->lineNewBaseId->setText("");
|
||||
|
||||
if(dbcNode)
|
||||
{
|
||||
QList<DBC_MESSAGE*> messagesForNode = dbcFile->messageHandler->findMsgsByNode(dbcNode);
|
||||
lowestMsgId = 0xFFFFFFFF;
|
||||
|
||||
if(messagesForNode.count() == 0)
|
||||
{
|
||||
//??
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
lowestMsgId = 0xFFFFFFFF;
|
||||
|
||||
for (int i=0; i<messagesForNode.count(); i++)
|
||||
{
|
||||
if(messagesForNode[i]->ID < lowestMsgId)
|
||||
@@ -165,7 +196,9 @@ void DBCNodeDuplicateEditor::refreshView()
|
||||
|
||||
ui->lineOriginalBaseId->setText(Utility::formatCANID(lowestMsgId & 0x1FFFFFFFul));
|
||||
ui->lineNodeName->setText(dbcNode->name + QString("_Copy"));
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
//generateSampleText();
|
||||
return false;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user