controller_config.cpp 3.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. // Copyright 2014 Citra Emulator Project
  2. // Licensed under GPLv2 or any later version
  3. // Refer to the license.txt file included.
  4. #include <QDialogButtonBox>
  5. #include "controller_config.h"
  6. #include "controller_config_util.h"
  7. /* TODO(bunnei): ImplementMe
  8. using common::Config;
  9. GControllerConfig::GControllerConfig(common::Config::ControllerPort* initial_config, QWidget* parent) : QWidget(parent)
  10. {
  11. ui.setupUi(this);
  12. ((QGridLayout*)ui.mainStickTab->layout())->addWidget(new GStickConfig(Config::ANALOG_LEFT, Config::ANALOG_RIGHT, Config::ANALOG_UP, Config::ANALOG_DOWN, this, this), 1, 1);
  13. ((QGridLayout*)ui.cStickTab->layout())->addWidget(new GStickConfig(Config::C_LEFT, Config::C_RIGHT, Config::C_UP, Config::C_DOWN, this, this), 1, 1);
  14. ((QGridLayout*)ui.dPadTab->layout())->addWidget(new GStickConfig(Config::DPAD_LEFT, Config::DPAD_RIGHT, Config::DPAD_UP, Config::DPAD_DOWN, this, this), 1, 1);
  15. // TODO: Arrange these more compactly?
  16. QVBoxLayout* layout = (QVBoxLayout*)ui.buttonsTab->layout();
  17. layout->addWidget(new GButtonConfigGroup("A Button", Config::BUTTON_A, this, ui.buttonsTab));
  18. layout->addWidget(new GButtonConfigGroup("B Button", Config::BUTTON_B, this, ui.buttonsTab));
  19. layout->addWidget(new GButtonConfigGroup("X Button", Config::BUTTON_X, this, ui.buttonsTab));
  20. layout->addWidget(new GButtonConfigGroup("Y Button", Config::BUTTON_Y, this, ui.buttonsTab));
  21. layout->addWidget(new GButtonConfigGroup("Z Button", Config::BUTTON_Z, this, ui.buttonsTab));
  22. layout->addWidget(new GButtonConfigGroup("L Trigger", Config::TRIGGER_L, this, ui.buttonsTab));
  23. layout->addWidget(new GButtonConfigGroup("R Trigger", Config::TRIGGER_R, this, ui.buttonsTab));
  24. layout->addWidget(new GButtonConfigGroup("Start Button", Config::BUTTON_START, this, ui.buttonsTab));
  25. memcpy(config, initial_config, sizeof(config));
  26. emit ActivePortChanged(config[0]);
  27. }
  28. void GControllerConfig::OnKeyConfigChanged(common::Config::Control id, int key, const QString& name)
  29. {
  30. if (InputSourceJoypad())
  31. {
  32. config[GetActiveController()].pads.key_code[id] = key;
  33. }
  34. else
  35. {
  36. config[GetActiveController()].keys.key_code[id] = key;
  37. }
  38. emit ActivePortChanged(config[GetActiveController()]);
  39. }
  40. int GControllerConfig::GetActiveController()
  41. {
  42. return ui.activeControllerCB->currentIndex();
  43. }
  44. bool GControllerConfig::InputSourceJoypad()
  45. {
  46. return ui.inputSourceCB->currentIndex() == 1;
  47. }
  48. GControllerConfigDialog::GControllerConfigDialog(common::Config::ControllerPort* controller_ports, QWidget* parent) : QDialog(parent), config_ptr(controller_ports)
  49. {
  50. setWindowTitle(tr("Input configuration"));
  51. QVBoxLayout* layout = new QVBoxLayout(this);
  52. config_widget = new GControllerConfig(controller_ports, this);
  53. layout->addWidget(config_widget);
  54. QDialogButtonBox* buttons = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel);
  55. layout->addWidget(buttons);
  56. connect(buttons, SIGNAL(rejected()), this, SLOT(reject()));
  57. connect(buttons, SIGNAL(accepted()), this, SLOT(accept()));
  58. connect(this, SIGNAL(accepted()), this, SLOT(EnableChanges()));
  59. layout->setSizeConstraint(QLayout::SetFixedSize);
  60. setLayout(layout);
  61. setModal(true);
  62. show();
  63. }
  64. void GControllerConfigDialog::EnableChanges()
  65. {
  66. for (unsigned int i = 0; i < 4; ++i)
  67. {
  68. memcpy(&config_ptr[i], &config_widget->GetControllerConfig(i), sizeof(common::Config::ControllerPort));
  69. if (common::g_config) {
  70. // Apply changes if running a game
  71. memcpy(&common::g_config->controller_ports(i), &config_widget->GetControllerConfig(i), sizeof(common::Config::ControllerPort));
  72. }
  73. }
  74. }
  75. */