void SetJoystick::propogateSetStickButtonNameChange() { JoyControlStickButton *button = static_cast<JoyControlStickButton*>(sender()); disconnect(button, SIGNAL(buttonNameChanged()), this, SLOT(propogateSetStickButtonNameChange())); emit setStickButtonNameChange(button->getStick()->getIndex(), button->getJoyNumber()); connect(button, SIGNAL(buttonNameChanged()), this, SLOT(propogateSetStickButtonNameChange())); }
bool JoyControlStick::getButtonsPresetSmoothing() { bool presetSmoothing = false; QHash<JoyStickDirections, JoyControlStickButton*> temphash = getApplicableButtons(); QHashIterator<JoyStickDirections, JoyControlStickButton*> iter(temphash); while (iter.hasNext()) { if (!iter.hasPrevious()) { JoyControlStickButton *button = iter.next().value(); presetSmoothing = button->isSmoothingEnabled(); } else { JoyControlStickButton *button = iter.next().value(); bool temp = button->isSmoothingEnabled(); if (temp != presetSmoothing) { presetSmoothing = false; iter.toBack(); } } } return presetSmoothing; }
void JoyControlStickEditDialogHelper::setFromPendingSlots() { if (!pendingSlots.isEmpty()) { QHashIterator<JoyControlStick::JoyStickDirections, JoyButtonSlot*> iter(pendingSlots); while (iter.hasNext()) { iter.next(); JoyButtonSlot *slot = iter.value(); if (slot) { JoyControlStick::JoyStickDirections tempDir = iter.key(); JoyControlStickButton *button = stick->getDirectionButton(tempDir); if (button) { button->clearSlotsEventReset(false); button->setAssignedSlot(slot->getSlotCode(), slot->getSlotCodeAlias(), slot->getSlotMode()); } slot->deleteLater(); } } } }
void InputDevice::changeSetStickButtonAssociation(int button_index, int stick_index, int originset, int newset, int mode) { JoyControlStickButton *button = joystick_sets.value(newset)->getJoyStick(stick_index)->getDirectionButton((JoyControlStick::JoyStickDirections)button_index); JoyButton::SetChangeCondition tempmode = (JoyButton::SetChangeCondition)mode; button->setChangeSetSelection(originset); button->setChangeSetCondition(tempmode, true); }
void JoyControlStick::setButtonsSensitivity(double value) { QHashIterator<JoyStickDirections, JoyControlStickButton*> iter(buttons); while (iter.hasNext()) { JoyControlStickButton *button = iter.next().value(); button->setSensitivity(value); } }
void JoyControlStick::setButtonsSpringHeight(int value) { QHashIterator<JoyStickDirections, JoyControlStickButton*> iter(buttons); while (iter.hasNext()) { JoyControlStickButton *button = iter.next().value(); button->setSpringHeight(value); } }
void JoyControlStick::setButtonsMouseCurve(JoyButton::JoyMouseCurve mouseCurve) { QHashIterator<JoyStickDirections, JoyControlStickButton*> iter(buttons); while (iter.hasNext()) { JoyControlStickButton *button = iter.next().value(); button->setMouseCurve(mouseCurve); } }
void JoyControlStick::setButtonsSmoothing(bool enabled) { QHashIterator<JoyStickDirections, JoyControlStickButton*> iter(buttons); while (iter.hasNext()) { JoyControlStickButton *button = iter.next().value(); button->setSmoothing(enabled); } }
void JoyControlStick::setButtonsWheelSpeedY(int value) { QHashIterator<JoyStickDirections, JoyControlStickButton*> iter(buttons); while (iter.hasNext()) { JoyControlStickButton *button = iter.next().value(); button->setWheelSpeedY(value); } }
void SetJoystick::propogateSetStickButtonRelease(int button) { JoyControlStickButton *stickButton = static_cast<JoyControlStickButton*>(sender()); JoyControlStick *stick = stickButton->getStick(); if (!stickButton->getIgnoreEventState()) { emit setStickButtonRelease(index, stick->getIndex(), button); } }
void MouseControlStickSettingsDialog::updateConfigVerticalSpeed(int value) { QHashIterator<JoyControlStick::JoyStickDirections, JoyControlStickButton*> iter(*stick->getButtons()); while (iter.hasNext()) { JoyControlStickButton *button = iter.next().value(); button->setMouseSpeedY(value); } }
void JoyControlStick::releaseButtonEvents() { QHashIterator<JoyStickDirections, JoyControlStickButton*> iter(buttons); while (iter.hasNext()) { JoyControlStickButton *button = iter.next().value(); button->joyEvent(false, true); } }
void JoyControlStick::readConfig(QXmlStreamReader *xml) { if (xml->isStartElement() && xml->name() == "stick") { xml->readNextStartElement(); while (!xml->atEnd() && (!xml->isEndElement() && xml->name() != "stick")) { if (xml->name() == "deadZone" && xml->isStartElement()) { QString temptext = xml->readElementText(); int tempchoice = temptext.toInt(); this->setDeadZone(tempchoice); } else if (xml->name() == "maxZone" && xml->isStartElement()) { QString temptext = xml->readElementText(); int tempchoice = temptext.toInt(); this->setMaxZone(tempchoice); } else if (xml->name() == "diagonalRange" && xml->isStartElement()) { QString temptext = xml->readElementText(); int tempchoice = temptext.toInt(); this->setDiagonalRange(tempchoice); } else if (xml->name() == "mode" && xml->isStartElement()) { QString temptext = xml->readElementText(); if (temptext == "eight-way") { this->setJoyMode(EightWayMode); } } else if (xml->name() == JoyControlStickButton::xmlName && xml->isStartElement()) { int index = xml->attributes().value("index").toString().toInt(); JoyControlStickButton *button = buttons.value((JoyStickDirections)index); if (button) { button->readConfig(xml); } else { xml->skipCurrentElement(); } } else { xml->skipCurrentElement(); } xml->readNextStartElement(); } } }
void InputDevice::updateSetStickButtonNames(int stickIndex, int buttonIndex) { JoyControlStick *stick = getActiveSetJoystick()->getJoyStick(stickIndex); if (stick) { JoyControlStickButton *button = stick->getDirectionButton(JoyControlStick::JoyStickDirections(buttonIndex)); if (button) { setStickButtonName(stickIndex, buttonIndex, button->getButtonName()); } } }
void JoyControlStickEditDialogHelper::clearButtonsSlotsEventReset() { QHash<JoyControlStick::JoyStickDirections, JoyControlStickButton*> *buttons = stick->getButtons(); QHashIterator<JoyControlStick::JoyStickDirections, JoyControlStickButton*> iter(*buttons); while (iter.hasNext()) { JoyControlStickButton *button = iter.next().value(); if (button) { button->clearSlotsEventReset(); } } }
void MouseControlStickSettingsDialog::calculateWheelSpeedPreset() { QHashIterator<JoyControlStick::JoyStickDirections, JoyControlStickButton*> iter(*stick->getButtons()); int tempWheelSpeedX = 0; int tempWheelSpeedY = 0; while (iter.hasNext()) { JoyControlStickButton *button = iter.next().value(); tempWheelSpeedX = qMax(tempWheelSpeedX, button->getWheelSpeedX()); tempWheelSpeedY = qMax(tempWheelSpeedY, button->getWheelSpeedY()); } ui->wheelHoriSpeedSpinBox->setValue(tempWheelSpeedX); ui->wheelVertSpeedSpinBox->setValue(tempWheelSpeedY); }
bool JoyControlStick::isDefault() { bool value = true; value = value && (deadZone == 8000); value = value && (maxZone == JoyAxis::AXISMAXZONE); value = value && (diagonalRange == 45); value = value && (currentMode == StandardMode); QHashIterator<JoyStickDirections, JoyControlStickButton*> iter(buttons); while (iter.hasNext()) { JoyControlStickButton *button = iter.next().value(); value = value && (button->isDefault()); } return value; }
void InputDevice::setStickButtonName(int stickIndex, int buttonIndex, QString tempName) { QHashIterator<int, SetJoystick*> iter(joystick_sets); while (iter.hasNext()) { SetJoystick *tempSet = iter.next().value(); disconnect(tempSet, SIGNAL(setStickButtonNameChange(int,int)), this, SLOT(updateSetStickButtonNames(int,int))); JoyControlStick *stick = tempSet->getJoyStick(stickIndex); if (stick) { JoyControlStickButton *button = stick->getDirectionButton(JoyControlStick::JoyStickDirections(buttonIndex)); if (button) { button->setButtonName(tempName); } } connect(tempSet, SIGNAL(setStickButtonNameChange(int,int)), this, SLOT(updateSetStickButtonNames(int,int))); } }
void MouseControlStickSettingsDialog::calculateMouseSpeedPreset() { QHashIterator<JoyControlStick::JoyStickDirections, JoyControlStickButton*> iter(*stick->getButtons()); int tempMouseSpeedX = 0; while (iter.hasNext()) { JoyControlStickButton *button = iter.next().value(); tempMouseSpeedX = qMax(tempMouseSpeedX, button->getMouseSpeedX()); } iter.toFront(); int tempMouseSpeedY = 0; while (iter.hasNext()) { JoyControlStickButton *button = iter.next().value(); tempMouseSpeedY = qMax(tempMouseSpeedY, button->getMouseSpeedY()); } ui->horizontalSpinBox->setValue(tempMouseSpeedX); ui->verticalSpinBox->setValue(tempMouseSpeedY); }
bool JoyControlStick::hasSameButtonsMouseCurve() { bool result = true; JoyButton::JoyMouseCurve initialCurve = JoyButton::LinearCurve; QHash<JoyStickDirections, JoyControlStickButton*> temphash; temphash.insert(StickUp, buttons.value(StickUp)); temphash.insert(StickDown, buttons.value(StickDown)); temphash.insert(StickLeft, buttons.value(StickLeft)); temphash.insert(StickRight, buttons.value(StickRight)); if (currentMode == EightWayMode) { temphash.insert(StickLeftUp, buttons.value(StickLeftUp)); temphash.insert(StickRightUp, buttons.value(StickRightUp)); temphash.insert(StickRightDown, buttons.value(StickRightDown)); temphash.insert(StickLeftDown, buttons.value(StickLeftDown)); } QHashIterator<JoyStickDirections, JoyControlStickButton*> iter(temphash); while (iter.hasNext()) { if (!iter.hasPrevious()) { JoyControlStickButton *button = iter.next().value(); initialCurve = button->getMouseCurve(); } else { JoyControlStickButton *button = iter.next().value(); JoyButton::JoyMouseCurve temp = button->getMouseCurve(); if (temp != initialCurve) { result = false; iter.toBack(); } } } return result; }
JoyButton::JoyMouseMovementMode JoyControlStick::getButtonsPresetMouseMode() { JoyButton::JoyMouseMovementMode resultMode = JoyButton::MouseCursor; QHash<JoyStickDirections, JoyControlStickButton*> temphash; temphash.insert(StickUp, buttons.value(StickUp)); temphash.insert(StickDown, buttons.value(StickDown)); temphash.insert(StickLeft, buttons.value(StickLeft)); temphash.insert(StickRight, buttons.value(StickRight)); if (currentMode == EightWayMode) { temphash.insert(StickLeftUp, buttons.value(StickLeftUp)); temphash.insert(StickRightUp, buttons.value(StickRightUp)); temphash.insert(StickRightDown, buttons.value(StickRightDown)); temphash.insert(StickLeftDown, buttons.value(StickLeftDown)); } QHashIterator<JoyStickDirections, JoyControlStickButton*> iter(temphash); while (iter.hasNext()) { if (!iter.hasPrevious()) { JoyControlStickButton *button = iter.next().value(); resultMode = button->getMouseMode(); } else { JoyControlStickButton *button = iter.next().value(); JoyButton::JoyMouseMovementMode temp = button->getMouseMode(); if (temp != resultMode) { resultMode = JoyButton::MouseCursor; iter.toBack(); } } } return resultMode; }
double JoyControlStick::getButtonsPresetSensitivity() { double presetSensitivity = 1.0; QHash<JoyStickDirections, JoyControlStickButton*> temphash; temphash.insert(StickUp, buttons.value(StickUp)); temphash.insert(StickDown, buttons.value(StickDown)); temphash.insert(StickLeft, buttons.value(StickLeft)); temphash.insert(StickRight, buttons.value(StickRight)); if (currentMode == EightWayMode) { temphash.insert(StickLeftUp, buttons.value(StickLeftUp)); temphash.insert(StickRightUp, buttons.value(StickRightUp)); temphash.insert(StickRightDown, buttons.value(StickRightDown)); temphash.insert(StickLeftDown, buttons.value(StickLeftDown)); } QHashIterator<JoyStickDirections, JoyControlStickButton*> iter(temphash); while (iter.hasNext()) { if (!iter.hasPrevious()) { JoyControlStickButton *button = iter.next().value(); presetSensitivity = button->getSensitivity(); } else { JoyControlStickButton *button = iter.next().value(); double temp = button->getSensitivity(); if (temp != presetSensitivity) { presetSensitivity = 1.0; iter.toBack(); } } } return presetSensitivity; }
void JoyControlStick::writeConfig(QXmlStreamWriter *xml) { if (!isDefault()) { xml->writeStartElement("stick"); xml->writeAttribute("index", QString::number(index+1)); xml->writeTextElement("deadZone", QString::number(deadZone)); xml->writeTextElement("maxZone", QString::number(maxZone)); xml->writeTextElement("diagonalRange", QString::number(diagonalRange)); if (currentMode == EightWayMode) { xml->writeTextElement("mode", "eight-way"); } QHashIterator<JoyStickDirections, JoyControlStickButton*> iter(buttons); while (iter.hasNext()) { JoyControlStickButton *button = iter.next().value(); button->writeConfig(xml); } 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(); }
QString JoyControlStick::getName(bool forceFullFormat, bool displayNames) { QString label = getPartialName(forceFullFormat, displayNames); label.append(": "); QStringList tempList; if (buttons.contains(StickUp)) { JoyControlStickButton *button = buttons.value(StickUp); if (!button->getButtonName().isEmpty()) { tempList.append(button->getButtonName()); } else { tempList.append(button->getSlotsSummary()); } } if (buttons.contains(StickLeft)) { JoyControlStickButton *button = buttons.value(StickLeft); if (!button->getButtonName().isEmpty()) { tempList.append(button->getButtonName()); } else { tempList.append(button->getSlotsSummary()); } } if (buttons.contains(StickDown)) { JoyControlStickButton *button = buttons.value(StickDown); if (!button->getButtonName().isEmpty()) { tempList.append(button->getButtonName()); } else { tempList.append(button->getSlotsSummary()); } } if (buttons.contains(StickRight)) { JoyControlStickButton *button = buttons.value(StickRight); if (!button->getButtonName().isEmpty()) { tempList.append(button->getButtonName()); } else { tempList.append(button->getSlotsSummary()); } } label.append(tempList.join(", ")); return label; }
int JoyControlStickContextMenu::getPresetIndex() { int result = 0; JoyControlStickButton *upButton = stick->getDirectionButton(JoyControlStick::StickUp); QList<JoyButtonSlot*> *upslots = upButton->getAssignedSlots(); JoyControlStickButton *downButton = stick->getDirectionButton(JoyControlStick::StickDown); QList<JoyButtonSlot*> *downslots = downButton->getAssignedSlots(); JoyControlStickButton *leftButton = stick->getDirectionButton(JoyControlStick::StickLeft); QList<JoyButtonSlot*> *leftslots = leftButton->getAssignedSlots(); JoyControlStickButton *rightButton = stick->getDirectionButton(JoyControlStick::StickRight); QList<JoyButtonSlot*> *rightslots = rightButton->getAssignedSlots(); if (upslots->length() == 1 && downslots->length() == 1 && leftslots->length() == 1 && rightslots->length() == 1) { JoyButtonSlot *upslot = upslots->at(0); JoyButtonSlot *downslot = downslots->at(0); JoyButtonSlot *leftslot = leftslots->at(0); JoyButtonSlot *rightslot = rightslots->at(0); if (upslot->getSlotMode() == JoyButtonSlot::JoyMouseMovement && upslot->getSlotCode() == JoyButtonSlot::MouseUp && downslot->getSlotMode() == JoyButtonSlot::JoyMouseMovement && downslot->getSlotCode() == JoyButtonSlot::MouseDown && leftslot->getSlotMode() == JoyButtonSlot::JoyMouseMovement && leftslot->getSlotCode() == JoyButtonSlot::MouseLeft && rightslot->getSlotMode() == JoyButtonSlot::JoyMouseMovement && rightslot->getSlotCode() == JoyButtonSlot::MouseRight) { result = 1; } else if (upslot->getSlotMode() == JoyButtonSlot::JoyMouseMovement && upslot->getSlotCode() == JoyButtonSlot::MouseUp && downslot->getSlotMode() == JoyButtonSlot::JoyMouseMovement && downslot->getSlotCode() == JoyButtonSlot::MouseDown && leftslot->getSlotMode() == JoyButtonSlot::JoyMouseMovement && leftslot->getSlotCode() == JoyButtonSlot::MouseRight && rightslot->getSlotMode() == JoyButtonSlot::JoyMouseMovement && rightslot->getSlotCode() == JoyButtonSlot::MouseLeft) { result = 2; } else if (upslot->getSlotMode() == JoyButtonSlot::JoyMouseMovement && upslot->getSlotCode() == JoyButtonSlot::MouseDown && downslot->getSlotMode() == JoyButtonSlot::JoyMouseMovement && downslot->getSlotCode() == JoyButtonSlot::MouseUp && leftslot->getSlotMode() == JoyButtonSlot::JoyMouseMovement && leftslot->getSlotCode() == JoyButtonSlot::MouseLeft && rightslot->getSlotMode() == JoyButtonSlot::JoyMouseMovement && rightslot->getSlotCode() == JoyButtonSlot::MouseRight) { result = 3; } else if (upslot->getSlotMode() == JoyButtonSlot::JoyMouseMovement && upslot->getSlotCode() == JoyButtonSlot::MouseDown && downslot->getSlotMode() == JoyButtonSlot::JoyMouseMovement && downslot->getSlotCode() == JoyButtonSlot::MouseUp && leftslot->getSlotMode() == JoyButtonSlot::JoyMouseMovement && leftslot->getSlotCode() == JoyButtonSlot::MouseRight && rightslot->getSlotMode() == JoyButtonSlot::JoyMouseMovement && rightslot->getSlotCode() == JoyButtonSlot::MouseLeft) { result = 4; } else if (upslot->getSlotMode() == JoyButtonSlot::JoyKeyboard && (unsigned int)upslot->getSlotCode() == AntKeyMapper::getInstance()->returnVirtualKey(Qt::Key_Up) && downslot->getSlotMode() == JoyButtonSlot::JoyKeyboard && (unsigned int)downslot->getSlotCode() == AntKeyMapper::getInstance()->returnVirtualKey(Qt::Key_Down) && leftslot->getSlotMode() == JoyButtonSlot::JoyKeyboard && (unsigned int)leftslot->getSlotCode() == AntKeyMapper::getInstance()->returnVirtualKey(Qt::Key_Left) && rightslot->getSlotMode() == JoyButtonSlot::JoyKeyboard && (unsigned int)rightslot->getSlotCode() == AntKeyMapper::getInstance()->returnVirtualKey(Qt::Key_Right)) { result = 5; } else if (upslot->getSlotMode() == JoyButtonSlot::JoyKeyboard && (unsigned int)upslot->getSlotCode() == AntKeyMapper::getInstance()->returnVirtualKey(Qt::Key_W) && downslot->getSlotMode() == JoyButtonSlot::JoyKeyboard && (unsigned int)downslot->getSlotCode() == AntKeyMapper::getInstance()->returnVirtualKey(Qt::Key_S) && leftslot->getSlotMode() == JoyButtonSlot::JoyKeyboard && (unsigned int)leftslot->getSlotCode() == AntKeyMapper::getInstance()->returnVirtualKey(Qt::Key_A) && rightslot->getSlotMode() == JoyButtonSlot::JoyKeyboard && (unsigned int)rightslot->getSlotCode() == AntKeyMapper::getInstance()->returnVirtualKey(Qt::Key_D)) { result = 6; } else if (upslot->getSlotMode() == JoyButtonSlot::JoyKeyboard && (unsigned int)upslot->getSlotCode() == AntKeyMapper::getInstance()->returnVirtualKey(QtKeyMapperBase::AntKey_KP_8) && downslot->getSlotMode() == JoyButtonSlot::JoyKeyboard && (unsigned int)downslot->getSlotCode() == AntKeyMapper::getInstance()->returnVirtualKey(QtKeyMapperBase::AntKey_KP_2) && leftslot->getSlotMode() == JoyButtonSlot::JoyKeyboard && (unsigned int)leftslot->getSlotCode() == AntKeyMapper::getInstance()->returnVirtualKey(QtKeyMapperBase::AntKey_KP_4) && rightslot->getSlotMode() == JoyButtonSlot::JoyKeyboard && (unsigned int)rightslot->getSlotCode() == AntKeyMapper::getInstance()->returnVirtualKey(QtKeyMapperBase::AntKey_KP_6)) { result = 7; } } else if (upslots->length() == 0 && downslots->length() == 0 && leftslots->length() == 0 && rightslots->length() == 0) { result = 8; } 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 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); } } } }