MCPcopy Create free account
hub / github.com/aethersdr/AetherSDR / refreshBindingTable

Method refreshBindingTable

src/gui/MidiMappingDialog.cpp:278–337  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

276}
277
278void MidiMappingDialog::refreshBindingTable()
279{
280 const auto& bindings = m_manager->bindings();
281 m_bindingTable->setRowCount(bindings.size());
282
283 for (int i = 0; i < bindings.size(); ++i) {
284 const auto& b = bindings[i];
285
286 // Parameter name
287 const MidiParam* p = m_manager->findParam(b.paramId);
288 QString paramName = p ? QString("[%1] %2").arg(p->category, p->displayName) : b.paramId;
289 m_bindingTable->setItem(i, 0, new QTableWidgetItem(paramName));
290
291 // MIDI source
292 m_bindingTable->setItem(i, 1, new QTableWidgetItem(b.sourceDisplayName()));
293
294 // Channel
295 m_bindingTable->setItem(i, 2, new QTableWidgetItem(
296 b.channel >= 0 ? QString::number(b.channel + 1) : "Any"));
297
298 // Invert checkbox
299 auto* invertCheck = new QCheckBox;
300 invertCheck->setChecked(b.inverted);
301 invertCheck->setStyleSheet("QCheckBox { padding-left: 10px; }");
302 connect(invertCheck, &QCheckBox::toggled, this, [this, i](bool on) {
303 if (i < m_manager->bindings().size()) {
304 m_manager->bindings()[i].inverted = on;
305 m_manager->rebuildIndex();
306 MidiSettings::instance().saveBindings(m_manager->bindings());
307 }
308 });
309 m_bindingTable->setCellWidget(i, 3, invertCheck);
310
311 // Relative checkbox (CC sends delta, not absolute position)
312 auto* relCheck = new QCheckBox;
313 relCheck->setChecked(b.relative);
314 relCheck->setStyleSheet("QCheckBox { padding-left: 10px; }");
315 connect(relCheck, &QCheckBox::toggled, this, [this, i](bool on) {
316 if (i < m_manager->bindings().size()) {
317 m_manager->bindings()[i].relative = on;
318 m_manager->rebuildIndex();
319 MidiSettings::instance().saveBindings(m_manager->bindings());
320 }
321 });
322 m_bindingTable->setCellWidget(i, 4, relCheck);
323
324 // Delete button
325 auto* delBtn = new QPushButton("×");
326 delBtn->setFixedSize(24, 24);
327 delBtn->setStyleSheet(
328 "QPushButton { background: #602020; color: #ff6060; font-weight: bold; "
329 "border: 1px solid #803030; border-radius: 3px; }");
330 connect(delBtn, &QPushButton::clicked, this, [this, paramId = b.paramId] {
331 m_manager->removeBinding(paramId);
332 refreshBindingTable();
333 MidiSettings::instance().saveBindings(m_manager->bindings());
334 });
335 m_bindingTable->setCellWidget(i, 5, delBtn);

Callers

nothing calls this directly

Calls 6

findParamMethod · 0.80
sourceDisplayNameMethod · 0.80
removeBindingMethod · 0.80
sizeMethod · 0.45
rebuildIndexMethod · 0.45
saveBindingsMethod · 0.45

Tested by

no test coverage detected