X-Git-Url: http://shamusworld.gotdns.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fgui%2Fkeygrabber.cpp;h=7efe537b1f9a0ecb8e0b12aab446b7a6b00aee3d;hb=5c28b6dbf7aa20441c8a51f484f4f64b1966f7e3;hp=694be3cb5d20439e78edc2c7e5536d544b9d2998;hpb=f63cd569374c4fbcd872bb8a67c94788da29c3a8;p=virtualjaguar diff --git a/src/gui/keygrabber.cpp b/src/gui/keygrabber.cpp index 694be3c..7efe537 100644 --- a/src/gui/keygrabber.cpp +++ b/src/gui/keygrabber.cpp @@ -12,25 +12,32 @@ // #include "keygrabber.h" +#include "gamepad.h" -KeyGrabber::KeyGrabber(QWidget * parent/*= 0*/): QDialog(parent) +KeyGrabber::KeyGrabber(QWidget * parent/*= 0*/): QDialog(parent), + label(new QLabel), timer(new QTimer), buttonDown(false) { - label = new QLabel(this); +// label = new QLabel(this); QVBoxLayout * mainLayout = new QVBoxLayout; mainLayout->addWidget(label); setLayout(mainLayout); setWindowTitle(tr("Grab")); + connect(timer, SIGNAL(timeout()), this, SLOT(CheckGamepad())); + timer->setInterval(100); + timer->start(); // Will this make Mac OSX work??? setFocusPolicy(Qt::StrongFocus); } + KeyGrabber::~KeyGrabber() { + timer->stop(); } -//void KeyGrabber::SetText(QString keyText) + void KeyGrabber::SetKeyText(int keyNum) { char jagButtonName[21][10] = { "Up", "Down", "Left", "Right", @@ -42,6 +49,7 @@ void KeyGrabber::SetKeyText(int keyNum) label->setText(text); } + void KeyGrabber::keyPressEvent(QKeyEvent * e) { key = e->key(); @@ -50,3 +58,31 @@ void KeyGrabber::keyPressEvent(QKeyEvent * e) if (key != Qt::Key_Alt) accept(); } + + +void KeyGrabber::CheckGamepad(void) +{ + // How do we determine which joystick it is, if more than one? + // Possibly by a combobox selecting the stick you want to configure... + Gamepad::Update(); + + if (!buttonDown) + { + button = Gamepad::CheckButtonPressed(); + + if (button == -1) + return; + + buttonDown = true; + } + else + { + if (Gamepad::CheckButtonPressed() == button) + return; + + key = button; + accept(); + buttonDown = false; + } +} +