From ae59b2075a19b98c7403015a305e56c978b6c0b7 Mon Sep 17 00:00:00 2001 From: Dean Lee Date: Tue, 6 Dec 2022 07:12:36 +0800 Subject: [PATCH] Cabana: display dash instead of zero if no data (#26686) display dash instead of zero if no data old-commit-hash: 4d74e44ae14301aab27b833974bb90955d20d04e --- tools/cabana/binaryview.cc | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/tools/cabana/binaryview.cc b/tools/cabana/binaryview.cc index e655bf0c04..bc64edbfeb 100644 --- a/tools/cabana/binaryview.cc +++ b/tools/cabana/binaryview.cc @@ -181,15 +181,14 @@ void BinaryViewModel::updateState() { auto prev_items = items; const auto &binary = can->lastMessage(msg_id).dat; // data size may changed. - if (!dbc_msg && binary.size() != row_count) { - beginResetModel(); + if (binary.size() > row_count) { + beginInsertRows({}, row_count, binary.size() - 1); row_count = binary.size(); - items.clear(); items.resize(row_count * column_count); - endResetModel(); + endInsertRows(); } char hex[3] = {'\0'}; - for (int i = 0; i < std::min(binary.size(), row_count); ++i) { + for (int i = 0; i < binary.size(); ++i) { for (int j = 0; j < column_count - 1; ++j) { items[i * column_count + j].val = ((binary[i] >> (7 - j)) & 1) != 0 ? '1' : '0'; } @@ -197,8 +196,13 @@ void BinaryViewModel::updateState() { hex[1] = toHex(binary[i] & 0xf); items[i * column_count + 8].val = hex; } + for (int i = binary.size(); i < row_count; ++i) { + for (int j = 0; j < column_count; ++j) { + items[i * column_count + j].val = "-"; + } + } - for (int i = 0; i < items.size(); ++i) { + for (int i = 0; i < row_count; ++i) { if (i >= prev_items.size() || prev_items[i].val != items[i].val) { auto idx = index(i / column_count, i % column_count); emit dataChanged(idx, idx);