2 #include "ui_dialog_mcap.h" 5 #include <QDialogButtonBox> 12 const std::unordered_map<int, mcap::SchemaPtr> &schemas,
15 ui(new
Ui::dialog_mcap)
19 ui->tableWidget->horizontalHeader()->setSectionResizeMode(0, QHeaderView::Stretch);
20 ui->tableWidget->horizontalHeader()->setSectionResizeMode(1, QHeaderView::ResizeToContents);
21 ui->tableWidget->horizontalHeader()->setSectionResizeMode(2, QHeaderView::ResizeToContents);
23 ui->tableWidget->setRowCount(channels.size());
27 restoreGeometry(settings.value(
prefix +
"geometry").toByteArray());
28 auto selected = settings.value(
prefix +
"selected").toStringList();
29 bool clamp_checked = settings.value(
prefix +
"clamp",
true).toBool();
30 int max_array = settings.value(
prefix +
"max_array", 500).toInt();
34 ui->radioClamp->setChecked(
true);
37 ui->radioSkip->setChecked(
true);
39 ui->spinBox->setValue( max_array );
42 for(
const auto& [
id, channel]: channels )
44 auto topic = QString::fromStdString(channel->topic);
45 auto encoding = channel->messageEncoding;
46 auto schema = schemas.at( channel->schemaId )->name;
48 ui->tableWidget->setItem(row, 0,
new QTableWidgetItem(
topic) );
49 ui->tableWidget->setItem(row, 1,
new QTableWidgetItem(QString::fromStdString(schema)) );
50 ui->tableWidget->setItem(row, 2,
new QTableWidgetItem(QString::fromStdString(encoding)) );
52 if( selected.contains(
topic) )
54 ui->tableWidget->selectRow(row);
58 ui->tableWidget->sortByColumn(0);
74 QItemSelectionModel *
select =
ui->tableWidget->selectionModel();
75 QStringList selected_topics;
76 for(QModelIndex
index: select->selectedRows())
85 bool enabled = !
ui->tableWidget->selectionModel()->selectedRows().empty();
86 ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(enabled);
92 settings.setValue(
prefix +
"geometry", saveGeometry());
94 bool clamp_checked =
ui->radioClamp->isChecked();
95 int max_array =
ui->spinBox->value();
97 settings.setValue(
prefix +
"clamp", clamp_checked);
98 settings.setValue(
prefix +
"max_array", max_array);
100 QItemSelectionModel *
select =
ui->tableWidget->selectionModel();
101 QStringList selected_topics;
102 for(QModelIndex
index: select->selectedRows())
104 selected_topics.push_back(
ui->tableWidget->item(
index.row(), 0)->text() );
106 settings.setValue(
prefix +
"selected", selected_topics);
DialogMCAP(const std::unordered_map< int, mcap::ChannelPtr > &channels, const std::unordered_map< int, mcap::SchemaPtr > &schemas, QWidget *parent=nullptr)
static const QString prefix
void select(lua_State *L, Fx &&fx, Args &&... args)
QStringList selected_topics
void on_tableWidget_itemSelectionChanged()