X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=input_mapping_dialog.cpp;h=232a88db20c795acfd869f1dd1b03bb13a0b9bf2;hb=5cb4274907d32fb8946558988461224196c2be59;hp=6fcf7a8d61fc3cd40856c5411a16d7c2a188172c;hpb=a564f192f808841ad8dfa9a4aa6c8db3335bd6fd;p=nageru diff --git a/input_mapping_dialog.cpp b/input_mapping_dialog.cpp index 6fcf7a8..232a88d 100644 --- a/input_mapping_dialog.cpp +++ b/input_mapping_dialog.cpp @@ -4,6 +4,8 @@ #include "ui_input_mapping.h" #include +#include +#include using namespace std; using namespace std::placeholders; @@ -26,6 +28,8 @@ InputMappingDialog::InputMappingDialog() connect(ui->remove_button, &QPushButton::clicked, this, &InputMappingDialog::remove_clicked); connect(ui->up_button, &QPushButton::clicked, bind(&InputMappingDialog::updown_clicked, this, -1)); connect(ui->down_button, &QPushButton::clicked, bind(&InputMappingDialog::updown_clicked, this, 1)); + connect(ui->save_button, &QPushButton::clicked, this, &InputMappingDialog::save_clicked); + connect(ui->load_button, &QPushButton::clicked, this, &InputMappingDialog::load_clicked); update_button_state(); connect(ui->table, &QTableWidget::itemSelectionChanged, this, &InputMappingDialog::update_button_state); @@ -231,6 +235,37 @@ void InputMappingDialog::updown_clicked(int direction) ui->table->setRangeSelected(b_sel, true); } +void InputMappingDialog::save_clicked() +{ + QString filename = QFileDialog::getSaveFileName(this, + "Save input mapping", QString(), tr("Mapping files (*.mapping)")); + if (!filename.endsWith(".mapping")) { + filename += ".mapping"; + } + if (!save_input_mapping_to_file(devices, mapping, filename.toStdString())) { + QMessageBox box; + box.setText("Could not save mapping to '" + filename + "'. Check that you have the right permissions and try again."); + box.exec(); + } +} + +void InputMappingDialog::load_clicked() +{ + QString filename = QFileDialog::getOpenFileName(this, + "Load input mapping", QString(), tr("Mapping files (*.mapping)")); + InputMapping new_mapping; + if (!load_input_mapping_from_file(devices, filename.toStdString(), &new_mapping)) { + QMessageBox box; + box.setText("Could not load mapping from '" + filename + "'. Check that the file exists, has the right permissions and is valid."); + box.exec(); + return; + } + + mapping = new_mapping; + devices = global_audio_mixer->get_devices(); // New dead cards may have been made. + fill_ui_from_mapping(mapping); +} + void InputMappingDialog::update_button_state() { ui->add_button->setDisabled(mapping.buses.size() >= MAX_BUSES);