@@ -537,29 +537,33 @@ QVariant CANFrameModel::data(const QModelIndex &index, int role) const
537
537
{
538
538
tempString.append (" <" + msg->name + " >\n " );
539
539
if (msg->comment .length () > 1 ) tempString.append (msg->comment + " \n " );
540
+ std::map<DBC_SIGNAL, QString> displayValues;
540
541
for (int j = 0 ; j < msg->sigHandler ->getCount (); j++)
541
542
{
542
543
QString sigString;
543
544
DBC_SIGNAL* sig = msg->sigHandler ->findSignalByIdx (j);
544
545
545
546
if ( (sig->multiplexParent == nullptr ) && sig->processAsText (thisFrame, sigString))
546
547
{
547
- tempString.append (sigString);
548
- tempString.append (" \n " );
548
+ displayValues.emplace (*sig, sigString);
549
549
if (sig->isMultiplexor )
550
550
{
551
551
qDebug () << " Multiplexor. Diving into the tree" ;
552
- tempString. append ( sig->processSignalTree (thisFrame) );
552
+ sig->processAvailableSignals (thisFrame, displayValues );
553
553
}
554
554
}
555
555
else if (sig->isMultiplexed && overwriteDups) // wasn't in this exact frame but is in the message. Use cached value
556
556
{
557
557
bool isInteger = false ;
558
558
if (sig->valType == UNSIGNED_INT || sig->valType == SIGNED_INT) isInteger = true ;
559
- tempString.append (sig->makePrettyOutput (sig->cachedValue .toDouble (), sig->cachedValue .toLongLong (), true , isInteger));
560
- tempString.append (" \n " );
559
+ displayValues.emplace (*sig, sig->makePrettyOutput (sig->cachedValue .toDouble (), sig->cachedValue .toLongLong (), true , isInteger));
561
560
}
562
561
}
562
+
563
+ for (const auto &kv: displayValues) {
564
+ tempString.append (kv.second );
565
+ tempString.append (" \n " );
566
+ }
563
567
}
564
568
}
565
569
return tempString;
0 commit comments