int JoyAxisContextMenu::getTriggerPresetIndex() { int result = 0; PadderCommon::inputDaemonMutex.lock(); JoyAxisButton *paxisbutton = axis->getPAxisButton(); QList<JoyButtonSlot*> *paxisslots = paxisbutton->getAssignedSlots(); if (paxisslots->length() == 1) { JoyButtonSlot *pslot = paxisslots->at(0); if (pslot->getSlotMode() == JoyButtonSlot::JoyMouseButton && pslot->getSlotCode() == JoyButtonSlot::MouseLB) { result = 1; } else if (pslot->getSlotMode() == JoyButtonSlot::JoyMouseButton && pslot->getSlotCode() == JoyButtonSlot::MouseRB) { result = 2; } } else if (paxisslots->length() == 0) { result = 3; } PadderCommon::inputDaemonMutex.unlock(); return result; }
void InputDevice::setAxisButtonName(int axisIndex, int buttonIndex, QString tempName) { QHashIterator<int, SetJoystick*> iter(joystick_sets); while (iter.hasNext()) { SetJoystick *tempSet = iter.next().value(); disconnect(tempSet, SIGNAL(setAxisButtonNameChange(int,int)), this, SLOT(updateSetAxisButtonNames(int,int))); JoyAxis *axis = tempSet->getJoyAxis(axisIndex); if (axis) { JoyAxisButton *button = 0; if (buttonIndex == 0) { button = axis->getNAxisButton(); } else if (buttonIndex == 1) { button = axis->getPAxisButton(); } if (button) { button->setButtonName(tempName); } } connect(tempSet, SIGNAL(setAxisButtonNameChange(int,int)), this, SLOT(updateSetAxisButtonNames(int,int))); } }
void SetJoystick::propogateSetAxisButtonNameChange() { JoyAxisButton *button = static_cast<JoyAxisButton*>(sender()); disconnect(button, SIGNAL(buttonNameChanged()), this, SLOT(propogateSetAxisButtonNameChange())); emit setAxisButtonNameChange(button->getAxis()->getIndex(), button->getJoyNumber()); connect(button, SIGNAL(buttonNameChanged()), this, SLOT(propogateSetAxisButtonNameChange())); }
void AxisEditDialog::selectTriggerPreset() { JoyAxisButton *paxisbutton = axis->getPAxisButton(); QList<JoyButtonSlot*> *paxisslots = paxisbutton->getAssignedSlots(); if (paxisslots->length() == 1) { JoyButtonSlot *pslot = paxisslots->at(0); if (pslot->getSlotMode() == JoyButtonSlot::JoyMouseButton && pslot->getSlotCode() == JoyButtonSlot::MouseLB) { ui->presetsComboBox->setCurrentIndex(1); } else if (pslot->getSlotMode() == JoyButtonSlot::JoyMouseButton && pslot->getSlotCode() == JoyButtonSlot::MouseRB) { ui->presetsComboBox->setCurrentIndex(2); } else { ui->presetsComboBox->setCurrentIndex(0); } } else if (paxisslots->length() == 0) { ui->presetsComboBox->setCurrentIndex(3); } else { ui->presetsComboBox->setCurrentIndex(0); } }
void SetJoystick::propogateSetAxisButtonRelease(int button) { JoyAxisButton *axisButton = static_cast<JoyAxisButton*>(sender()); JoyAxis *axis = axisButton->getAxis(); if (!axisButton->getIgnoreEventState()) { emit setAxisButtonRelease(index, axis->getIndex(), button); } }
void AxisEditDialog::implementTriggerPresets(int index) { JoyButtonSlot *pbuttonslot = 0; if (index == 1) { pbuttonslot = new JoyButtonSlot(JoyButtonSlot::MouseLB, JoyButtonSlot::JoyMouseButton, this); } else if (index == 2) { pbuttonslot = new JoyButtonSlot(JoyButtonSlot::MouseRB, JoyButtonSlot::JoyMouseButton, this); } else if (index == 3) { JoyAxisButton *nbutton = axis->getNAxisButton(); JoyAxisButton *pbutton = axis->getPAxisButton(); //nbutton->clearSlotsEventReset(); QMetaObject::invokeMethod(nbutton, "clearSlotsEventReset", Qt::BlockingQueuedConnection); refreshNButtonLabel(); QMetaObject::invokeMethod(pbutton, "clearSlotsEventReset", Qt::BlockingQueuedConnection); //pbutton->clearSlotsEventReset(); refreshPButtonLabel(); } if (pbuttonslot) { JoyAxisButton *nbutton = axis->getNAxisButton(); JoyAxisButton *pbutton = axis->getPAxisButton(); if (nbutton->getAssignedSlots()->length() > 0) { QMetaObject::invokeMethod(nbutton, "clearSlotsEventReset", Qt::BlockingQueuedConnection, Q_ARG(bool, false)); //nbutton->clearSlotsEventReset(); refreshNButtonLabel(); } QMetaObject::invokeMethod(pbutton, "clearSlotsEventReset", Q_ARG(bool, false)); //pbutton->clearSlotsEventReset(false); QMetaObject::invokeMethod(pbutton, "setAssignedSlot", Qt::BlockingQueuedConnection, Q_ARG(int, pbuttonslot->getSlotCode()), Q_ARG(unsigned int, pbuttonslot->getSlotCodeAlias()), Q_ARG(JoyButtonSlot::JoySlotInputAction, pbuttonslot->getSlotMode())); //pbutton->setAssignedSlot(pbuttonslot->getSlotCode(), pbuttonslot->getSlotCodeAlias(), pbuttonslot->getSlotMode()); refreshPButtonLabel(); pbuttonslot->deleteLater(); }
void InputDevice::changeSetAxisButtonAssociation(int button_index, int axis_index, int originset, int newset, int mode) { JoyAxisButton *button = 0; if (button_index == 0) { button = joystick_sets.value(newset)->getJoyAxis(axis_index)->getNAxisButton(); } else if (button_index == 1) { button = joystick_sets.value(newset)->getJoyAxis(axis_index)->getPAxisButton(); } JoyButton::SetChangeCondition tempmode = (JoyButton::SetChangeCondition)mode; button->setChangeSetSelection(originset); button->setChangeSetCondition(tempmode, true); }
void InputDevice::updateSetAxisButtonNames(int axisIndex, int buttonIndex) { JoyAxis *axis = getActiveSetJoystick()->getJoyAxis(axisIndex); if (axis) { JoyAxisButton *button = 0; if (buttonIndex == 0) { button = axis->getNAxisButton(); } else if (buttonIndex == 1) { button = axis->getPAxisButton(); } if (button) { setAxisButtonName(axisIndex, buttonIndex, button->getButtonName()); } } }
void JoyAxis::createDeskEvent(bool ignoresets) { JoyAxisButton *eventbutton = 0; if (currentThrottledValue > deadZone) { eventbutton = paxisbutton; } else if (currentThrottledValue < -deadZone) { eventbutton = naxisbutton; } if (eventbutton && !activeButton) { // There is no active button. Call joyEvent and set current // button as active button eventbutton->joyEvent(eventActive, ignoresets); activeButton = eventbutton; } else if (!eventbutton && activeButton) { // Currently in deadzone. Disable currently active button. activeButton->joyEvent(eventActive, ignoresets); activeButton = 0; } else if (eventbutton && activeButton && eventbutton == activeButton) { //Button is currently active. Just pass current value eventbutton->joyEvent(eventActive, ignoresets); } else if (eventbutton && activeButton && eventbutton != activeButton) { // Deadzone skipped. Button for new event is not the currently // active button. Disable the active button before enabling // the new button activeButton->joyEvent(!eventActive, ignoresets); eventbutton->joyEvent(eventActive, ignoresets); activeButton = eventbutton; } }
JoyAxisWidget::JoyAxisWidget(JoyAxis *axis, bool displayNames, QWidget *parent) : FlashButtonWidget(displayNames, parent) { this->axis = axis; refreshLabel(); JoyAxisButton *nAxisButton = axis->getNAxisButton(); JoyAxisButton *pAxisButton = axis->getPAxisButton(); connect(axis, SIGNAL(active(int)), this, SLOT(flash()), Qt::QueuedConnection); connect(axis, SIGNAL(released(int)), this, SLOT(unflash()), Qt::QueuedConnection); connect(axis, SIGNAL(throttleChanged()), this, SLOT(refreshLabel())); connect(axis, SIGNAL(axisNameChanged()), this, SLOT(refreshLabel())); connect(nAxisButton, SIGNAL(slotsChanged()), this, SLOT(refreshLabel())); connect(nAxisButton, SIGNAL(actionNameChanged()), this, SLOT(refreshLabel())); connect(pAxisButton, SIGNAL(slotsChanged()), this, SLOT(refreshLabel())); connect(pAxisButton, SIGNAL(actionNameChanged()), this, SLOT(refreshLabel())); axis->establishPropertyUpdatedConnection(); nAxisButton->establishPropertyUpdatedConnections(); pAxisButton->establishPropertyUpdatedConnections(); }
void MouseAxisSettingsDialog::calculateWheelSpeedPreset() { JoyAxisButton *paxisbutton = axis->getPAxisButton(); JoyAxisButton *naxisbutton = axis->getNAxisButton(); int tempWheelSpeedX = qMax(paxisbutton->getWheelSpeedX(), naxisbutton->getWheelSpeedX()); int tempWheelSpeedY = qMax(paxisbutton->getWheelSpeedY(), naxisbutton->getWheelSpeedY()); ui->wheelHoriSpeedSpinBox->setValue(tempWheelSpeedX); ui->wheelVertSpeedSpinBox->setValue(tempWheelSpeedY); }
int JoyAxisContextMenu::getPresetIndex() { int result = 0; PadderCommon::inputDaemonMutex.lock(); JoyAxisButton *naxisbutton = axis->getNAxisButton(); QList<JoyButtonSlot*> *naxisslots = naxisbutton->getAssignedSlots(); JoyAxisButton *paxisbutton = axis->getPAxisButton(); QList<JoyButtonSlot*> *paxisslots = paxisbutton->getAssignedSlots(); if (naxisslots->length() == 1 && paxisslots->length() == 1) { JoyButtonSlot *nslot = naxisslots->at(0); JoyButtonSlot *pslot = paxisslots->at(0); if (nslot->getSlotMode() == JoyButtonSlot::JoyMouseMovement && nslot->getSlotCode() == JoyButtonSlot::MouseLeft && pslot->getSlotMode() == JoyButtonSlot::JoyMouseMovement && pslot->getSlotCode() == JoyButtonSlot::MouseRight) { result = 1; } else if (nslot->getSlotMode() == JoyButtonSlot::JoyMouseMovement && nslot->getSlotCode() == JoyButtonSlot::MouseRight && pslot->getSlotMode() == JoyButtonSlot::JoyMouseMovement && pslot->getSlotCode() == JoyButtonSlot::MouseLeft) { result = 2; } else if (nslot->getSlotMode() == JoyButtonSlot::JoyMouseMovement && nslot->getSlotCode() == JoyButtonSlot::MouseUp && pslot->getSlotMode() == JoyButtonSlot::JoyMouseMovement && pslot->getSlotCode() == JoyButtonSlot::MouseDown) { result = 3; } else if (nslot->getSlotMode() == JoyButtonSlot::JoyMouseMovement && nslot->getSlotCode() == JoyButtonSlot::MouseDown && pslot->getSlotMode() == JoyButtonSlot::JoyMouseMovement && pslot->getSlotCode() == JoyButtonSlot::MouseUp) { result = 4; } else if (nslot->getSlotMode() == JoyButtonSlot::JoyKeyboard && (unsigned int)nslot->getSlotCode() == AntKeyMapper::getInstance()->returnVirtualKey(Qt::Key_Up) && pslot->getSlotMode() == JoyButtonSlot::JoyKeyboard && (unsigned int)pslot->getSlotCode() == AntKeyMapper::getInstance()->returnVirtualKey(Qt::Key_Down)) { result = 5; } else if (nslot->getSlotMode() == JoyButtonSlot::JoyKeyboard && (unsigned int)nslot->getSlotCode() == AntKeyMapper::getInstance()->returnVirtualKey(Qt::Key_Left) && pslot->getSlotMode() == JoyButtonSlot::JoyKeyboard && (unsigned int)pslot->getSlotCode() == AntKeyMapper::getInstance()->returnVirtualKey(Qt::Key_Right)) { result = 6; } else if (nslot->getSlotMode() == JoyButtonSlot::JoyKeyboard && (unsigned int)nslot->getSlotCode() == AntKeyMapper::getInstance()->returnVirtualKey(Qt::Key_W) && pslot->getSlotMode() == JoyButtonSlot::JoyKeyboard && (unsigned int)pslot->getSlotCode() == AntKeyMapper::getInstance()->returnVirtualKey(Qt::Key_S)) { result = 7; } else if (nslot->getSlotMode() == JoyButtonSlot::JoyKeyboard && (unsigned int)nslot->getSlotCode() == AntKeyMapper::getInstance()->returnVirtualKey(Qt::Key_A) && pslot->getSlotMode() == JoyButtonSlot::JoyKeyboard && (unsigned int)pslot->getSlotCode() == AntKeyMapper::getInstance()->returnVirtualKey(Qt::Key_D)) { result = 8; } else if (nslot->getSlotMode() == JoyButtonSlot::JoyKeyboard && (unsigned int)nslot->getSlotCode() == AntKeyMapper::getInstance()->returnVirtualKey(QtKeyMapperBase::AntKey_KP_8) && pslot->getSlotMode() == JoyButtonSlot::JoyKeyboard && (unsigned int)pslot->getSlotCode() == AntKeyMapper::getInstance()->returnVirtualKey(QtKeyMapperBase::AntKey_KP_2)) { result = 9; } else if (nslot->getSlotMode() == JoyButtonSlot::JoyKeyboard && (unsigned int)nslot->getSlotCode() == AntKeyMapper::getInstance()->returnVirtualKey(QtKeyMapperBase::AntKey_KP_4) && pslot->getSlotMode() == JoyButtonSlot::JoyKeyboard && (unsigned int)pslot->getSlotCode() == AntKeyMapper::getInstance()->returnVirtualKey(QtKeyMapperBase::AntKey_KP_6)) { result = 10; } } else if (naxisslots->length() == 0 && paxisslots->length() == 0) { result = 11; } PadderCommon::inputDaemonMutex.unlock(); return result; }
void InputDevice::writeConfig(QXmlStreamWriter *xml) { xml->writeStartElement(getXmlName()); xml->writeAttribute("configversion", QString::number(PadderCommon::LATESTCONFIGFILEVERSION)); xml->writeAttribute("appversion", PadderCommon::programVersion); xml->writeComment("The SDL name for a joystick is included for informational purposes only."); xml->writeTextElement("sdlname", getSDLName()); for (int i=0; i < getNumberSticks(); i++) { JoyControlStick *stick = getActiveSetJoystick()->getJoyStick(i); xml->writeStartElement("stickAxisAssociation"); xml->writeAttribute("index", QString::number(stick->getRealJoyIndex())); xml->writeAttribute("xAxis", QString::number(stick->getAxisX()->getRealJoyIndex())); xml->writeAttribute("yAxis", QString::number(stick->getAxisY()->getRealJoyIndex())); xml->writeEndElement(); } for (int i=0; i < getNumberVDPads(); i++) { VDPad *vdpad = getActiveSetJoystick()->getVDPad(i); xml->writeStartElement("vdpadButtonAssociations"); xml->writeAttribute("index", QString::number(vdpad->getRealJoyNumber())); JoyButton *button = vdpad->getVButton(JoyDPadButton::DpadUp); if (button) { xml->writeStartElement("vdpadButtonAssociation"); if (typeid(*button) == typeid(JoyAxisButton)) { JoyAxisButton *axisbutton = static_cast<JoyAxisButton*>(button); xml->writeAttribute("axis", QString::number(axisbutton->getAxis()->getRealJoyIndex())); xml->writeAttribute("button", QString::number(button->getJoyNumber())); } else { xml->writeAttribute("axis", QString::number(0)); xml->writeAttribute("button", QString::number(button->getRealJoyNumber())); } xml->writeAttribute("direction", QString::number(JoyDPadButton::DpadUp)); xml->writeEndElement(); } button = vdpad->getVButton(JoyDPadButton::DpadDown); if (button) { xml->writeStartElement("vdpadButtonAssociation"); if (typeid(*button) == typeid(JoyAxisButton)) { JoyAxisButton *axisbutton = static_cast<JoyAxisButton*>(button); xml->writeAttribute("axis", QString::number(axisbutton->getAxis()->getRealJoyIndex())); xml->writeAttribute("button", QString::number(button->getJoyNumber())); } else { xml->writeAttribute("axis", QString::number(0)); xml->writeAttribute("button", QString::number(button->getRealJoyNumber())); } xml->writeAttribute("direction", QString::number(JoyDPadButton::DpadDown)); xml->writeEndElement(); } button = vdpad->getVButton(JoyDPadButton::DpadLeft); if (button) { xml->writeStartElement("vdpadButtonAssociation"); if (typeid(*button) == typeid(JoyAxisButton)) { JoyAxisButton *axisbutton = static_cast<JoyAxisButton*>(button); xml->writeAttribute("axis", QString::number(axisbutton->getAxis()->getRealJoyIndex())); xml->writeAttribute("button", QString::number(button->getJoyNumber())); } else { xml->writeAttribute("axis", QString::number(0)); xml->writeAttribute("button", QString::number(button->getRealJoyNumber())); } xml->writeAttribute("direction", QString::number(JoyDPadButton::DpadLeft)); xml->writeEndElement(); } button = vdpad->getVButton(JoyDPadButton::DpadRight); if (button) { xml->writeStartElement("vdpadButtonAssociation"); if (typeid(*button) == typeid(JoyAxisButton)) { JoyAxisButton *axisbutton = static_cast<JoyAxisButton*>(button); xml->writeAttribute("axis", QString::number(axisbutton->getAxis()->getRealJoyIndex())); xml->writeAttribute("button", QString::number(button->getJoyNumber())); } else { xml->writeAttribute("axis", QString::number(0)); xml->writeAttribute("button", QString::number(button->getRealJoyNumber())); } xml->writeAttribute("direction", QString::number(JoyDPadButton::DpadRight)); xml->writeEndElement(); } xml->writeEndElement(); } xml->writeStartElement("names"); // <name> SetJoystick *tempSet = getActiveSetJoystick(); for (int i=0; i < getNumberButtons(); i++) { JoyButton *button = tempSet->getJoyButton(i); if (button && !button->getButtonName().isEmpty()) { xml->writeStartElement("buttonname"); xml->writeAttribute("index", QString::number(button->getRealJoyNumber())); xml->writeCharacters(button->getButtonName()); xml->writeEndElement(); } } for (int i=0; i < getNumberAxes(); i++) { JoyAxis *axis = tempSet->getJoyAxis(i); if (axis) { if (!axis->getAxisName().isEmpty()) { xml->writeStartElement("axisname"); xml->writeAttribute("index", QString::number(axis->getRealJoyIndex())); xml->writeCharacters(axis->getAxisName()); xml->writeEndElement(); } JoyAxisButton *naxisbutton = axis->getNAxisButton(); if (!naxisbutton->getButtonName().isEmpty()) { xml->writeStartElement("axisbuttonname"); xml->writeAttribute("index", QString::number(axis->getRealJoyIndex())); xml->writeAttribute("button", QString::number(naxisbutton->getRealJoyNumber())); xml->writeCharacters(naxisbutton->getButtonName()); xml->writeEndElement(); } JoyAxisButton *paxisbutton = axis->getPAxisButton(); if (!paxisbutton->getButtonName().isEmpty()) { xml->writeStartElement("axisbuttonname"); xml->writeAttribute("index", QString::number(axis->getRealJoyIndex())); xml->writeAttribute("button", QString::number(paxisbutton->getRealJoyNumber())); xml->writeCharacters(paxisbutton->getButtonName()); xml->writeEndElement(); } } } for (int i=0; i < getNumberSticks(); i++) { JoyControlStick *stick = tempSet->getJoyStick(i); if (stick) { if (!stick->getStickName().isEmpty()) { xml->writeStartElement("controlstickname"); xml->writeAttribute("index", QString::number(stick->getRealJoyIndex())); xml->writeCharacters(stick->getStickName()); xml->writeEndElement(); } QHash<JoyControlStick::JoyStickDirections, JoyControlStickButton*> *buttons = stick->getButtons(); QHashIterator<JoyControlStick::JoyStickDirections, JoyControlStickButton*> iter(*buttons); while (iter.hasNext()) { JoyControlStickButton *button = iter.next().value(); if (button && !button->getButtonName().isEmpty()) { xml->writeStartElement("controlstickbuttonname"); xml->writeAttribute("index", QString::number(stick->getRealJoyIndex())); xml->writeAttribute("button", QString::number(button->getRealJoyNumber())); xml->writeCharacters(button->getButtonName()); xml->writeEndElement(); } } } } for (int i=0; i < getNumberHats(); i++) { JoyDPad *dpad = tempSet->getJoyDPad(i); if (dpad) { if (!dpad->getDpadName().isEmpty()) { xml->writeStartElement("dpadname"); xml->writeAttribute("index", QString::number(dpad->getRealJoyNumber())); xml->writeCharacters(dpad->getDpadName()); xml->writeEndElement(); } QHash<int, JoyDPadButton*> *temp = dpad->getButtons(); QHashIterator<int, JoyDPadButton*> iter(*temp); while (iter.hasNext()) { JoyDPadButton *button = iter.next().value(); if (button && !button->getButtonName().isEmpty()) { xml->writeStartElement("dpadbuttonname"); xml->writeAttribute("index", QString::number(dpad->getRealJoyNumber())); xml->writeAttribute("button", QString::number(button->getRealJoyNumber())); xml->writeCharacters(button->getButtonName()); xml->writeEndElement(); } } } } for (int i=0; i < getNumberVDPads(); i++) { VDPad *vdpad = getActiveSetJoystick()->getVDPad(i); if (vdpad) { if (!vdpad->getDpadName().isEmpty()) { xml->writeStartElement("vdpadname"); xml->writeAttribute("index", QString::number(vdpad->getRealJoyNumber())); xml->writeCharacters(vdpad->getDpadName()); xml->writeEndElement(); } QHash<int, JoyDPadButton*> *temp = vdpad->getButtons(); QHashIterator<int, JoyDPadButton*> iter(*temp); while (iter.hasNext()) { JoyDPadButton *button = iter.next().value(); if (button && !button->getButtonName().isEmpty()) { xml->writeStartElement("vdpadbutton"); xml->writeAttribute("index", QString::number(vdpad->getRealJoyNumber())); xml->writeAttribute("button", QString::number(button->getRealJoyNumber())); xml->writeCharacters(button->getButtonName()); xml->writeEndElement(); } } } } xml->writeEndElement(); // </names> if (keyDelay > 0) { xml->writeTextElement("keyPressTime", QString::number(keyDelay)); } xml->writeStartElement("sets"); for (int i=0; i < joystick_sets.size(); i++) { joystick_sets.value(i)->writeConfig(xml); } xml->writeEndElement(); xml->writeEndElement(); }
void GameController::writeConfig(QXmlStreamWriter *xml) { xml->writeStartElement(getXmlName()); xml->writeAttribute("configversion", QString::number(PadderCommon::LATESTCONFIGFILEVERSION)); xml->writeAttribute("appversion", PadderCommon::programVersion); xml->writeComment("The SDL name for a joystick is included for informational purposes only."); xml->writeTextElement("sdlname", getSDLName()); #ifdef USE_SDL_2 xml->writeComment("The GUID for a joystick is included for informational purposes only."); xml->writeTextElement("guid", getGUIDString()); #endif if (!profileName.isEmpty()) { xml->writeTextElement("profilename", profileName); } xml->writeStartElement("names"); // <names> SetJoystick *tempSet = getActiveSetJoystick(); for (int i=0; i < getNumberButtons(); i++) { JoyButton *button = tempSet->getJoyButton(i); if (button && !button->getButtonName().isEmpty()) { xml->writeStartElement("buttonname"); xml->writeAttribute("index", QString::number(button->getRealJoyNumber())); xml->writeCharacters(button->getButtonName()); xml->writeEndElement(); } } for (int i=0; i < getNumberAxes(); i++) { JoyAxis *axis = tempSet->getJoyAxis(i); if (axis) { if (!axis->getAxisName().isEmpty()) { xml->writeStartElement("axisname"); xml->writeAttribute("index", QString::number(axis->getRealJoyIndex())); xml->writeCharacters(axis->getAxisName()); xml->writeEndElement(); } JoyAxisButton *naxisbutton = axis->getNAxisButton(); if (!naxisbutton->getButtonName().isEmpty()) { xml->writeStartElement("axisbuttonname"); xml->writeAttribute("index", QString::number(axis->getRealJoyIndex())); xml->writeAttribute("button", QString::number(naxisbutton->getRealJoyNumber())); xml->writeCharacters(naxisbutton->getButtonName()); xml->writeEndElement(); } JoyAxisButton *paxisbutton = axis->getPAxisButton(); if (!paxisbutton->getButtonName().isEmpty()) { xml->writeStartElement("axisbuttonname"); xml->writeAttribute("index", QString::number(axis->getRealJoyIndex())); xml->writeAttribute("button", QString::number(paxisbutton->getRealJoyNumber())); xml->writeCharacters(paxisbutton->getButtonName()); xml->writeEndElement(); } } } for (int i=0; i < getNumberSticks(); i++) { JoyControlStick *stick = tempSet->getJoyStick(i); if (stick) { if (!stick->getStickName().isEmpty()) { xml->writeStartElement("controlstickname"); xml->writeAttribute("index", QString::number(stick->getRealJoyIndex())); xml->writeCharacters(stick->getStickName()); xml->writeEndElement(); } QHash<JoyControlStick::JoyStickDirections, JoyControlStickButton*> *buttons = stick->getButtons(); QHashIterator<JoyControlStick::JoyStickDirections, JoyControlStickButton*> iter(*buttons); while (iter.hasNext()) { JoyControlStickButton *button = iter.next().value(); if (button && !button->getButtonName().isEmpty()) { xml->writeStartElement("controlstickbuttonname"); xml->writeAttribute("index", QString::number(stick->getRealJoyIndex())); xml->writeAttribute("button", QString::number(button->getRealJoyNumber())); xml->writeCharacters(button->getButtonName()); xml->writeEndElement(); } } } } for (int i=0; i < getNumberVDPads(); i++) { VDPad *vdpad = getActiveSetJoystick()->getVDPad(i); if (vdpad) { if (!vdpad->getDpadName().isEmpty()) { xml->writeStartElement("dpadname"); xml->writeAttribute("index", QString::number(vdpad->getRealJoyNumber())); xml->writeCharacters(vdpad->getDpadName()); xml->writeEndElement(); } QHash<int, JoyDPadButton*> *temp = vdpad->getButtons(); QHashIterator<int, JoyDPadButton*> iter(*temp); while (iter.hasNext()) { JoyDPadButton *button = iter.next().value(); if (button && !button->getButtonName().isEmpty()) { xml->writeStartElement("dpadbutton"); xml->writeAttribute("index", QString::number(vdpad->getRealJoyNumber())); xml->writeAttribute("button", QString::number(button->getRealJoyNumber())); xml->writeCharacters(button->getButtonName()); xml->writeEndElement(); } } } } xml->writeEndElement(); // </names> if (keyPressTime > 0 && keyPressTime != DEFAULTKEYPRESSTIME) { xml->writeTextElement("keyPressTime", QString::number(keyPressTime)); } xml->writeStartElement("sets"); for (int i=0; i < joystick_sets.size(); i++) { joystick_sets.value(i)->writeConfig(xml); } xml->writeEndElement(); xml->writeEndElement(); }
void AxisEditDialog::selectCurrentPreset() { JoyAxisButton *naxisbutton = axis->getNAxisButton(); QList<JoyButtonSlot*> *naxisslots = naxisbutton->getAssignedSlots(); JoyAxisButton *paxisbutton = axis->getPAxisButton(); QList<JoyButtonSlot*> *paxisslots = paxisbutton->getAssignedSlots(); if (naxisslots->length() == 1 && paxisslots->length() == 1) { JoyButtonSlot *nslot = naxisslots->at(0); JoyButtonSlot *pslot = paxisslots->at(0); if (nslot->getSlotMode() == JoyButtonSlot::JoyMouseMovement && nslot->getSlotCode() == JoyButtonSlot::MouseLeft && pslot->getSlotMode() == JoyButtonSlot::JoyMouseMovement && pslot->getSlotCode() == JoyButtonSlot::MouseRight) { ui->presetsComboBox->setCurrentIndex(1); } else if (nslot->getSlotMode() == JoyButtonSlot::JoyMouseMovement && nslot->getSlotCode() == JoyButtonSlot::MouseRight && pslot->getSlotMode() == JoyButtonSlot::JoyMouseMovement && pslot->getSlotCode() == JoyButtonSlot::MouseLeft) { ui->presetsComboBox->setCurrentIndex(2); } else if (nslot->getSlotMode() == JoyButtonSlot::JoyMouseMovement && nslot->getSlotCode() == JoyButtonSlot::MouseUp && pslot->getSlotMode() == JoyButtonSlot::JoyMouseMovement && pslot->getSlotCode() == JoyButtonSlot::MouseDown) { ui->presetsComboBox->setCurrentIndex(3); } else if (nslot->getSlotMode() == JoyButtonSlot::JoyMouseMovement && nslot->getSlotCode() == JoyButtonSlot::MouseDown && pslot->getSlotMode() == JoyButtonSlot::JoyMouseMovement && pslot->getSlotCode() == JoyButtonSlot::MouseUp) { ui->presetsComboBox->setCurrentIndex(4); } else if (nslot->getSlotMode() == JoyButtonSlot::JoyKeyboard && (unsigned int)nslot->getSlotCode() == AntKeyMapper::returnVirtualKey(Qt::Key_Up) && pslot->getSlotMode() == JoyButtonSlot::JoyKeyboard && (unsigned int)pslot->getSlotCode() == AntKeyMapper::returnVirtualKey(Qt::Key_Down)) { ui->presetsComboBox->setCurrentIndex(5); } else if (nslot->getSlotMode() == JoyButtonSlot::JoyKeyboard && (unsigned int)nslot->getSlotCode() == AntKeyMapper::returnVirtualKey(Qt::Key_Left) && pslot->getSlotMode() == JoyButtonSlot::JoyKeyboard && (unsigned int)pslot->getSlotCode() == AntKeyMapper::returnVirtualKey(Qt::Key_Right)) { ui->presetsComboBox->setCurrentIndex(6); } else if (nslot->getSlotMode() == JoyButtonSlot::JoyKeyboard && (unsigned int)nslot->getSlotCode() == AntKeyMapper::returnVirtualKey(Qt::Key_W) && pslot->getSlotMode() == JoyButtonSlot::JoyKeyboard && (unsigned int)pslot->getSlotCode() == AntKeyMapper::returnVirtualKey(Qt::Key_S)) { ui->presetsComboBox->setCurrentIndex(7); } else if (nslot->getSlotMode() == JoyButtonSlot::JoyKeyboard && (unsigned int)nslot->getSlotCode() == AntKeyMapper::returnVirtualKey(Qt::Key_A) && pslot->getSlotMode() == JoyButtonSlot::JoyKeyboard && (unsigned int)pslot->getSlotCode() == AntKeyMapper::returnVirtualKey(Qt::Key_D)) { ui->presetsComboBox->setCurrentIndex(8); } else if (nslot->getSlotMode() == JoyButtonSlot::JoyKeyboard && (unsigned int)nslot->getSlotCode() == AntKeyMapper::returnVirtualKey(QtKeyMapperBase::AntKey_KP_8) && pslot->getSlotMode() == JoyButtonSlot::JoyKeyboard && (unsigned int)pslot->getSlotCode() == AntKeyMapper::returnVirtualKey(QtKeyMapperBase::AntKey_KP_2)) { ui->presetsComboBox->setCurrentIndex(9); } else if (nslot->getSlotMode() == JoyButtonSlot::JoyKeyboard && (unsigned int)nslot->getSlotCode() == AntKeyMapper::returnVirtualKey(QtKeyMapperBase::AntKey_KP_4) && pslot->getSlotMode() == JoyButtonSlot::JoyKeyboard && (unsigned int)pslot->getSlotCode() == AntKeyMapper::returnVirtualKey(QtKeyMapperBase::AntKey_KP_6)) { ui->presetsComboBox->setCurrentIndex(10); } else { ui->presetsComboBox->setCurrentIndex(0); } } else if (naxisslots->length() == 0 && paxisslots->length() == 0) { ui->presetsComboBox->setCurrentIndex(11); } else { ui->presetsComboBox->setCurrentIndex(0); } }
void AxisEditDialog::implementPresets(int index) { JoyButtonSlot *nbuttonslot = 0; JoyButtonSlot *pbuttonslot = 0; if (index == 1) { nbuttonslot = new JoyButtonSlot(JoyButtonSlot::MouseLeft, JoyButtonSlot::JoyMouseMovement, this); pbuttonslot = new JoyButtonSlot(JoyButtonSlot::MouseRight, JoyButtonSlot::JoyMouseMovement, this); } else if (index == 2) { nbuttonslot = new JoyButtonSlot(JoyButtonSlot::MouseRight, JoyButtonSlot::JoyMouseMovement, this); pbuttonslot = new JoyButtonSlot(JoyButtonSlot::MouseLeft, JoyButtonSlot::JoyMouseMovement, this); } else if (index == 3) { nbuttonslot = new JoyButtonSlot(JoyButtonSlot::MouseUp, JoyButtonSlot::JoyMouseMovement, this); pbuttonslot = new JoyButtonSlot(JoyButtonSlot::MouseDown, JoyButtonSlot::JoyMouseMovement, this); } else if (index == 4) { nbuttonslot = new JoyButtonSlot(JoyButtonSlot::MouseDown, JoyButtonSlot::JoyMouseMovement, this); pbuttonslot = new JoyButtonSlot(JoyButtonSlot::MouseUp, JoyButtonSlot::JoyMouseMovement, this); } else if (index == 5) { nbuttonslot = new JoyButtonSlot(AntKeyMapper::returnVirtualKey(Qt::Key_Up), Qt::Key_Up, JoyButtonSlot::JoyKeyboard, this); pbuttonslot = new JoyButtonSlot(AntKeyMapper::returnVirtualKey(Qt::Key_Down), Qt::Key_Down, JoyButtonSlot::JoyKeyboard, this); } else if (index == 6) { nbuttonslot = new JoyButtonSlot(AntKeyMapper::returnVirtualKey(Qt::Key_Left), Qt::Key_Left, JoyButtonSlot::JoyKeyboard, this); pbuttonslot = new JoyButtonSlot(AntKeyMapper::returnVirtualKey(Qt::Key_Right), Qt::Key_Right, JoyButtonSlot::JoyKeyboard, this); } else if (index == 7) { nbuttonslot = new JoyButtonSlot(AntKeyMapper::returnVirtualKey(Qt::Key_W), Qt::Key_W, JoyButtonSlot::JoyKeyboard, this); pbuttonslot = new JoyButtonSlot(AntKeyMapper::returnVirtualKey(Qt::Key_S), Qt::Key_S, JoyButtonSlot::JoyKeyboard, this); } else if (index == 8) { nbuttonslot = new JoyButtonSlot(AntKeyMapper::returnVirtualKey(Qt::Key_A), Qt::Key_A, JoyButtonSlot::JoyKeyboard, this); pbuttonslot = new JoyButtonSlot(AntKeyMapper::returnVirtualKey(Qt::Key_D), Qt::Key_D, JoyButtonSlot::JoyKeyboard, this); } else if (index == 9) { nbuttonslot = new JoyButtonSlot(AntKeyMapper::returnVirtualKey(QtKeyMapperBase::AntKey_KP_8), QtKeyMapperBase::AntKey_KP_8, JoyButtonSlot::JoyKeyboard, this); pbuttonslot = new JoyButtonSlot(AntKeyMapper::returnVirtualKey(QtKeyMapperBase::AntKey_KP_2), QtKeyMapperBase::AntKey_KP_2, JoyButtonSlot::JoyKeyboard, this); } else if (index == 10) { nbuttonslot = new JoyButtonSlot(AntKeyMapper::returnVirtualKey(QtKeyMapperBase::AntKey_KP_4), QtKeyMapperBase::AntKey_KP_4, JoyButtonSlot::JoyKeyboard, this); pbuttonslot = new JoyButtonSlot(AntKeyMapper::returnVirtualKey(QtKeyMapperBase::AntKey_KP_6), QtKeyMapperBase::AntKey_KP_6, JoyButtonSlot::JoyKeyboard, this); } else if (index == 11) { JoyAxisButton *nbutton = axis->getNAxisButton(); JoyAxisButton *pbutton = axis->getPAxisButton(); nbutton->clearSlotsEventReset(); refreshNButtonLabel(); pbutton->clearSlotsEventReset(); refreshPButtonLabel(); } if (nbuttonslot) { JoyAxisButton *button = axis->getNAxisButton(); button->clearSlotsEventReset(false); button->setAssignedSlot(nbuttonslot->getSlotCode(), nbuttonslot->getSlotCodeAlias(), nbuttonslot->getSlotMode()); refreshNButtonLabel(); nbuttonslot->deleteLater(); } if (pbuttonslot) { JoyAxisButton *button = axis->getPAxisButton(); button->clearSlotsEventReset(false); button->setAssignedSlot(pbuttonslot->getSlotCode(), pbuttonslot->getSlotCodeAlias(), pbuttonslot->getSlotMode()); refreshPButtonLabel(); pbuttonslot->deleteLater(); } }
AxisEditDialog::AxisEditDialog(JoyAxis *axis, QWidget *parent) : QDialog(parent, Qt::Window), ui(new Ui::AxisEditDialog) { ui->setupUi(this); setAttribute(Qt::WA_DeleteOnClose); setAxisThrottleConfirm = new SetAxisThrottleDialog(axis, this); this->axis = axis; updateWindowTitleAxisName(); initialThrottleState = axis->getThrottle(); ui->horizontalSlider->setValue(axis->getDeadZone()); ui->lineEdit->setText(QString::number(axis->getDeadZone())); ui->horizontalSlider_2->setValue(axis->getMaxZoneValue()); ui->lineEdit_2->setText(QString::number(axis->getMaxZoneValue())); JoyAxisButton *nButton = axis->getNAxisButton(); if (!nButton->getActionName().isEmpty()) { ui->nPushButton->setText(nButton->getActionName()); } else { ui->nPushButton->setText(nButton->getSlotsSummary()); } JoyAxisButton *pButton = axis->getPAxisButton(); if (!pButton->getActionName().isEmpty()) { ui->pPushButton->setText(pButton->getActionName()); } else { ui->pPushButton->setText(pButton->getSlotsSummary()); } int currentThrottle = axis->getThrottle(); //ui->comboBox_2->setCurrentIndex(currentThrottle+1); if (currentThrottle == JoyAxis::NegativeThrottle || currentThrottle == JoyAxis::NegativeHalfThrottle) { int tempindex = currentThrottle == JoyAxis::NegativeHalfThrottle ? 0 : 1; ui->comboBox_2->setCurrentIndex(tempindex); ui->nPushButton->setEnabled(true); ui->pPushButton->setEnabled(false); } else if (currentThrottle == JoyAxis::PositiveThrottle || currentThrottle == JoyAxis::PositiveHalfThrottle) { int tempindex = currentThrottle == JoyAxis::PositiveThrottle ? 3 : 4; ui->comboBox_2->setCurrentIndex(tempindex); ui->pPushButton->setEnabled(true); ui->nPushButton->setEnabled(false); } ui->axisstatusBox->setDeadZone(axis->getDeadZone()); ui->axisstatusBox->setMaxZone(axis->getMaxZoneValue()); ui->axisstatusBox->setThrottle(axis->getThrottle()); ui->joyValueLabel->setText(QString::number(axis->getCurrentRawValue())); ui->axisstatusBox->setValue(axis->getCurrentRawValue()); selectCurrentPreset(); ui->axisNameLineEdit->setText(axis->getAxisName()); connect(ui->presetsComboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(implementPresets(int))); connect(ui->horizontalSlider, SIGNAL(valueChanged(int)), this, SLOT(updateDeadZoneBox(int))); connect(ui->horizontalSlider, SIGNAL(valueChanged(int)), ui->axisstatusBox, SLOT(setDeadZone(int))); connect(ui->horizontalSlider, SIGNAL(valueChanged(int)), axis, SLOT(setDeadZone(int))); connect(ui->horizontalSlider_2, SIGNAL(valueChanged(int)), this, SLOT(updateMaxZoneBox(int))); connect(ui->horizontalSlider_2, SIGNAL(valueChanged(int)), ui->axisstatusBox, SLOT(setMaxZone(int))); connect(ui->horizontalSlider_2, SIGNAL(valueChanged(int)), axis, SLOT(setMaxZoneValue(int))); connect(ui->comboBox_2, SIGNAL(currentIndexChanged(int)), this, SLOT(updateThrottleUi(int))); connect(axis, SIGNAL(moved(int)), ui->axisstatusBox, SLOT(setValue(int))); connect(axis, SIGNAL(moved(int)), this, SLOT(updateJoyValue(int))); connect(ui->lineEdit, SIGNAL(textEdited(QString)), this, SLOT(updateDeadZoneSlider(QString))); connect(ui->lineEdit_2, SIGNAL(textEdited(QString)), this, SLOT(updateMaxZoneSlider(QString))); connect(ui->nPushButton, SIGNAL(clicked()), this, SLOT(openAdvancedNDialog())); connect(ui->pPushButton, SIGNAL(clicked()), this, SLOT(openAdvancedPDialog())); connect(ui->mouseSettingsPushButton, SIGNAL(clicked()), this, SLOT(openMouseSettingsDialog())); connect(ui->axisNameLineEdit, SIGNAL(textEdited(QString)), axis, SLOT(setAxisName(QString))); connect(axis, SIGNAL(axisNameChanged()), this, SLOT(updateWindowTitleAxisName())); connect(this, SIGNAL(finished(int)), this, SLOT(checkFinalSettings())); }
void SetJoystick::setIgnoreEventState(bool ignore) { QHashIterator<int, JoyButton*> iter(buttons); while (iter.hasNext()) { JoyButton *button = iter.next().value(); if (button) { button->setIgnoreEventState(ignore); } } QHashIterator<int, JoyAxis*> iter2(axes); while (iter2.hasNext()) { JoyAxis *axis = iter2.next().value(); if (axis) { JoyAxisButton *naxisbutton = axis->getNAxisButton(); naxisbutton->setIgnoreEventState(ignore); JoyAxisButton *paxisbutton = axis->getPAxisButton(); paxisbutton->setIgnoreEventState(ignore); } } QHashIterator<int, JoyDPad*> iter3(hats); while (iter3.hasNext()) { JoyDPad *dpad = iter3.next().value(); if (dpad) { QHash<int, JoyDPadButton*>* dpadbuttons = dpad->getButtons(); QHashIterator<int, JoyDPadButton*> iterdpadbuttons(*dpadbuttons); while (iterdpadbuttons.hasNext()) { JoyDPadButton *dpadbutton = iterdpadbuttons.next().value(); if (dpadbutton) { dpadbutton->setIgnoreEventState(ignore); } } } } QHashIterator<int, JoyControlStick*> iter4(sticks); while (iter4.hasNext()) { JoyControlStick *stick = iter4.next().value(); if (stick) { QHash<JoyControlStick::JoyStickDirections, JoyControlStickButton*> *stickButtons = stick->getButtons(); QHashIterator<JoyControlStick::JoyStickDirections, JoyControlStickButton*> iterstickbuttons(*stickButtons); while (iterstickbuttons.hasNext()) { JoyControlStickButton *stickbutton = iterstickbuttons.next().value(); stickbutton->setIgnoreEventState(ignore); } } } QHashIterator<int, VDPad*> iter5(vdpads); while (iter5.hasNext()) { VDPad *vdpad = iter5.next().value(); if (vdpad) { QHash<int, JoyDPadButton*>* dpadbuttons = vdpad->getButtons(); QHashIterator<int, JoyDPadButton*> itervdpadbuttons(*dpadbuttons); while (itervdpadbuttons.hasNext()) { JoyDPadButton *dpadbutton = itervdpadbuttons.next().value(); dpadbutton->setIgnoreEventState(ignore); } } } }
void InputDevice::setActiveSetNumber(int index) { if ((index >= 0 && index < NUMBER_JOYSETS) && (index != active_set)) { QList<bool> buttonstates; QList<int> axesstates; QList<int> dpadstates; // Grab current states for all elements in old set SetJoystick *current_set = joystick_sets.value(active_set); SetJoystick *old_set = current_set; for (int i = 0; i < current_set->getNumberButtons(); i++) { JoyButton *button = current_set->getJoyButton(i); buttonstates.append(button->getButtonState()); } for (int i = 0; i < current_set->getNumberAxes(); i++) { JoyAxis *axis = current_set->getJoyAxis(i); axesstates.append(axis->getCurrentRawValue()); } for (int i = 0; i < current_set->getNumberHats(); i++) { JoyDPad *dpad = current_set->getJoyDPad(i); dpadstates.append(dpad->getCurrentDirection()); } // Release all current pressed elements and change set number joystick_sets.value(active_set)->release(); active_set = index; // Activate all buttons in the switched set current_set = joystick_sets.value(active_set); for (int i = 0; i < current_set->getNumberButtons(); i++) { bool value = buttonstates.at(i); bool tempignore = true; JoyButton *button = current_set->getJoyButton(i); JoyButton *oldButton = old_set->getJoyButton(i); if (button->getChangeSetCondition() == JoyButton::SetChangeWhileHeld) { if (value) { if (oldButton->getChangeSetCondition() == JoyButton::SetChangeWhileHeld && oldButton->getWhileHeldStatus()) { // Button from old set involved in a while held set // change. Carry over to new set button to ensure // set changes are done in the proper order. button->setWhileHeldStatus(true); } else if (!button->getWhileHeldStatus()) { // Ensure that set change events are performed if needed. tempignore = false; } } else { // Ensure that set change events are performed if needed. button->setWhileHeldStatus(false); //tempignore = false; } } button->joyEvent(value, tempignore); } // Activate all axis buttons in the switched set for (int i = 0; i < current_set->getNumberAxes(); i++) { int value = axesstates.at(i); bool tempignore = true; JoyAxis *axis = current_set->getJoyAxis(i); JoyAxisButton *oldButton = old_set->getJoyAxis(i)->getAxisButtonByValue(value); JoyAxisButton *button = axis->getAxisButtonByValue(value); if (button && oldButton) { if (button->getChangeSetCondition() == JoyButton::SetChangeWhileHeld) { if (oldButton->getChangeSetCondition() == JoyButton::SetChangeWhileHeld && oldButton->getWhileHeldStatus()) { // Button from old set involved in a while held set // change. Carry over to new set button to ensure // set changes are done in the proper order. button->setWhileHeldStatus(true); } else if (!button->getWhileHeldStatus()) { // Ensure that set change events are performed if needed. tempignore = false; } } } else if (!button) { // Ensure that set change events are performed if needed. axis->getPAxisButton()->setWhileHeldStatus(false); axis->getNAxisButton()->setWhileHeldStatus(false); } axis->joyEvent(value, tempignore); } // Activate all dpad buttons in the switched set for (int i = 0; i < current_set->getNumberHats(); i++) { int value = dpadstates.at(i); bool tempignore = true; JoyDPad *dpad = current_set->getJoyDPad(i); JoyDPadButton *button = dpad->getJoyButton(value); JoyDPadButton *oldButton = old_set->getJoyDPad(i)->getJoyButton(value); if (button && oldButton) { if (button->getChangeSetCondition() == JoyButton::SetChangeWhileHeld) { if (value) { if (oldButton->getChangeSetCondition() == JoyButton::SetChangeWhileHeld && oldButton->getWhileHeldStatus()) { // Button from old set involved in a while held set // change. Carry over to new set button to ensure // set changes are done in the proper order. button->setWhileHeldStatus(true); } else if (!button->getWhileHeldStatus()) { // Ensure that set change events are performed if needed. tempignore = false; } } } } else if (!button) { QHashIterator<int, JoyDPadButton*> iter(*dpad->getJoyButtons()); while (iter.hasNext()) { // Ensure that set change events are performed if needed. JoyDPadButton *button = iter.next().value(); button->setWhileHeldStatus(false); } } dpad->joyEvent(value, tempignore); } } }