1 #include "input_mapping_dialog.h"
3 #include "ui_input_mapping.h"
9 InputMappingDialog::InputMappingDialog()
10 : ui(new Ui::InputMappingDialog)
14 //connect(ui->button_box, &QDialogButtonBox::accepted, [this]{ this->close(); });
15 vector<string> card_names = global_mixer->get_audio_mixer()->get_names();
16 fill_ui_from_mapping(global_mixer->get_audio_mixer()->get_input_mapping(), card_names);
19 void InputMappingDialog::fill_ui_from_mapping(const InputMapping &mapping, const vector<string> &card_names)
21 ui->table->verticalHeader()->hide();
23 ui->table->setRowCount(mapping.inputs.size());
24 for (unsigned row = 0; row < mapping.inputs.size(); ++row) {
25 // TODO: Mark as some sort of header (by means of background color, probably).
26 QString name(QString::fromStdString(mapping.inputs[row].name));
27 ui->table->setItem(row, 0, new QTableWidgetItem(name));
30 QComboBox *card_combo = new QComboBox;
31 card_combo->addItem(QString("(none)"));
32 for (const string &name : card_names) {
33 card_combo->addItem(QString::fromStdString(name));
35 switch (mapping.inputs[row].input_source_type) {
36 case InputSourceType::SILENCE:
37 card_combo->setCurrentIndex(0);
39 case InputSourceType::CAPTURE_CARD:
40 card_combo->setCurrentIndex(mapping.inputs[row].input_source_index + 1);
45 ui->table->setCellWidget(row, 1, card_combo);
47 // Left and right channel.
48 fill_channel_ui_from_mapping(row, mapping.inputs[row]);
52 void InputMappingDialog::fill_channel_ui_from_mapping(unsigned row, const InputMapping::Input &input)
54 for (unsigned channel = 0; channel < 2; ++channel) {
55 QComboBox *channel_combo = new QComboBox;
56 channel_combo->addItem(QString("(none)"));
57 if (input.input_source_type == InputSourceType::CAPTURE_CARD) {
58 for (unsigned source = 0; source < 8; ++source) { // TODO: Ask the card about number of channels, and names.
60 snprintf(buf, sizeof(buf), "Channel %u", source + 1);
61 channel_combo->addItem(QString(buf));
64 channel_combo->setCurrentIndex(input.source_channel[channel] + 1);
65 ui->table->setCellWidget(row, 2 + channel, channel_combo);