Skip to content

Commit

Permalink
Saving mix slots - AntiMicroX#93
Browse files Browse the repository at this point in the history
  • Loading branch information
juliagoda committed Mar 20, 2020
1 parent fde90ef commit cb939f0
Show file tree
Hide file tree
Showing 2 changed files with 151 additions and 2 deletions.
152 changes: 150 additions & 2 deletions src/xml/joybuttonslotxml.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -209,7 +209,33 @@ void JoyButtonSlotXml::writeConfig(QXmlStreamWriter *xml)

xml->writeStartElement(m_joyBtnSlot->getXmlName());

if (m_joyBtnSlot->getSlotMode() == JoyButtonSlot::JoyKeyboard)
if (m_joyBtnSlot->getSlotMode() == JoyButtonSlot::JoyMix)
{
xml->writeStartElement("slots");

QListIterator<JoyButtonSlot*> iterMini(*m_joyBtnSlot->getMixSlots());

while (iterMini.hasNext())
{
JoyButtonSlot *minislot = iterMini.next();

xml->writeStartElement(m_joyBtnSlot->getXmlName());
writeEachSlot(xml, minislot);
xml->writeEndElement();
}

xml->writeEndElement();

xml->writeStartElement("mode");
xml->writeCharacters("mix");
xml->writeEndElement();
}
else
{
writeEachSlot(xml, m_joyBtnSlot);
}

/* if (m_joyBtnSlot->getSlotMode() == JoyButtonSlot::JoyKeyboard)
{
int basekey = AntKeyMapper::getInstance()->returnQtKey(m_joyBtnSlot->getSlotCode());
int qtkey = m_joyBtnSlot->getSlotCodeAlias();
Expand Down Expand Up @@ -322,8 +348,130 @@ void JoyButtonSlotXml::writeConfig(QXmlStreamWriter *xml)
break;
}
xml->writeEndElement();
xml->writeEndElement();*/
xml->writeEndElement();
}


void JoyButtonSlotXml::writeEachSlot(QXmlStreamWriter *xml, JoyButtonSlot *joyBtnSlot)
{
if (joyBtnSlot->getSlotMode() == JoyButtonSlot::JoyKeyboard)
{
int basekey = AntKeyMapper::getInstance()->returnQtKey(joyBtnSlot->getSlotCode());
int qtkey = joyBtnSlot->getSlotCodeAlias();

if ((qtkey > 0) || (basekey > 0))
{
// Did not add an alias to slot. If a possible Qt key value
// was found, use it.
if ((qtkey == 0) && (basekey > 0)) qtkey = basekey;

// Found a valid abstract keysym.
qDebug() << "ANT KEY: " << QString::number(qtkey, 16);

xml->writeTextElement("code", QString("0x%1").arg(qtkey, 0, 16));
}
else if (joyBtnSlot->getSlotCode() > 0)
{
// No abstraction provided for key. Add prefix to native keysym.
int tempkey = joyBtnSlot->getSlotCode() | QtKeyMapperBase::nativeKeyPrefix;

qDebug() << "ANT KEY: " << QString::number(tempkey, 16);

xml->writeTextElement("code", QString("0x%1").arg(tempkey, 0, 16));
}
}
else if ((joyBtnSlot->getSlotMode() == JoyButtonSlot::JoyLoadProfile) && !joyBtnSlot->getTextData().isEmpty())
{
xml->writeTextElement("profile", joyBtnSlot->getTextData());
}
else if ((joyBtnSlot->getSlotMode() == JoyButtonSlot::JoyTextEntry) && !joyBtnSlot->getTextData().isEmpty())
{
xml->writeTextElement("text", joyBtnSlot->getTextData());
}
else if ((joyBtnSlot->getSlotMode() == JoyButtonSlot::JoyExecute) && !joyBtnSlot->getTextData().isEmpty())
{
xml->writeTextElement("path", joyBtnSlot->getTextData());

if (!joyBtnSlot->getExtraData().isNull() && joyBtnSlot->getExtraData().canConvert<QString>())
{
xml->writeTextElement("arguments", joyBtnSlot->getExtraData().toString());
}
}
else
{
xml->writeTextElement("code", QString::number(joyBtnSlot->getSlotCode()));
}

xml->writeStartElement("mode");

switch(joyBtnSlot->getSlotMode())
{
case JoyButtonSlot::JoyKeyboard:
xml->writeCharacters("keyboard");
break;

case JoyButtonSlot::JoyMouseButton:
xml->writeCharacters("mousebutton");
break;

case JoyButtonSlot::JoyMouseMovement:
xml->writeCharacters("mousemovement");
break;

case JoyButtonSlot::JoyPause:
xml->writeCharacters("pause");
break;

case JoyButtonSlot::JoyHold:
xml->writeCharacters("hold");
break;

case JoyButtonSlot::JoyCycle:
xml->writeCharacters("cycle");
break;

case JoyButtonSlot::JoyDistance:
xml->writeCharacters("distance");
break;

case JoyButtonSlot::JoyRelease:
xml->writeCharacters("release");
break;

case JoyButtonSlot::JoyMouseSpeedMod:
xml->writeCharacters("mousespeedmod");
break;

case JoyButtonSlot::JoyKeyPress:
xml->writeCharacters("keypress");
break;

case JoyButtonSlot::JoyDelay:
xml->writeCharacters("delay");
break;

case JoyButtonSlot::JoyLoadProfile:
xml->writeCharacters("loadprofile");
break;

case JoyButtonSlot::JoySetChange:
xml->writeCharacters("setchange");
break;

case JoyButtonSlot::JoyTextEntry:
xml->writeCharacters("textentry");
break;

case JoyButtonSlot::JoyExecute:
xml->writeCharacters("execute");
break;

case JoyButtonSlot::JoyMix:
xml->writeCharacters("mix");
break;
}

xml->writeEndElement();
}

1 change: 1 addition & 0 deletions src/xml/joybuttonslotxml.h
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ class JoyButtonSlotXml : public QObject

private:
JoyButtonSlot* m_joyBtnSlot;
void writeEachSlot(QXmlStreamWriter *xml, JoyButtonSlot *joyBtnSlot);
};

#endif // JOYBUTTONSLOTXML_H

0 comments on commit cb939f0

Please sign in to comment.