X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=nageru%2Finput_mapping_dialog.h;fp=nageru%2Finput_mapping_dialog.h;h=640644e3898ce9cca25fc950bf9e350477c1b17b;hb=392f9d1ccb835c05a3874c4bea163788b2c37024;hp=0000000000000000000000000000000000000000;hpb=330ca2f0052b06d91004c6ceb73cd57ab95e7fe1;p=nageru diff --git a/nageru/input_mapping_dialog.h b/nageru/input_mapping_dialog.h new file mode 100644 index 0000000..640644e --- /dev/null +++ b/nageru/input_mapping_dialog.h @@ -0,0 +1,61 @@ +#ifndef _INPUT_MAPPING_DIALOG_H +#define _INPUT_MAPPING_DIALOG_H + +#include +#include +#include +#include + +#include "audio_mixer.h" +#include "input_mapping.h" + +class QObject; + +namespace Ui { +class InputMappingDialog; +} // namespace Ui + +class QComboBox; + +class InputMappingDialog : public QDialog +{ + Q_OBJECT + +public: + InputMappingDialog(); + ~InputMappingDialog(); + +private: + void fill_ui_from_mapping(const InputMapping &mapping); + void fill_row_from_bus(unsigned row, const InputMapping::Bus &bus); + void setup_channel_choices_from_bus(unsigned row, const InputMapping::Bus &bus); + void cell_changed(int row, int column); + void card_selected(QComboBox *card_combo, unsigned row, int index); + void channel_selected(unsigned row, unsigned channel, int index); + void ok_clicked(); + void cancel_clicked(); + void add_clicked(); + void remove_clicked(); + void updown_clicked(int direction); + void save_clicked(); + void load_clicked(); + void update_button_state(); + + Ui::InputMappingDialog *ui; + InputMapping mapping; // Under edit. Will be committed on OK. + + // The old mapping. Will be re-committed on cancel, so that we + // unhold all the unused devices (otherwise they would be + // held forever). + InputMapping old_mapping; + + // One for each bus in the mapping. Edited along with the mapping, + // so that old volumes etc. are being kept in place for buses that + // existed before. + std::vector bus_settings; + + std::map devices; // Needs no lock, accessed only on the UI thread. + AudioMixer::state_changed_callback_t saved_callback; +}; + +#endif // !defined(_INPUT_MAPPING_DIALOG_H)