cabana: simplify conversions between QVariant and QVector<QColor> (#27367)

pull/27322/head
Dean Lee 2 years ago committed by GitHub
parent 5e0b281119
commit 37adf5d3a6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 2
      tools/cabana/historylog.cc
  2. 14
      tools/cabana/messageswidget.cc
  3. 25
      tools/cabana/util.cc
  4. 1
      tools/cabana/util.h

@ -17,7 +17,7 @@ QVariant HistoryLogModel::data(const QModelIndex &index, int role) const {
} }
return show_signals ? QString::number(m.sig_values[index.column() - 1]) : toHex(m.data); return show_signals ? QString::number(m.sig_values[index.column() - 1]) : toHex(m.data);
} else if (role == Qt::UserRole && index.column() == 1 && !show_signals) { } else if (role == Qt::UserRole && index.column() == 1 && !show_signals) {
return ChangeTracker::toVariantList(m.colors); return QVariant::fromValue(m.colors);
} }
return {}; return {};
} }

@ -121,17 +121,15 @@ QVariant MessageListModel::data(const QModelIndex &index, int role) const {
case 4: return toHex(can_data.dat); case 4: return toHex(can_data.dat);
} }
} else if (role == Qt::UserRole && index.column() == 4) { } else if (role == Qt::UserRole && index.column() == 4) {
QList<QVariant> colors; QVector<QColor> colors = can_data.colors;
colors.reserve(can_data.dat.size()); if (!suppressed_bytes.empty()) {
for (int i = 0; i < can_data.dat.size(); i++){ for (int i = 0; i < colors.size(); i++) {
if (suppressed_bytes.contains({id, i})) { if (suppressed_bytes.contains({id, i})) {
colors.append(QColor(255, 255, 255, 0)); colors[i] = QColor(255, 255, 255, 0);
} else {
colors.append(i < can_data.colors.size() ? can_data.colors[i] : QColor(255, 255, 255, 0));
} }
} }
return colors; }
return QVariant::fromValue(colors);
} }
return {}; return {};
} }

@ -66,13 +66,6 @@ void ChangeTracker::clear() {
colors.clear(); colors.clear();
} }
QList<QVariant> ChangeTracker::toVariantList(const QVector<QColor> &colors) {
QList<QVariant> ret;
ret.reserve(colors.size());
for (auto &c : colors) ret.append(c);
return ret;
}
// MessageBytesDelegate // MessageBytesDelegate
MessageBytesDelegate::MessageBytesDelegate(QObject *parent) : QStyledItemDelegate(parent) { MessageBytesDelegate::MessageBytesDelegate(QObject *parent) : QStyledItemDelegate(parent) {
@ -89,12 +82,8 @@ void MessageBytesDelegate::paint(QPainter *painter, const QStyleOptionViewItem &
return; return;
} }
if ((option.state & QStyle::State_Selected) && (option.state & QStyle::State_Active)) { auto color_role = option.state & QStyle::State_Selected ? QPalette::HighlightedText: QPalette::Text;
painter->setPen(option.palette.color(QPalette::HighlightedText)); painter->setPen(option.palette.color(color_role));
} else {
painter->setPen(option.palette.color(QPalette::Text));
}
painter->setFont(fixed_font); painter->setFont(fixed_font);
QRect space = painter->boundingRect(opt.rect, opt.displayAlignment, " "); QRect space = painter->boundingRect(opt.rect, opt.displayAlignment, " ");
QRect pos = painter->boundingRect(opt.rect, opt.displayAlignment, "00"); QRect pos = painter->boundingRect(opt.rect, opt.displayAlignment, "00");
@ -103,15 +92,13 @@ void MessageBytesDelegate::paint(QPainter *painter, const QStyleOptionViewItem &
int m = space.width() / 2; int m = space.width() / 2;
const QMargins margins(m, m, m, m); const QMargins margins(m, m, m, m);
QList<QVariant> colors = index.data(Qt::UserRole).toList(); auto colors = index.data(Qt::UserRole).value<QVector<QColor>>();
int i = 0; for (int i = 0; i < byte_list.size(); ++i) {
for (auto &byte : byte_list) {
if (i < colors.size()) { if (i < colors.size()) {
painter->fillRect(pos.marginsAdded(margins), colors[i].value<QColor>()); painter->fillRect(pos.marginsAdded(margins), colors[i]);
} }
painter->drawText(pos, opt.displayAlignment, byte); painter->drawText(pos, opt.displayAlignment, byte_list[i]);
pos.moveLeft(pos.right() + space.width()); pos.moveLeft(pos.right() + space.width());
i++;
} }
} }

@ -14,7 +14,6 @@
class ChangeTracker { class ChangeTracker {
public: public:
void compute(const QByteArray &dat, double ts, uint32_t freq); void compute(const QByteArray &dat, double ts, uint32_t freq);
static QList<QVariant> toVariantList(const QVector<QColor> &colors);
void clear(); void clear();
QVector<double> last_change_t; QVector<double> last_change_t;

Loading…
Cancel
Save