mirror of
https://github.com/libretro/ppsspp.git
synced 2024-11-30 20:01:00 +00:00
103 lines
2.7 KiB
C++
103 lines
2.7 KiB
C++
#include "controls.h"
|
|
#include "ui_controls.h"
|
|
#include "Core/Config.h"
|
|
#include "EmuThread.h"
|
|
#include <QTimer>
|
|
|
|
Controls_ controllist[] = {
|
|
{"Edit_Start", "Start", Qt::Key_1, PAD_BUTTON_START, CTRL_START},
|
|
{"Edit_Select", "Select", Qt::Key_2, PAD_BUTTON_SELECT, CTRL_SELECT},
|
|
{"Edit_S", "Square", Qt::Key_Z, PAD_BUTTON_X, CTRL_SQUARE},
|
|
{"Edit_T", "Triangle", Qt::Key_A, PAD_BUTTON_Y, CTRL_TRIANGLE},
|
|
{"Edit_O", "Circle", Qt::Key_S, PAD_BUTTON_B, CTRL_CIRCLE},
|
|
{"Edit_X", "Cross", Qt::Key_X, PAD_BUTTON_A, CTRL_CROSS},
|
|
{"Edit_LT", "Left Trigger", Qt::Key_Q, PAD_BUTTON_LBUMPER, CTRL_LTRIGGER},
|
|
{"Edit_RT", "Right Trigger", Qt::Key_W, PAD_BUTTON_RBUMPER, CTRL_RTRIGGER},
|
|
{"Edit_Up", "Up", Qt::Key_Up, PAD_BUTTON_UP, CTRL_UP},
|
|
{"Edit_Down", "Down", Qt::Key_Down, PAD_BUTTON_DOWN, CTRL_DOWN},
|
|
{"Edit_Left", "Left", Qt::Key_Left, PAD_BUTTON_LEFT, CTRL_LEFT},
|
|
{"Edit_Right", "Right", Qt::Key_Right, PAD_BUTTON_RIGHT, CTRL_RIGHT},
|
|
{"", "Analog Up", Qt::Key_I, PAD_BUTTON_JOY_UP, 0},
|
|
{"", "Analog Down", Qt::Key_K, PAD_BUTTON_JOY_DOWN,0},
|
|
{"", "Analog Left", Qt::Key_J, PAD_BUTTON_JOY_LEFT,0},
|
|
{"", "Analog Right", Qt::Key_L, PAD_BUTTON_JOY_RIGHT,0},
|
|
};
|
|
|
|
Controls::Controls(QWidget *parent) :
|
|
QDialog(parent),
|
|
ui(new Ui::Controls)
|
|
{
|
|
ui->setupUi(this);
|
|
|
|
for(int i = 0; i < controllistCount; i++)
|
|
{
|
|
if(g_Config.iMappingMap.find(i) != g_Config.iMappingMap.end())
|
|
{
|
|
controllist[i].key = (Qt::Key)g_Config.iMappingMap[i];
|
|
}
|
|
}
|
|
}
|
|
|
|
Controls::~Controls()
|
|
{
|
|
delete ui;
|
|
}
|
|
|
|
void Controls::showEvent(QShowEvent*)
|
|
{
|
|
#ifdef Q_WS_X11
|
|
// Hack to remove the X11 crash with threaded opengl when opening the first dialog
|
|
EmuThread_LockDraw(true);
|
|
QTimer::singleShot(100, this, SLOT(releaseLock()));
|
|
#endif
|
|
|
|
for(int i = 0; i < controllistCount; i++)
|
|
{
|
|
if(g_Config.iMappingMap.find(i) != g_Config.iMappingMap.end())
|
|
{
|
|
controllist[i].key = (Qt::Key)g_Config.iMappingMap[i];
|
|
}
|
|
|
|
if(controllist[i].editName != "")
|
|
{
|
|
QLineEdit* edit = findChild<QLineEdit*>(controllist[i].editName);
|
|
if(edit)
|
|
{
|
|
QKeySequence sec(controllist[i].key);
|
|
edit->setText(sec.toString());
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
void Controls::changeEvent(QEvent *event)
|
|
{
|
|
if (event)
|
|
if (event->type() == QEvent::LanguageChange)
|
|
ui->retranslateUi(this);
|
|
|
|
QDialog::changeEvent(event);
|
|
}
|
|
|
|
void Controls::releaseLock()
|
|
{
|
|
EmuThread_LockDraw(false);
|
|
}
|
|
|
|
void Controls::on_buttonBox_accepted()
|
|
{
|
|
for(int i = 0; i < controllistCount; i++)
|
|
{
|
|
if(controllist[i].editName != "")
|
|
{
|
|
QLineEdit* edit = findChild<QLineEdit*>(controllist[i].editName);
|
|
if(edit)
|
|
{
|
|
QKeySequence sec(edit->text());
|
|
controllist[i].key = (Qt::Key)sec[0];
|
|
g_Config.iMappingMap[i] = sec[0];
|
|
}
|
|
}
|
|
}
|
|
}
|