Skip to content

Commit 0a40850

Browse files
committed
LP-567 avoid too many QString creations when generating string/hex for array fields
1 parent 32ce9bf commit 0a40850

1 file changed

Lines changed: 16 additions & 12 deletions

File tree

ground/gcs/src/plugins/uavobjectbrowser/treeitem.cpp

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -212,7 +212,7 @@ void TreeItem::apply()
212212
*/
213213
void TreeItem::setHighlight(bool highlight)
214214
{
215-
m_changed = false;
215+
m_changed = false;
216216
if (m_highlight != highlight) {
217217
m_highlight = highlight;
218218
if (highlight) {
@@ -265,28 +265,32 @@ QVariant ArrayFieldTreeItem::data(int column) const
265265
if (column == 1) {
266266
if (m_field->getType() == UAVObjectField::UINT8 && m_field->getUnits().toLower() == "char") {
267267
QString dataString;
268+
dataString.reserve(2 + m_field->getNumElements());
269+
dataString.append("'");
268270
for (uint i = 0; i < m_field->getNumElements(); ++i) {
269271
dataString.append(m_field->getValue(i).toChar());
270272
}
271-
QString data = QString("'%1'").arg(dataString);
272-
return data;
273+
dataString.append("'");
274+
return dataString;
273275
} else if (m_field->getUnits().toLower() == "hex") {
274276
QString dataString;
277+
int len = TreeItem::maxHexStringLength(m_field->getType());
278+
QChar fillChar('0');
279+
dataString.reserve(2 + (len + 1) * m_field->getNumElements());
280+
dataString.append("{");
275281
for (uint i = 0; i < m_field->getNumElements(); ++i) {
276282
if (i > 0) {
277283
dataString.append(' ');
278284
}
279285
bool ok;
280-
dataString.append(QString("%1")
281-
.arg(m_field->getValue(i).toUInt(&ok), TreeItem::maxHexStringLength(m_field->getType()),
282-
16, QChar('0')).toUpper());
286+
uint value = m_field->getValue(i).toUInt(&ok);
287+
QString str = QString("%1").arg(value, len, 16, fillChar);
288+
str = str.toUpper();
289+
dataString.append(str);
283290
}
284-
QString data = QString("{%1}").arg(dataString);
285-
return data;
286-
} else {
287-
return QVariant();
291+
dataString.append("}");
292+
return dataString;
288293
}
289-
} else {
290-
return TreeItem::data(column);
291294
}
295+
return TreeItem::data(column);
292296
}

0 commit comments

Comments
 (0)