cabana: small improvements to MessageListModel::setFilterString (#27153)

pull/27159/head
Dean Lee 2 years ago committed by GitHub
parent afa85e0256
commit 3815afbde7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 29
      tools/cabana/messageswidget.cc

@ -84,27 +84,22 @@ QVariant MessageListModel::data(const QModelIndex &index, int role) const {
}
void MessageListModel::setFilterString(const QString &string) {
filter_str = string;
msgs.clear();
for (auto it = can->can_msgs.begin(); it != can->can_msgs.end(); ++it) {
bool found = false;
// Search by message id or name
if (it.key().contains(filter_str, Qt::CaseInsensitive) || msgName(it.key()).contains(filter_str, Qt::CaseInsensitive)) {
found = true;
}
auto contains = [](const QString &id, const QString &txt) {
auto cs = Qt::CaseInsensitive;
if (id.contains(txt, cs) || msgName(id).contains(txt, cs)) return true;
// Search by signal name
const DBCMsg *msg = dbc()->msg(it.key());
if (msg != nullptr) {
for (auto &signal: msg->getSignals()) {
if (QString::fromStdString(signal->name).contains(filter_str, Qt::CaseInsensitive)) {
found = true;
}
if (const auto msg = dbc()->msg(id)) {
for (auto &signal : msg->getSignals()) {
if (QString::fromStdString(signal->name).contains(txt, cs)) return true;
}
}
return false;
};
if (found) {
filter_str = string;
msgs.clear();
for (auto it = can->can_msgs.begin(); it != can->can_msgs.end(); ++it) {
if (filter_str.isEmpty() || contains(it.key(), filter_str)) {
msgs.push_back(it.key());
}
}

Loading…
Cancel
Save