mirror of
https://github.com/AntiMicroX/antimicrox.git
synced 2025-12-23 23:29:25 -05:00
1311 lines
48 KiB
C++
1311 lines
48 KiB
C++
/* antimicrox Gamepad to KB+M event mapper
|
|
* Copyright (C) 2015 Travis Nickles <nickles.travis@gmail.com>
|
|
* Copyright (C) 2020 Jagoda Górska <juliagoda.pl@protonmail.com>
|
|
*
|
|
* This program is free software: you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License as published by
|
|
* the Free Software Foundation, either version 3 of the License, or
|
|
* (at your option) any later version.
|
|
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
#include "advancestickassignmentdialog.h"
|
|
#include "ui_advancestickassignmentdialog.h"
|
|
|
|
#include "globalvariables.h"
|
|
#include "joycontrolstick.h"
|
|
#include "joystick.h"
|
|
#include "messagehandler.h"
|
|
#include "vdpad.h"
|
|
|
|
#include <typeinfo>
|
|
|
|
#include <QDebug>
|
|
#include <QHashIterator>
|
|
#include <QList>
|
|
#include <QMessageBox>
|
|
#include <QSignalMapper>
|
|
#include <QString>
|
|
#include <QVariant>
|
|
|
|
AdvanceStickAssignmentDialog::AdvanceStickAssignmentDialog(Joystick *joystick, QWidget *parent)
|
|
: QDialog(parent, Qt::Window)
|
|
, ui(new Ui::AdvanceStickAssignmentDialog)
|
|
{
|
|
ui->setupUi(this);
|
|
|
|
qInstallMessageHandler(MessageHandler::myMessageOutput);
|
|
setAttribute(Qt::WA_DeleteOnClose);
|
|
|
|
this->joystick = joystick;
|
|
joystick->getActiveSetJoystick()->setIgnoreEventState(true);
|
|
joystick->getActiveSetJoystick()->release();
|
|
joystick->resetButtonDownCount();
|
|
|
|
QString tempHeaderLabel = ui->joystickNumberLabel->text();
|
|
tempHeaderLabel = tempHeaderLabel.arg(joystick->getSDLName()).arg(joystick->getRealJoyNumber());
|
|
ui->joystickNumberLabel->setText(tempHeaderLabel);
|
|
ui->joystickNumberLabel2->setText(tempHeaderLabel);
|
|
|
|
tempHeaderLabel = ui->hatNumberLabel->text();
|
|
tempHeaderLabel = tempHeaderLabel.arg(joystick->getNumberHats());
|
|
ui->hatNumberLabel->setText(tempHeaderLabel);
|
|
|
|
ui->xAxisOneComboBox->addItem("", QVariant(0));
|
|
ui->yAxisOneComboBox->addItem("", QVariant(0));
|
|
ui->xAxisTwoComboBox->addItem("", QVariant(0));
|
|
ui->yAxisTwoComboBox->addItem("", QVariant(0));
|
|
|
|
for (int i = 0; i < joystick->getNumberAxes(); i++)
|
|
{
|
|
ui->xAxisOneComboBox->addItem(tr("Axis %1").arg(i + 1), QVariant(i));
|
|
ui->yAxisOneComboBox->addItem(tr("Axis %1").arg(i + 1), QVariant(i));
|
|
|
|
ui->xAxisTwoComboBox->addItem(tr("Axis %1").arg(i + 1), QVariant(i));
|
|
ui->yAxisTwoComboBox->addItem(tr("Axis %1").arg(i + 1), QVariant(i));
|
|
}
|
|
|
|
JoyControlStick *stick1 = joystick->getActiveSetJoystick()->getJoyStick(0);
|
|
JoyControlStick *stick2 = joystick->getActiveSetJoystick()->getJoyStick(1);
|
|
refreshStickConfiguration(stick1, stick2);
|
|
populateDPadComboBoxes();
|
|
refreshVDPadsConfiguration();
|
|
|
|
ui->versionTwoMessageLabel->setVisible(false);
|
|
|
|
connect(ui->enableOneCheckBox, &QCheckBox::clicked, this, &AdvanceStickAssignmentDialog::changeStateStickOneWidgets);
|
|
connect(ui->enableTwoCheckBox, &QCheckBox::clicked, this, &AdvanceStickAssignmentDialog::changeStateStickTwoWidgets);
|
|
connect(ui->vdpadEnableCheckBox, &QCheckBox::clicked, this, &AdvanceStickAssignmentDialog::changeStateVDPadWidgets);
|
|
|
|
connect(ui->xAxisOneComboBox, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged),
|
|
[this]() { this->checkForAxisAssignmentStickOne(ui->xAxisOneComboBox); });
|
|
|
|
connect(ui->yAxisOneComboBox, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged),
|
|
[this]() { this->checkForAxisAssignmentStickOne(ui->yAxisOneComboBox); });
|
|
|
|
connect(ui->xAxisTwoComboBox, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged),
|
|
[this]() { this->checkForAxisAssignmentStickTwo(ui->xAxisTwoComboBox); });
|
|
|
|
connect(ui->yAxisTwoComboBox, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged),
|
|
[this]() { this->checkForAxisAssignmentStickTwo(ui->yAxisTwoComboBox); });
|
|
|
|
connect(ui->quickAssignStick1PushButton, &QPushButton::clicked, this,
|
|
&AdvanceStickAssignmentDialog::openQuickAssignDialogStick1);
|
|
connect(ui->quickAssignStick2PushButton, &QPushButton::clicked, this,
|
|
&AdvanceStickAssignmentDialog::openQuickAssignDialogStick2);
|
|
|
|
enableVDPadComboBoxes();
|
|
|
|
connect(this, &AdvanceStickAssignmentDialog::stickConfigurationChanged, this,
|
|
&AdvanceStickAssignmentDialog::disableVDPadComboBoxes);
|
|
connect(this, &AdvanceStickAssignmentDialog::stickConfigurationChanged, this,
|
|
&AdvanceStickAssignmentDialog::populateDPadComboBoxes);
|
|
connect(this, &AdvanceStickAssignmentDialog::stickConfigurationChanged, this,
|
|
&AdvanceStickAssignmentDialog::refreshVDPadsConfiguration);
|
|
connect(this, &AdvanceStickAssignmentDialog::stickConfigurationChanged, this,
|
|
&AdvanceStickAssignmentDialog::enableVDPadComboBoxes);
|
|
|
|
connect(ui->vdpadUpPushButton, &QPushButton::clicked, this, &AdvanceStickAssignmentDialog::openAssignVDPadUp);
|
|
connect(ui->vdpadDownPushButton, &QPushButton::clicked, this, &AdvanceStickAssignmentDialog::openAssignVDPadDown);
|
|
connect(ui->vdpadLeftPushButton, &QPushButton::clicked, this, &AdvanceStickAssignmentDialog::openAssignVDPadLeft);
|
|
connect(ui->vdpadRightPushButton, &QPushButton::clicked, this, &AdvanceStickAssignmentDialog::openAssignVDPadRight);
|
|
|
|
connect(this, &AdvanceStickAssignmentDialog::finished, this, &AdvanceStickAssignmentDialog::reenableButtonEvents);
|
|
}
|
|
|
|
// for tests
|
|
AdvanceStickAssignmentDialog::AdvanceStickAssignmentDialog(QWidget *parent)
|
|
: QDialog(parent, Qt::Window)
|
|
, ui(new Ui::AdvanceStickAssignmentDialog)
|
|
{
|
|
}
|
|
|
|
AdvanceStickAssignmentDialog::~AdvanceStickAssignmentDialog()
|
|
{
|
|
qInstallMessageHandler(MessageHandler::myMessageOutput);
|
|
|
|
delete ui;
|
|
}
|
|
|
|
void AdvanceStickAssignmentDialog::checkForAxisAssignmentStickOne(QWidget *comboBox)
|
|
{
|
|
qInstallMessageHandler(MessageHandler::myMessageOutput);
|
|
|
|
checkForAxisAssignmentSticks(comboBox, ui->xAxisTwoComboBox, ui->yAxisTwoComboBox, 0);
|
|
}
|
|
|
|
void AdvanceStickAssignmentDialog::checkForAxisAssignmentStickTwo(QWidget *comboBox)
|
|
{
|
|
qInstallMessageHandler(MessageHandler::myMessageOutput);
|
|
|
|
checkForAxisAssignmentSticks(comboBox, ui->xAxisTwoComboBox, ui->yAxisTwoComboBox, 1);
|
|
}
|
|
|
|
void AdvanceStickAssignmentDialog::checkForAxisAssignmentSticks(QWidget *comboBox, QComboBox *xAxisComboBox,
|
|
QComboBox *yAxisComboBox, int controlStickNumber)
|
|
{
|
|
qInstallMessageHandler(MessageHandler::myMessageOutput);
|
|
|
|
if ((xAxisComboBox->currentIndex() > 0) && (yAxisComboBox->currentIndex() > 0))
|
|
{
|
|
if (xAxisComboBox->currentIndex() != yAxisComboBox->currentIndex())
|
|
{
|
|
QHash<int, SetJoystick *>::iterator set;
|
|
int originset = 0;
|
|
|
|
for (set = joystick->getJoystick_sets().begin(); set != joystick->getJoystick_sets().end(); ++set)
|
|
{
|
|
SetJoystick *currentset = set.value();
|
|
JoyAxis *axis1 = currentset->getJoyAxis(xAxisComboBox->currentIndex() - 1);
|
|
JoyAxis *axis2 = currentset->getJoyAxis(yAxisComboBox->currentIndex() - 1);
|
|
|
|
if ((axis1 != nullptr) && (axis2 != nullptr) && (currentset->getJoyStick(controlStickNumber) != nullptr))
|
|
{
|
|
currentset->getJoyStick(controlStickNumber)->replaceAxes(axis1, axis2);
|
|
} else if ((axis1 != nullptr) && (axis2 != nullptr) &&
|
|
(currentset->getJoyStick(controlStickNumber) == nullptr))
|
|
{
|
|
JoyControlStick *controlstick =
|
|
new JoyControlStick(axis1, axis2, controlStickNumber, originset, currentset);
|
|
currentset->addControlStick(controlStickNumber, controlstick);
|
|
}
|
|
|
|
originset++;
|
|
}
|
|
|
|
JoyControlStick *stick1 = joystick->getActiveSetJoystick()->getJoyStick(0);
|
|
JoyControlStick *stick2 = joystick->getActiveSetJoystick()->getJoyStick(1);
|
|
refreshStickConfiguration(stick1, stick2);
|
|
emit stickConfigurationChanged();
|
|
} else if (comboBox == xAxisComboBox)
|
|
{
|
|
yAxisComboBox->setCurrentIndex(0);
|
|
} else if (comboBox == yAxisComboBox)
|
|
{
|
|
xAxisComboBox->setCurrentIndex(0);
|
|
}
|
|
}
|
|
}
|
|
|
|
void AdvanceStickAssignmentDialog::changeStateVDPadWidgets(bool enabledVDPads)
|
|
{
|
|
qInstallMessageHandler(MessageHandler::myMessageOutput);
|
|
|
|
ui->vdpadUpComboBox->setEnabled(enabledVDPads);
|
|
ui->vdpadDownComboBox->setEnabled(enabledVDPads);
|
|
ui->vdpadLeftComboBox->setEnabled(enabledVDPads);
|
|
ui->vdpadRightComboBox->setEnabled(enabledVDPads);
|
|
|
|
ui->vdpadUpPushButton->setEnabled(enabledVDPads);
|
|
ui->vdpadDownPushButton->setEnabled(enabledVDPads);
|
|
ui->vdpadLeftPushButton->setEnabled(enabledVDPads);
|
|
ui->vdpadRightPushButton->setEnabled(enabledVDPads);
|
|
|
|
QHash<int, SetJoystick *>::iterator set;
|
|
int originset = 0;
|
|
|
|
for (set = joystick->getJoystick_sets().begin(); set != joystick->getJoystick_sets().end(); ++set)
|
|
{
|
|
SetJoystick *currentset = set.value();
|
|
|
|
if (!currentset->getVDPad(0) && enabledVDPads)
|
|
{
|
|
currentset->addVDPad(0, new VDPad(0, originset, currentset, currentset));
|
|
} else
|
|
{
|
|
currentset->removeVDPad(0);
|
|
}
|
|
|
|
originset++;
|
|
}
|
|
}
|
|
|
|
void AdvanceStickAssignmentDialog::changeStateStickOneWidgets(bool enabled)
|
|
{
|
|
qInstallMessageHandler(MessageHandler::myMessageOutput);
|
|
|
|
if (enabled)
|
|
{
|
|
ui->xAxisOneComboBox->setEnabled(true);
|
|
ui->yAxisOneComboBox->setEnabled(true);
|
|
ui->enableTwoCheckBox->setEnabled(true);
|
|
ui->quickAssignStick1PushButton->setEnabled(true);
|
|
} else
|
|
{
|
|
ui->xAxisOneComboBox->setEnabled(false);
|
|
ui->xAxisOneComboBox->setCurrentIndex(0);
|
|
ui->yAxisOneComboBox->setEnabled(false);
|
|
ui->yAxisOneComboBox->setCurrentIndex(0);
|
|
|
|
ui->xAxisTwoComboBox->setEnabled(false);
|
|
ui->yAxisTwoComboBox->setEnabled(false);
|
|
ui->xAxisTwoComboBox->setCurrentIndex(0);
|
|
ui->yAxisTwoComboBox->setCurrentIndex(0);
|
|
ui->enableTwoCheckBox->setEnabled(false);
|
|
ui->enableTwoCheckBox->setChecked(false);
|
|
ui->quickAssignStick1PushButton->setEnabled(false);
|
|
|
|
if (joystick->getActiveSetJoystick()->getJoyStick(1) != nullptr)
|
|
joystick->removeControlStick(1);
|
|
|
|
if (joystick->getActiveSetJoystick()->getJoyStick(0) != nullptr)
|
|
joystick->removeControlStick(0);
|
|
}
|
|
}
|
|
|
|
void AdvanceStickAssignmentDialog::changeStateStickTwoWidgets(bool enabled)
|
|
{
|
|
qInstallMessageHandler(MessageHandler::myMessageOutput);
|
|
|
|
if (enabled)
|
|
{
|
|
ui->xAxisTwoComboBox->setEnabled(true);
|
|
ui->yAxisTwoComboBox->setEnabled(true);
|
|
ui->quickAssignStick2PushButton->setEnabled(true);
|
|
} else
|
|
{
|
|
ui->xAxisTwoComboBox->setEnabled(false);
|
|
ui->xAxisTwoComboBox->setCurrentIndex(0);
|
|
ui->yAxisTwoComboBox->setEnabled(false);
|
|
ui->yAxisTwoComboBox->setCurrentIndex(0);
|
|
ui->quickAssignStick2PushButton->setEnabled(false);
|
|
|
|
if (joystick->getActiveSetJoystick()->getJoyStick(1) != nullptr)
|
|
{
|
|
QHash<int, SetJoystick *>::iterator set;
|
|
|
|
for (set = joystick->getJoystick_sets().begin(); set != joystick->getJoystick_sets().end(); ++set)
|
|
{
|
|
set.value()->removeControlStick(1);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
void AdvanceStickAssignmentDialog::refreshStickConfiguration(JoyControlStick *stick1, JoyControlStick *stick2)
|
|
{
|
|
qInstallMessageHandler(MessageHandler::myMessageOutput);
|
|
|
|
if ((stick1 != nullptr) && (stick1->getAxisX() != nullptr) && (stick1->getAxisY() != nullptr))
|
|
{
|
|
refreshSticksForAxes(true, stick1->getAxisX()->getRealJoyIndex(), stick1->getAxisY()->getRealJoyIndex(),
|
|
ui->xAxisOneComboBox, ui->yAxisOneComboBox, ui->enableOneCheckBox,
|
|
ui->quickAssignStick1PushButton);
|
|
} else
|
|
{
|
|
refreshSticksForAxes(false, 0, 0, ui->xAxisOneComboBox, ui->yAxisOneComboBox, ui->enableOneCheckBox,
|
|
ui->quickAssignStick1PushButton);
|
|
}
|
|
|
|
if ((stick2 != nullptr) && (stick2->getAxisX() != nullptr) && (stick2->getAxisY() != nullptr))
|
|
{
|
|
refreshSticksForAxes(true, stick2->getAxisX()->getRealJoyIndex(), stick2->getAxisY()->getRealJoyIndex(),
|
|
ui->xAxisTwoComboBox, ui->yAxisTwoComboBox, ui->enableTwoCheckBox,
|
|
ui->quickAssignStick2PushButton);
|
|
} else
|
|
{
|
|
refreshSticksForAxes(false, 0, 0, ui->xAxisTwoComboBox, ui->yAxisTwoComboBox, ui->enableTwoCheckBox,
|
|
ui->quickAssignStick2PushButton);
|
|
}
|
|
}
|
|
|
|
void AdvanceStickAssignmentDialog::refreshSticksForAxes(bool axesExist, int xAxisComboBoxIndex, int yAxisComboBoxIndex,
|
|
QComboBox *xAxisComboBox, QComboBox *yAxisComboBox,
|
|
QCheckBox *enabledSticksCheckbox, QPushButton *quickAssignBtn)
|
|
{
|
|
xAxisComboBox->setCurrentIndex(xAxisComboBoxIndex);
|
|
yAxisComboBox->setCurrentIndex(yAxisComboBoxIndex);
|
|
xAxisComboBox->setEnabled(axesExist);
|
|
yAxisComboBox->setEnabled(axesExist);
|
|
enabledSticksCheckbox->setEnabled(axesExist);
|
|
enabledSticksCheckbox->setChecked(axesExist);
|
|
quickAssignBtn->setEnabled(axesExist);
|
|
}
|
|
|
|
void AdvanceStickAssignmentDialog::refreshVDPadsConfiguration()
|
|
{
|
|
qInstallMessageHandler(MessageHandler::myMessageOutput);
|
|
|
|
VDPad *vdpad = joystick->getActiveSetJoystick()->getVDPad(0);
|
|
|
|
if (vdpad != nullptr)
|
|
{
|
|
ui->vdpadEnableCheckBox->setChecked(true);
|
|
ui->vdpadUpComboBox->setEnabled(true);
|
|
ui->vdpadDownComboBox->setEnabled(true);
|
|
ui->vdpadLeftComboBox->setEnabled(true);
|
|
ui->vdpadRightComboBox->setEnabled(true);
|
|
|
|
ui->vdpadUpPushButton->setEnabled(true);
|
|
ui->vdpadDownPushButton->setEnabled(true);
|
|
ui->vdpadLeftPushButton->setEnabled(true);
|
|
ui->vdpadRightPushButton->setEnabled(true);
|
|
|
|
JoyButton *upButton = vdpad->getVButton(JoyDPadButton::DpadUp);
|
|
refreshVDPadConf(upButton, ui->vdpadUpComboBox);
|
|
|
|
JoyButton *downButton = vdpad->getVButton(JoyDPadButton::DpadDown);
|
|
refreshVDPadConf(downButton, ui->vdpadDownComboBox);
|
|
|
|
JoyButton *leftButton = vdpad->getVButton(JoyDPadButton::DpadLeft);
|
|
refreshVDPadConf(leftButton, ui->vdpadLeftComboBox);
|
|
|
|
JoyButton *rightButton = vdpad->getVButton(JoyDPadButton::DpadRight);
|
|
refreshVDPadConf(rightButton, ui->vdpadRightComboBox);
|
|
} else
|
|
{
|
|
ui->vdpadEnableCheckBox->setChecked(false);
|
|
|
|
ui->vdpadUpComboBox->setCurrentIndex(0);
|
|
ui->vdpadUpComboBox->setEnabled(false);
|
|
|
|
ui->vdpadDownComboBox->setCurrentIndex(0);
|
|
ui->vdpadDownComboBox->setEnabled(false);
|
|
|
|
ui->vdpadLeftComboBox->setCurrentIndex(0);
|
|
ui->vdpadLeftComboBox->setEnabled(false);
|
|
|
|
ui->vdpadRightComboBox->setCurrentIndex(0);
|
|
ui->vdpadRightComboBox->setEnabled(false);
|
|
|
|
ui->vdpadUpPushButton->setEnabled(false);
|
|
ui->vdpadDownPushButton->setEnabled(false);
|
|
ui->vdpadLeftPushButton->setEnabled(false);
|
|
ui->vdpadRightPushButton->setEnabled(false);
|
|
}
|
|
}
|
|
|
|
void AdvanceStickAssignmentDialog::refreshVDPadConf(JoyButton *vdpadButton, QComboBox *vpadComboBox)
|
|
{
|
|
if (vdpadButton != nullptr)
|
|
{
|
|
int buttonindex = 0;
|
|
|
|
if (typeid(*vdpadButton) == typeid(JoyAxisButton))
|
|
{
|
|
JoyAxisButton *axisbutton = qobject_cast<JoyAxisButton *>(vdpadButton);
|
|
JoyAxis *axis = axisbutton->getAxis();
|
|
QList<QVariant> templist;
|
|
templist.append(QVariant(axis->getRealJoyIndex()));
|
|
templist.append(QVariant(axisbutton->getJoyNumber()));
|
|
buttonindex = vpadComboBox->findData(templist);
|
|
} else
|
|
{
|
|
QList<QVariant> templist;
|
|
templist.append(QVariant(0));
|
|
templist.append(QVariant(vdpadButton->getRealJoyNumber()));
|
|
buttonindex = vpadComboBox->findData(templist);
|
|
}
|
|
|
|
if (buttonindex == -1)
|
|
vdpadButton->getVDPad()->removeVButton(vdpadButton);
|
|
else
|
|
vpadComboBox->setCurrentIndex(buttonindex);
|
|
}
|
|
}
|
|
|
|
void AdvanceStickAssignmentDialog::populateDPadComboBoxes()
|
|
{
|
|
qInstallMessageHandler(MessageHandler::myMessageOutput);
|
|
|
|
ui->vdpadUpComboBox->clear();
|
|
ui->vdpadDownComboBox->clear();
|
|
ui->vdpadLeftComboBox->clear();
|
|
ui->vdpadRightComboBox->clear();
|
|
|
|
ui->vdpadUpComboBox->addItem("", QVariant(0));
|
|
ui->vdpadDownComboBox->addItem("", QVariant(0));
|
|
ui->vdpadLeftComboBox->addItem("", QVariant(0));
|
|
ui->vdpadRightComboBox->addItem("", QVariant(0));
|
|
|
|
for (int i = 0; i < joystick->getNumberAxes(); i++)
|
|
{
|
|
JoyAxis *axis = joystick->getActiveSetJoystick()->getJoyAxis(i);
|
|
|
|
if (!axis->isPartControlStick())
|
|
{
|
|
QList<QVariant> templist;
|
|
templist.append(QVariant(i + 1));
|
|
templist.append(QVariant(0));
|
|
|
|
ui->vdpadUpComboBox->addItem(tr("Axis %1 -").arg(QString::number(i + 1)), templist);
|
|
ui->vdpadDownComboBox->addItem(tr("Axis %1 -").arg(QString::number(i + 1)), templist);
|
|
ui->vdpadLeftComboBox->addItem(tr("Axis %1 -").arg(QString::number(i + 1)), templist);
|
|
ui->vdpadRightComboBox->addItem(tr("Axis %1 -").arg(QString::number(i + 1)), templist);
|
|
|
|
templist.clear();
|
|
templist.append(QVariant(i + 1));
|
|
templist.append(QVariant(1));
|
|
|
|
ui->vdpadUpComboBox->addItem(tr("Axis %1 +").arg(QString::number(i + 1)), templist);
|
|
ui->vdpadDownComboBox->addItem(tr("Axis %1 +").arg(QString::number(i + 1)), templist);
|
|
ui->vdpadLeftComboBox->addItem(tr("Axis %1 +").arg(QString::number(i + 1)), templist);
|
|
ui->vdpadRightComboBox->addItem(tr("Axis %1 +").arg(QString::number(i + 1)), templist);
|
|
}
|
|
}
|
|
|
|
for (int i = 0; i < joystick->getNumberButtons(); i++)
|
|
{
|
|
QList<QVariant> templist;
|
|
templist.append(QVariant(0));
|
|
templist.append(QVariant(i + 1));
|
|
|
|
ui->vdpadUpComboBox->addItem(tr("Button %1").arg(QString::number(i + 1)), templist);
|
|
ui->vdpadDownComboBox->addItem(tr("Button %1").arg(QString::number(i + 1)), templist);
|
|
ui->vdpadLeftComboBox->addItem(tr("Button %1").arg(QString::number(i + 1)), templist);
|
|
ui->vdpadRightComboBox->addItem(tr("Button %1").arg(QString::number(i + 1)), templist);
|
|
}
|
|
}
|
|
|
|
void AdvanceStickAssignmentDialog::changeVDPadUpButton(int index)
|
|
{
|
|
qInstallMessageHandler(MessageHandler::myMessageOutput);
|
|
|
|
if (index > 0)
|
|
{
|
|
if (ui->vdpadDownComboBox->currentIndex() == index)
|
|
{
|
|
ui->vdpadDownComboBox->setCurrentIndex(0);
|
|
} else if (ui->vdpadLeftComboBox->currentIndex() == index)
|
|
{
|
|
ui->vdpadLeftComboBox->setCurrentIndex(0);
|
|
} else if (ui->vdpadRightComboBox->currentIndex() == index)
|
|
{
|
|
ui->vdpadRightComboBox->setCurrentIndex(0);
|
|
}
|
|
|
|
QVariant temp = ui->vdpadUpComboBox->itemData(index);
|
|
QList<QVariant> templist = temp.toList();
|
|
|
|
if (templist.size() == 2)
|
|
{
|
|
int axis = templist.at(0).toInt();
|
|
int button = templist.at(1).toInt();
|
|
|
|
if ((axis > 0) && (button >= 0))
|
|
{
|
|
QHash<int, SetJoystick *>::iterator set;
|
|
|
|
for (set = joystick->getJoystick_sets().begin(); set != joystick->getJoystick_sets().end(); ++set)
|
|
{
|
|
SetJoystick *currentset = set.value();
|
|
VDPad *vdpad = currentset->getVDPad(0);
|
|
JoyAxis *currentaxis = currentset->getJoyAxis(axis - 1);
|
|
JoyButton *currentbutton = nullptr;
|
|
|
|
if (button == 0)
|
|
{
|
|
currentbutton = currentaxis->getNAxisButton();
|
|
} else if (button == 1)
|
|
{
|
|
currentbutton = currentaxis->getPAxisButton();
|
|
}
|
|
|
|
vdpad->addVButton(JoyDPadButton::DpadUp, currentbutton);
|
|
}
|
|
} else if (button > 0)
|
|
{
|
|
QHash<int, SetJoystick *>::iterator set;
|
|
|
|
for (set = joystick->getJoystick_sets().begin(); set != joystick->getJoystick_sets().end(); ++set)
|
|
{
|
|
SetJoystick *currentset = set.value();
|
|
VDPad *vdpad = currentset->getVDPad(0);
|
|
JoyButton *currentbutton = currentset->getJoyButton(button - 1);
|
|
|
|
if (currentbutton != nullptr)
|
|
{
|
|
vdpad->addVButton(JoyDPadButton::DpadUp, currentbutton);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
} else
|
|
{
|
|
QHash<int, SetJoystick *>::iterator set;
|
|
|
|
for (set = joystick->getJoystick_sets().begin(); set != joystick->getJoystick_sets().end(); ++set)
|
|
{
|
|
SetJoystick *currentset = set.value();
|
|
VDPad *vdpad = currentset->getVDPad(0);
|
|
|
|
if ((vdpad != nullptr) && vdpad->getVButton(JoyDPadButton::DpadUp))
|
|
{
|
|
vdpad->removeVButton(JoyDPadButton::DpadUp);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
void AdvanceStickAssignmentDialog::changeVDPadDownButton(int index)
|
|
{
|
|
qInstallMessageHandler(MessageHandler::myMessageOutput);
|
|
|
|
if (index > 0)
|
|
{
|
|
if (ui->vdpadUpComboBox->currentIndex() == index)
|
|
{
|
|
ui->vdpadUpComboBox->setCurrentIndex(0);
|
|
} else if (ui->vdpadLeftComboBox->currentIndex() == index)
|
|
{
|
|
ui->vdpadLeftComboBox->setCurrentIndex(0);
|
|
} else if (ui->vdpadRightComboBox->currentIndex() == index)
|
|
{
|
|
ui->vdpadRightComboBox->setCurrentIndex(0);
|
|
}
|
|
|
|
QVariant temp = ui->vdpadDownComboBox->itemData(index);
|
|
QList<QVariant> templist = temp.toList();
|
|
|
|
if (templist.size() == 2)
|
|
{
|
|
int axis = templist.at(0).toInt();
|
|
int button = templist.at(1).toInt();
|
|
|
|
if ((axis > 0) && (button >= 0))
|
|
{
|
|
QHash<int, SetJoystick *>::iterator set;
|
|
|
|
for (set = joystick->getJoystick_sets().begin(); set != joystick->getJoystick_sets().end(); ++set)
|
|
{
|
|
SetJoystick *currentset = set.value();
|
|
VDPad *vdpad = currentset->getVDPad(0);
|
|
JoyAxis *currentaxis = currentset->getJoyAxis(axis - 1);
|
|
JoyButton *currentbutton = nullptr;
|
|
|
|
if (button == 0)
|
|
{
|
|
currentbutton = currentaxis->getNAxisButton();
|
|
} else if (button == 1)
|
|
{
|
|
currentbutton = currentaxis->getPAxisButton();
|
|
}
|
|
|
|
vdpad->addVButton(JoyDPadButton::DpadDown, currentbutton);
|
|
}
|
|
} else if (button > 0)
|
|
{
|
|
QHash<int, SetJoystick *>::iterator set;
|
|
|
|
for (set = joystick->getJoystick_sets().begin(); set != joystick->getJoystick_sets().end(); ++set)
|
|
{
|
|
SetJoystick *currentset = set.value();
|
|
VDPad *vdpad = currentset->getVDPad(0);
|
|
JoyButton *currentbutton = currentset->getJoyButton(button - 1);
|
|
|
|
if (currentbutton != nullptr)
|
|
{
|
|
vdpad->addVButton(JoyDPadButton::DpadDown, currentbutton);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
} else
|
|
{
|
|
QHash<int, SetJoystick *>::iterator set;
|
|
|
|
for (set = joystick->getJoystick_sets().begin(); set != joystick->getJoystick_sets().end(); ++set)
|
|
{
|
|
SetJoystick *currentset = set.value();
|
|
VDPad *vdpad = currentset->getVDPad(0);
|
|
|
|
if ((vdpad != nullptr) && vdpad->getVButton(JoyDPadButton::DpadDown))
|
|
{
|
|
vdpad->removeVButton(JoyDPadButton::DpadDown);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
void AdvanceStickAssignmentDialog::changeVDPadLeftButton(int index)
|
|
{
|
|
qInstallMessageHandler(MessageHandler::myMessageOutput);
|
|
|
|
if (index > 0)
|
|
{
|
|
if (ui->vdpadUpComboBox->currentIndex() == index)
|
|
{
|
|
ui->vdpadUpComboBox->setCurrentIndex(0);
|
|
} else if (ui->vdpadDownComboBox->currentIndex() == index)
|
|
{
|
|
ui->vdpadDownComboBox->setCurrentIndex(0);
|
|
} else if (ui->vdpadRightComboBox->currentIndex() == index)
|
|
{
|
|
ui->vdpadRightComboBox->setCurrentIndex(0);
|
|
}
|
|
|
|
QVariant temp = ui->vdpadLeftComboBox->itemData(index);
|
|
QList<QVariant> templist = temp.toList();
|
|
|
|
if (templist.size() == 2)
|
|
{
|
|
int axis = templist.at(0).toInt();
|
|
int button = templist.at(1).toInt();
|
|
|
|
if ((axis > 0) && (button >= 0))
|
|
{
|
|
QHash<int, SetJoystick *>::iterator set;
|
|
|
|
for (set = joystick->getJoystick_sets().begin(); set != joystick->getJoystick_sets().end(); ++set)
|
|
{
|
|
SetJoystick *currentset = set.value();
|
|
VDPad *vdpad = currentset->getVDPad(0);
|
|
JoyAxis *currentaxis = currentset->getJoyAxis(axis - 1);
|
|
JoyButton *currentbutton = nullptr;
|
|
|
|
if (button == 0)
|
|
{
|
|
currentbutton = currentaxis->getNAxisButton();
|
|
} else if (button == 1)
|
|
{
|
|
currentbutton = currentaxis->getPAxisButton();
|
|
}
|
|
|
|
vdpad->addVButton(JoyDPadButton::DpadLeft, currentbutton);
|
|
}
|
|
} else if (button > 0)
|
|
{
|
|
QHash<int, SetJoystick *>::iterator set;
|
|
|
|
for (set = joystick->getJoystick_sets().begin(); set != joystick->getJoystick_sets().end(); ++set)
|
|
{
|
|
SetJoystick *currentset = set.value();
|
|
VDPad *vdpad = currentset->getVDPad(0);
|
|
JoyButton *currentbutton = currentset->getJoyButton(button - 1);
|
|
|
|
if (currentbutton != nullptr)
|
|
{
|
|
vdpad->addVButton(JoyDPadButton::DpadLeft, currentbutton);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
} else
|
|
{
|
|
QHash<int, SetJoystick *>::iterator set;
|
|
|
|
for (set = joystick->getJoystick_sets().begin(); set != joystick->getJoystick_sets().end(); ++set)
|
|
{
|
|
SetJoystick *currentset = set.value();
|
|
VDPad *vdpad = currentset->getVDPad(0);
|
|
|
|
if ((vdpad != nullptr) && vdpad->getVButton(JoyDPadButton::DpadLeft))
|
|
{
|
|
vdpad->removeVButton(JoyDPadButton::DpadLeft);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
void AdvanceStickAssignmentDialog::changeVDPadRightButton(int index)
|
|
{
|
|
qInstallMessageHandler(MessageHandler::myMessageOutput);
|
|
|
|
if (index > 0)
|
|
{
|
|
if (ui->vdpadUpComboBox->currentIndex() == index)
|
|
{
|
|
ui->vdpadUpComboBox->setCurrentIndex(0);
|
|
} else if (ui->vdpadDownComboBox->currentIndex() == index)
|
|
{
|
|
ui->vdpadDownComboBox->setCurrentIndex(0);
|
|
} else if (ui->vdpadLeftComboBox->currentIndex() == index)
|
|
{
|
|
ui->vdpadLeftComboBox->setCurrentIndex(0);
|
|
}
|
|
|
|
QVariant temp = ui->vdpadRightComboBox->itemData(index);
|
|
QList<QVariant> templist = temp.toList();
|
|
|
|
if (templist.size() == 2)
|
|
{
|
|
int axis = templist.at(0).toInt();
|
|
int button = templist.at(1).toInt();
|
|
|
|
if ((axis > 0) && (button >= 0))
|
|
{
|
|
QHash<int, SetJoystick *>::iterator set;
|
|
|
|
for (set = joystick->getJoystick_sets().begin(); set != joystick->getJoystick_sets().end(); ++set)
|
|
{
|
|
SetJoystick *currentset = set.value();
|
|
VDPad *vdpad = currentset->getVDPad(0);
|
|
JoyAxis *currentaxis = currentset->getJoyAxis(axis - 1);
|
|
JoyButton *currentbutton = nullptr;
|
|
|
|
if (button == 0)
|
|
{
|
|
currentbutton = currentaxis->getNAxisButton();
|
|
} else if (button == 1)
|
|
{
|
|
currentbutton = currentaxis->getPAxisButton();
|
|
}
|
|
|
|
vdpad->addVButton(JoyDPadButton::DpadRight, currentbutton);
|
|
}
|
|
} else if (button > 0)
|
|
{
|
|
QHash<int, SetJoystick *>::iterator set;
|
|
|
|
for (set = joystick->getJoystick_sets().begin(); set != joystick->getJoystick_sets().end(); ++set)
|
|
{
|
|
SetJoystick *currentset = set.value();
|
|
VDPad *vdpad = currentset->getVDPad(0);
|
|
JoyButton *currentbutton = currentset->getJoyButton(button - 1);
|
|
|
|
if (currentbutton != nullptr)
|
|
{
|
|
vdpad->addVButton(JoyDPadButton::DpadRight, currentbutton);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
} else
|
|
{
|
|
QHash<int, SetJoystick *>::iterator set;
|
|
|
|
for (set = joystick->getJoystick_sets().begin(); set != joystick->getJoystick_sets().end(); ++set)
|
|
{
|
|
SetJoystick *currentset = set.value();
|
|
VDPad *vdpad = currentset->getVDPad(0);
|
|
|
|
if ((vdpad != nullptr) && vdpad->getVButton(JoyDPadButton::DpadRight))
|
|
{
|
|
vdpad->removeVButton(JoyDPadButton::DpadRight);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
void AdvanceStickAssignmentDialog::enableVDPadComboBoxes()
|
|
{
|
|
qInstallMessageHandler(MessageHandler::myMessageOutput);
|
|
|
|
connect(ui->vdpadUpComboBox, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged), this,
|
|
&AdvanceStickAssignmentDialog::changeVDPadUpButton);
|
|
connect(ui->vdpadDownComboBox, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged), this,
|
|
&AdvanceStickAssignmentDialog::changeVDPadDownButton);
|
|
connect(ui->vdpadLeftComboBox, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged), this,
|
|
&AdvanceStickAssignmentDialog::changeVDPadLeftButton);
|
|
connect(ui->vdpadRightComboBox, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged), this,
|
|
&AdvanceStickAssignmentDialog::changeVDPadRightButton);
|
|
}
|
|
|
|
void AdvanceStickAssignmentDialog::disableVDPadComboBoxes()
|
|
{
|
|
qInstallMessageHandler(MessageHandler::myMessageOutput);
|
|
|
|
disconnect(ui->vdpadUpComboBox, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged), this,
|
|
&AdvanceStickAssignmentDialog::changeVDPadUpButton);
|
|
disconnect(ui->vdpadDownComboBox, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged), this,
|
|
&AdvanceStickAssignmentDialog::changeVDPadDownButton);
|
|
disconnect(ui->vdpadLeftComboBox, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged), this,
|
|
&AdvanceStickAssignmentDialog::changeVDPadLeftButton);
|
|
disconnect(ui->vdpadRightComboBox, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged), this,
|
|
&AdvanceStickAssignmentDialog::changeVDPadRightButton);
|
|
}
|
|
|
|
void AdvanceStickAssignmentDialog::openQuickAssignDialogStick1()
|
|
{
|
|
qInstallMessageHandler(MessageHandler::myMessageOutput);
|
|
|
|
QMessageBox msgBox;
|
|
msgBox.setText(tr("Move stick 1 along the X axis"));
|
|
msgBox.setStandardButtons(QMessageBox::Close);
|
|
|
|
for (int i = 0; i < joystick->getNumberAxes(); i++)
|
|
{
|
|
JoyAxis *axis = joystick->getActiveSetJoystick()->getJoyAxis(i);
|
|
|
|
if (axis != nullptr)
|
|
{
|
|
connect(axis, &JoyAxis::active, &msgBox, &QMessageBox::close);
|
|
connect(axis, &JoyAxis::active, this,
|
|
[this, axis] { ui->xAxisOneComboBox->setCurrentIndex(axis->getRealJoyIndex()); });
|
|
}
|
|
}
|
|
|
|
msgBox.exec();
|
|
msgBox.setText(tr("Move stick 1 along the Y axis"));
|
|
|
|
for (int i = 0; i < joystick->getNumberAxes(); i++)
|
|
{
|
|
JoyAxis *axis = joystick->getActiveSetJoystick()->getJoyAxis(i);
|
|
|
|
if (axis != nullptr)
|
|
{
|
|
disconnect(axis, &JoyAxis::active, &msgBox, &QMessageBox::close);
|
|
disconnect(axis, &JoyAxis::active, this, nullptr);
|
|
|
|
connect(axis, &JoyAxis::active, &msgBox, &QMessageBox::close);
|
|
connect(axis, &JoyAxis::active, this,
|
|
[this, axis] { ui->yAxisOneComboBox->setCurrentIndex(axis->getRealJoyIndex()); });
|
|
}
|
|
}
|
|
|
|
msgBox.exec();
|
|
|
|
for (int i = 0; i < joystick->getNumberAxes(); i++)
|
|
{
|
|
JoyAxis *axis = joystick->getActiveSetJoystick()->getJoyAxis(i);
|
|
|
|
if (axis != nullptr)
|
|
{
|
|
disconnect(axis, &JoyAxis::active, &msgBox, &QMessageBox::close);
|
|
disconnect(axis, &JoyAxis::active, this, nullptr);
|
|
}
|
|
}
|
|
}
|
|
|
|
void AdvanceStickAssignmentDialog::openQuickAssignDialogStick2()
|
|
{
|
|
qInstallMessageHandler(MessageHandler::myMessageOutput);
|
|
|
|
QMessageBox msgBox;
|
|
msgBox.setText(tr("Move stick 2 along the X axis"));
|
|
msgBox.setStandardButtons(QMessageBox::Close);
|
|
|
|
for (int i = 0; i < joystick->getNumberAxes(); i++)
|
|
{
|
|
JoyAxis *axis = joystick->getActiveSetJoystick()->getJoyAxis(i);
|
|
|
|
if (axis != nullptr)
|
|
{
|
|
connect(axis, &JoyAxis::active, &msgBox, &QMessageBox::close);
|
|
connect(axis, &JoyAxis::active, this,
|
|
[this, axis] { ui->xAxisTwoComboBox->setCurrentIndex(axis->getRealJoyIndex()); });
|
|
}
|
|
}
|
|
|
|
msgBox.exec();
|
|
msgBox.setText(tr("Move stick 2 along the Y axis"));
|
|
|
|
for (int i = 0; i < joystick->getNumberAxes(); i++)
|
|
{
|
|
JoyAxis *axis = joystick->getActiveSetJoystick()->getJoyAxis(i);
|
|
if (axis != nullptr)
|
|
{
|
|
disconnect(axis, &JoyAxis::active, &msgBox, &QMessageBox::close);
|
|
disconnect(axis, &JoyAxis::active, this, nullptr);
|
|
|
|
connect(axis, &JoyAxis::active, &msgBox, &QMessageBox::close);
|
|
connect(axis, &JoyAxis::active, this,
|
|
[this, axis] { ui->yAxisTwoComboBox->setCurrentIndex(axis->getRealJoyIndex()); });
|
|
}
|
|
}
|
|
|
|
msgBox.exec();
|
|
|
|
for (int i = 0; i < joystick->getNumberAxes(); i++)
|
|
{
|
|
JoyAxis *axis = joystick->getActiveSetJoystick()->getJoyAxis(i);
|
|
|
|
if (axis != nullptr)
|
|
{
|
|
disconnect(axis, &JoyAxis::active, &msgBox, &QMessageBox::close);
|
|
disconnect(axis, &JoyAxis::active, this, nullptr);
|
|
}
|
|
}
|
|
}
|
|
|
|
void AdvanceStickAssignmentDialog::reenableButtonEvents()
|
|
{
|
|
qInstallMessageHandler(MessageHandler::myMessageOutput);
|
|
|
|
joystick->getActiveSetJoystick()->setIgnoreEventState(false);
|
|
joystick->getActiveSetJoystick()->release();
|
|
}
|
|
|
|
void AdvanceStickAssignmentDialog::openAssignVDPadUp()
|
|
{
|
|
qInstallMessageHandler(MessageHandler::myMessageOutput);
|
|
|
|
QMessageBox msgBox;
|
|
msgBox.setText(tr("Press a button or move an axis"));
|
|
msgBox.setStandardButtons(QMessageBox::Close);
|
|
|
|
for (int i = 0; i < joystick->getNumberAxes(); i++)
|
|
{
|
|
JoyAxis *axis = joystick->getActiveSetJoystick()->getJoyAxis(i);
|
|
|
|
if ((axis != nullptr) && !axis->isPartControlStick())
|
|
{
|
|
JoyAxisButton *axbtn = axis->getNAxisButton();
|
|
connect(axis->getNAxisButton(), &JoyAxisButton::clicked, &msgBox, &QMessageBox::close);
|
|
connect(axis->getNAxisButton(), &JoyAxisButton::clicked, this, [this, axbtn] { quickAssignVDPadUp(axbtn); });
|
|
|
|
JoyAxisButton *axbtnp = axis->getPAxisButton();
|
|
connect(axis->getPAxisButton(), &JoyAxisButton::clicked, &msgBox, &QMessageBox::close);
|
|
connect(axis->getPAxisButton(), &JoyAxisButton::clicked, this, [this, axbtnp] { quickAssignVDPadUp(axbtnp); });
|
|
}
|
|
}
|
|
|
|
for (int i = 0; i < joystick->getNumberButtons(); i++)
|
|
{
|
|
JoyButton *button = joystick->getActiveSetJoystick()->getJoyButton(i);
|
|
|
|
if (button != nullptr)
|
|
{
|
|
connect(button, &JoyButton::clicked, &msgBox, &QMessageBox::close);
|
|
connect(button, &JoyButton::clicked, this, [this, button]() { quickAssignVDPadUpBtn(button); });
|
|
}
|
|
}
|
|
|
|
msgBox.exec();
|
|
|
|
for (int i = 0; i < joystick->getNumberAxes(); i++)
|
|
{
|
|
JoyAxis *axis = joystick->getActiveSetJoystick()->getJoyAxis(i);
|
|
|
|
if ((axis != nullptr) && !axis->isPartControlStick())
|
|
{
|
|
disconnect(axis->getNAxisButton(), &JoyAxisButton::clicked, &msgBox, &QMessageBox::close);
|
|
disconnect(axis->getNAxisButton(), &JoyAxisButton::clicked, this, nullptr);
|
|
|
|
disconnect(axis->getPAxisButton(), &JoyAxisButton::clicked, &msgBox, &QMessageBox::close);
|
|
disconnect(axis->getPAxisButton(), &JoyAxisButton::clicked, this, nullptr);
|
|
}
|
|
}
|
|
|
|
for (int i = 0; i < joystick->getNumberButtons(); i++)
|
|
{
|
|
JoyButton *button = joystick->getActiveSetJoystick()->getJoyButton(i);
|
|
|
|
if (button != nullptr)
|
|
{
|
|
disconnect(button, &JoyButton::clicked, &msgBox, &QMessageBox::close);
|
|
disconnect(button, &JoyButton::clicked, this, nullptr);
|
|
}
|
|
}
|
|
}
|
|
|
|
void AdvanceStickAssignmentDialog::openAssignVDPadDown()
|
|
{
|
|
qInstallMessageHandler(MessageHandler::myMessageOutput);
|
|
|
|
QMessageBox msgBox;
|
|
msgBox.setText(tr("Press a button or move an axis"));
|
|
msgBox.setStandardButtons(QMessageBox::Close);
|
|
|
|
for (int i = 0; i < joystick->getNumberAxes(); i++)
|
|
{
|
|
JoyAxis *axis = joystick->getActiveSetJoystick()->getJoyAxis(i);
|
|
|
|
if ((axis != nullptr) && !axis->isPartControlStick())
|
|
{
|
|
JoyAxisButton *axbtn = axis->getNAxisButton();
|
|
connect(axis->getNAxisButton(), &JoyAxisButton::clicked, &msgBox, &QMessageBox::close);
|
|
connect(axis->getNAxisButton(), &JoyAxisButton::clicked, this, [this, axbtn] { quickAssignVDPadDown(axbtn); });
|
|
|
|
JoyAxisButton *axbtnP = axis->getPAxisButton();
|
|
connect(axis->getPAxisButton(), &JoyAxisButton::clicked, &msgBox, &QMessageBox::close);
|
|
connect(axis->getPAxisButton(), &JoyAxisButton::clicked, this, [this, axbtnP] { quickAssignVDPadDown(axbtnP); });
|
|
}
|
|
}
|
|
|
|
for (int i = 0; i < joystick->getNumberButtons(); i++)
|
|
{
|
|
JoyButton *button = joystick->getActiveSetJoystick()->getJoyButton(i);
|
|
|
|
if (button != nullptr)
|
|
{
|
|
connect(button, &JoyButton::clicked, &msgBox, &QMessageBox::close);
|
|
connect(button, &JoyButton::clicked, this, [this, button] { quickAssignVDPadDownJbtn(button); });
|
|
}
|
|
}
|
|
|
|
msgBox.exec();
|
|
|
|
for (int i = 0; i < joystick->getNumberAxes(); i++)
|
|
{
|
|
JoyAxis *axis = joystick->getActiveSetJoystick()->getJoyAxis(i);
|
|
|
|
if ((axis != nullptr) && !axis->isPartControlStick())
|
|
{
|
|
disconnect(axis->getNAxisButton(), &JoyAxisButton::clicked, &msgBox, &QMessageBox::close);
|
|
disconnect(axis->getNAxisButton(), &JoyAxisButton::clicked, this, nullptr);
|
|
|
|
disconnect(axis->getPAxisButton(), &JoyAxisButton::clicked, &msgBox, &QMessageBox::close);
|
|
disconnect(axis->getPAxisButton(), &JoyAxisButton::clicked, this, nullptr);
|
|
}
|
|
}
|
|
|
|
for (int i = 0; i < joystick->getNumberButtons(); i++)
|
|
{
|
|
JoyButton *button = joystick->getActiveSetJoystick()->getJoyButton(i);
|
|
|
|
if (button != nullptr)
|
|
{
|
|
disconnect(button, &JoyButton::clicked, &msgBox, &QMessageBox::close);
|
|
disconnect(button, &JoyButton::clicked, this, nullptr);
|
|
}
|
|
}
|
|
}
|
|
|
|
void AdvanceStickAssignmentDialog::openAssignVDPadLeft()
|
|
{
|
|
qInstallMessageHandler(MessageHandler::myMessageOutput);
|
|
|
|
QMessageBox msgBox;
|
|
msgBox.setText(tr("Press a button or move an axis"));
|
|
msgBox.setStandardButtons(QMessageBox::Close);
|
|
|
|
for (int i = 0; i < joystick->getNumberAxes(); i++)
|
|
{
|
|
JoyAxis *axis = joystick->getActiveSetJoystick()->getJoyAxis(i);
|
|
|
|
if ((axis != nullptr) && !axis->isPartControlStick())
|
|
{
|
|
JoyAxisButton *joyaxisN = axis->getNAxisButton();
|
|
connect(axis->getNAxisButton(), &JoyAxisButton::clicked, &msgBox, &QMessageBox::close);
|
|
connect(axis->getNAxisButton(), &JoyAxisButton::clicked, this,
|
|
[this, joyaxisN]() { quickAssignVDPadLeft(joyaxisN); });
|
|
|
|
JoyAxisButton *joyaxisP = axis->getPAxisButton();
|
|
connect(axis->getPAxisButton(), &JoyAxisButton::clicked, &msgBox, &QMessageBox::close);
|
|
connect(axis->getPAxisButton(), &JoyAxisButton::clicked, this,
|
|
[this, joyaxisP]() { quickAssignVDPadLeft(joyaxisP); });
|
|
}
|
|
}
|
|
|
|
for (int i = 0; i < joystick->getNumberButtons(); i++)
|
|
{
|
|
JoyButton *button = joystick->getActiveSetJoystick()->getJoyButton(i);
|
|
|
|
if (button != nullptr)
|
|
{
|
|
connect(button, &JoyButton::clicked, &msgBox, &QMessageBox::close);
|
|
connect(button, &JoyButton::clicked, this, [this, button] { quickAssignVDPadLeftJbtn(button); });
|
|
}
|
|
}
|
|
|
|
msgBox.exec();
|
|
|
|
for (int i = 0; i < joystick->getNumberAxes(); i++)
|
|
{
|
|
JoyAxis *axis = joystick->getActiveSetJoystick()->getJoyAxis(i);
|
|
|
|
if ((axis != nullptr) && !axis->isPartControlStick())
|
|
{
|
|
disconnect(axis->getNAxisButton(), &JoyAxisButton::clicked, &msgBox, &QMessageBox::close);
|
|
disconnect(axis->getNAxisButton(), &JoyAxisButton::clicked, this, nullptr);
|
|
|
|
disconnect(axis->getPAxisButton(), &JoyAxisButton::clicked, &msgBox, &QMessageBox::close);
|
|
disconnect(axis->getPAxisButton(), &JoyAxisButton::clicked, this, nullptr);
|
|
}
|
|
}
|
|
|
|
for (int i = 0; i < joystick->getNumberButtons(); i++)
|
|
{
|
|
JoyButton *button = joystick->getActiveSetJoystick()->getJoyButton(i);
|
|
|
|
if (button != nullptr)
|
|
{
|
|
disconnect(button, &JoyButton::clicked, &msgBox, &QMessageBox::close);
|
|
disconnect(button, &JoyButton::clicked, this, nullptr);
|
|
}
|
|
}
|
|
}
|
|
|
|
void AdvanceStickAssignmentDialog::openAssignVDPadRight()
|
|
{
|
|
|
|
qInstallMessageHandler(MessageHandler::myMessageOutput);
|
|
|
|
QMessageBox msgBox;
|
|
msgBox.setText(tr("Press a button or move an axis"));
|
|
msgBox.setStandardButtons(QMessageBox::Close);
|
|
|
|
for (int i = 0; i < joystick->getNumberAxes(); i++)
|
|
{
|
|
JoyAxis *axis = joystick->getActiveSetJoystick()->getJoyAxis(i);
|
|
|
|
if ((axis != nullptr) && !axis->isPartControlStick())
|
|
{
|
|
JoyAxisButton *joyaxisbtnN = axis->getNAxisButton();
|
|
connect(axis->getNAxisButton(), &JoyAxisButton::clicked, &msgBox, &QMessageBox::close);
|
|
connect(axis->getNAxisButton(), &JoyAxisButton::clicked, this,
|
|
[this, joyaxisbtnN] { quickAssignVDPadRight(joyaxisbtnN); });
|
|
|
|
JoyAxisButton *joyaxisbtnP = axis->getPAxisButton();
|
|
connect(axis->getPAxisButton(), &JoyAxisButton::clicked, &msgBox, &QMessageBox::close);
|
|
connect(axis->getPAxisButton(), &JoyAxisButton::clicked, this,
|
|
[this, joyaxisbtnP] { quickAssignVDPadRight(joyaxisbtnP); });
|
|
}
|
|
}
|
|
|
|
for (int i = 0; i < joystick->getNumberButtons(); i++)
|
|
{
|
|
JoyButton *button = joystick->getActiveSetJoystick()->getJoyButton(i);
|
|
|
|
if (button != nullptr)
|
|
{
|
|
connect(button, &JoyButton::clicked, &msgBox, &QMessageBox::close);
|
|
connect(button, &JoyButton::clicked, this, [this, button] { quickAssignVDPadRightJbtn(button); });
|
|
}
|
|
}
|
|
|
|
msgBox.exec();
|
|
|
|
for (int i = 0; i < joystick->getNumberAxes(); i++)
|
|
{
|
|
JoyAxis *axis = joystick->getActiveSetJoystick()->getJoyAxis(i);
|
|
|
|
if ((axis != nullptr) && !axis->isPartControlStick())
|
|
{
|
|
disconnect(axis->getNAxisButton(), &JoyAxisButton::clicked, &msgBox, &QMessageBox::close);
|
|
disconnect(axis->getNAxisButton(), &JoyAxisButton::clicked, this, nullptr);
|
|
|
|
disconnect(axis->getPAxisButton(), &JoyAxisButton::clicked, &msgBox, &QMessageBox::close);
|
|
disconnect(axis->getPAxisButton(), &JoyAxisButton::clicked, this, nullptr);
|
|
}
|
|
}
|
|
|
|
for (int i = 0; i < joystick->getNumberButtons(); i++)
|
|
{
|
|
JoyButton *button = joystick->getActiveSetJoystick()->getJoyButton(i);
|
|
|
|
if (button != nullptr)
|
|
{
|
|
disconnect(button, &JoyButton::clicked, &msgBox, &QMessageBox::close);
|
|
disconnect(button, &JoyButton::clicked, this, nullptr);
|
|
}
|
|
}
|
|
}
|
|
|
|
void AdvanceStickAssignmentDialog::quickAssignVDPadUp(JoyAxisButton *joyaxisbtn)
|
|
{
|
|
qInstallMessageHandler(MessageHandler::myMessageOutput);
|
|
|
|
QList<QVariant> templist;
|
|
templist.append(QVariant(joyaxisbtn->getAxis()->getRealJoyIndex()));
|
|
|
|
if (joyaxisbtn->getAxis()->getNAxisButton() == joyaxisbtn)
|
|
templist.append(QVariant(0));
|
|
else
|
|
templist.append(QVariant(1));
|
|
|
|
int index = ui->vdpadUpComboBox->findData(templist);
|
|
|
|
if (index > 0)
|
|
{
|
|
ui->vdpadUpComboBox->setCurrentIndex(index);
|
|
}
|
|
}
|
|
|
|
void AdvanceStickAssignmentDialog::quickAssignVDPadUpBtn(JoyButton *joybtn)
|
|
{
|
|
|
|
qInstallMessageHandler(MessageHandler::myMessageOutput);
|
|
|
|
QList<QVariant> templist;
|
|
templist.append(QVariant(0));
|
|
templist.append(QVariant(joybtn->getJoyNumber() + 1));
|
|
|
|
int index = ui->vdpadUpComboBox->findData(templist);
|
|
|
|
if (index > 0)
|
|
{
|
|
ui->vdpadUpComboBox->setCurrentIndex(index);
|
|
}
|
|
}
|
|
|
|
void AdvanceStickAssignmentDialog::quickAssignVDPadDown(JoyAxisButton *axbtn)
|
|
{
|
|
qInstallMessageHandler(MessageHandler::myMessageOutput);
|
|
|
|
QList<QVariant> templist;
|
|
templist.append(QVariant(axbtn->getAxis()->getRealJoyIndex()));
|
|
|
|
if (axbtn->getAxis()->getNAxisButton() == axbtn)
|
|
templist.append(QVariant(0));
|
|
else
|
|
templist.append(QVariant(1));
|
|
|
|
int index = ui->vdpadDownComboBox->findData(templist);
|
|
|
|
if (index > 0)
|
|
ui->vdpadDownComboBox->setCurrentIndex(index);
|
|
}
|
|
|
|
void AdvanceStickAssignmentDialog::quickAssignVDPadDownJbtn(JoyButton *joybtn)
|
|
{
|
|
QList<QVariant> templist;
|
|
templist.append(QVariant(0));
|
|
templist.append(QVariant(joybtn->getJoyNumber() + 1));
|
|
|
|
int index = ui->vdpadDownComboBox->findData(templist);
|
|
|
|
if (index > 0)
|
|
ui->vdpadDownComboBox->setCurrentIndex(index);
|
|
}
|
|
|
|
void AdvanceStickAssignmentDialog::quickAssignVDPadLeft(JoyAxisButton *joyaxisbtn)
|
|
{
|
|
qInstallMessageHandler(MessageHandler::myMessageOutput);
|
|
|
|
QList<QVariant> templist;
|
|
templist.append(QVariant(joyaxisbtn->getAxis()->getRealJoyIndex()));
|
|
|
|
if (joyaxisbtn->getAxis()->getNAxisButton() == joyaxisbtn)
|
|
templist.append(QVariant(0));
|
|
else
|
|
templist.append(QVariant(1));
|
|
|
|
int index = ui->vdpadLeftComboBox->findData(templist);
|
|
|
|
if (index > 0)
|
|
ui->vdpadLeftComboBox->setCurrentIndex(index);
|
|
}
|
|
|
|
void AdvanceStickAssignmentDialog::quickAssignVDPadLeftJbtn(JoyButton *joybtn)
|
|
{
|
|
QList<QVariant> templist;
|
|
templist.append(QVariant(0));
|
|
templist.append(QVariant(joybtn->getJoyNumber() + 1));
|
|
|
|
int index = ui->vdpadLeftComboBox->findData(templist);
|
|
|
|
if (index > 0)
|
|
ui->vdpadLeftComboBox->setCurrentIndex(index);
|
|
}
|
|
|
|
void AdvanceStickAssignmentDialog::quickAssignVDPadRight(JoyAxisButton *joyaxisbtn)
|
|
{
|
|
qInstallMessageHandler(MessageHandler::myMessageOutput);
|
|
|
|
QList<QVariant> templist;
|
|
templist.append(QVariant(joyaxisbtn->getAxis()->getRealJoyIndex()));
|
|
|
|
if (joyaxisbtn->getAxis()->getNAxisButton() == joyaxisbtn)
|
|
templist.append(QVariant(0));
|
|
else
|
|
templist.append(QVariant(1));
|
|
|
|
int index = ui->vdpadRightComboBox->findData(templist);
|
|
|
|
if (index > 0)
|
|
ui->vdpadRightComboBox->setCurrentIndex(index);
|
|
}
|
|
|
|
void AdvanceStickAssignmentDialog::quickAssignVDPadRightJbtn(JoyButton *joybtn)
|
|
{
|
|
QList<QVariant> templist;
|
|
templist.append(QVariant(0));
|
|
templist.append(QVariant(joybtn->getJoyNumber() + 1));
|
|
|
|
int index = ui->vdpadRightComboBox->findData(templist);
|
|
|
|
if (index > 0)
|
|
ui->vdpadRightComboBox->setCurrentIndex(index);
|
|
}
|
|
|
|
Joystick *AdvanceStickAssignmentDialog::getJoystick() const { return joystick; }
|