Fixed nonfunctional node delete. Was due to trying to find node by name but

passing in the name and comment concatenated together.  Made a new function to
find by name+comment since extracting only name from the text in the column would
require too much guessing.
This commit is contained in:
Andy Huska
2022-09-15 18:59:24 -05:00
parent b6b73d0e11
commit 7e4ebf2c74
3 changed files with 20 additions and 3 deletions
+16 -1
View File
@@ -337,7 +337,22 @@ DBC_NODE* DBCFile::findNodeByName(QString name)
if (dbc_nodes.length() == 0) return nullptr;
for (int i = 0; i < dbc_nodes.length(); i++)
{
if (dbc_nodes[i].name.compare(name, Qt::CaseInsensitive) == 0)
if (name.compare(dbc_nodes[i].name, Qt::CaseInsensitive) == 0)
{
return &dbc_nodes[i];
}
}
return nullptr;
}
DBC_NODE* DBCFile::findNodeByNameAndComment(QString fullname)
{
QString nameAndComment;
if (dbc_nodes.length() == 0) return nullptr;
for (int i = 0; i < dbc_nodes.length(); i++)
{
nameAndComment = dbc_nodes[i].name + " - " + dbc_nodes[i].comment;
if (fullname.compare(nameAndComment, Qt::CaseInsensitive) == 0)
{
return &dbc_nodes[i];
}
+1
View File
@@ -72,6 +72,7 @@ public:
DBCFile(const DBCFile& cpy);
DBCFile& operator=(const DBCFile& cpy);
DBC_NODE *findNodeByName(QString name);
DBC_NODE *findNodeByNameAndComment(QString fullname);
DBC_NODE *findNodeByIdx(int idx);
DBC_ATTRIBUTE *findAttributeByName(QString name, DBC_ATTRIBUTE_TYPE type = ATTR_TYPE_ANY);
DBC_ATTRIBUTE *findAttributeByIdx(int idx);
+3 -2
View File
@@ -631,7 +631,7 @@ void DBCMainEditor::deleteCurrentTreeItem()
{
QTreeWidgetItem *currItem = ui->treeDBC->currentItem();
int typ = currItem->data(0, Qt::UserRole).toInt();
QString idString;
QString idString, columnText;
int msgID;
DBC_MESSAGE *msg;
DBC_NODE *node;
@@ -642,7 +642,8 @@ void DBCMainEditor::deleteCurrentTreeItem()
switch (typ)
{
case 1: //deleting a node cascades deletion down to messages and signals
node = dbcFile->findNodeByName(currItem->text(0));
columnText = currItem->text(0);
node = dbcFile->findNodeByNameAndComment(columnText);
if (!node) return;
for (int x = 0; x < dbcFile->messageHandler->getCount(); x++)
{