Merge pull request #1501 from marcofernandezheras/Fix-Shortcut-Detection

Fix shortcuts detection on settings & game
This commit is contained in:
Zach 2015-09-14 16:02:45 -04:00
commit 3412ce2f7d
3 changed files with 140 additions and 139 deletions

View file

@ -18,9 +18,9 @@ ShortcutsSettings::ShortcutsSettings(QString settingsPath, QObject *parent) : QO
const QStringList customKeys = shortCutsFile.allKeys();
for(QStringList::const_iterator it = customKeys.constBegin(); it != customKeys.constEnd(); ++it)
{
QString stringSecuence = shortCutsFile.value(*it).toString();
QList<QKeySequence> secuenceList = parseSecuenceString(stringSecuence);
shortCuts.insert(*it, secuenceList);
QString stringSequence = shortCutsFile.value(*it).toString();
QList<QKeySequence> SequenceList = parseSequenceString(stringSequence);
shortCuts.insert(*it, SequenceList);
}
shortCutsFile.endGroup();
}
@ -41,76 +41,77 @@ QKeySequence ShortcutsSettings::getSingleShortcut(QString name)
QString ShortcutsSettings::getDefaultShortcutString(QString name)
{
return stringifySecuence(defaultShortCuts.value(name));
return stringifySequence(defaultShortCuts.value(name));
}
QString ShortcutsSettings::getShortcutString(QString name)
{
return stringifySecuence(shortCuts.value(name));
return stringifySequence(shortCuts.value(name));
}
QString ShortcutsSettings::stringifySecuence(QList<QKeySequence> secuence) const
QString ShortcutsSettings::stringifySequence(QList<QKeySequence> Sequence) const
{
QString stringSecuence;
for(int i=0; i < secuence.size(); ++i)
QString stringSequence;
for(int i=0; i < Sequence.size(); ++i)
{
stringSecuence.append(secuence.at(i).toString(QKeySequence::PortableText));
if(i < secuence.size() - 1)
stringSecuence.append(";");
stringSequence.append(Sequence.at(i).toString(QKeySequence::PortableText));
if(i < Sequence.size() - 1)
stringSequence.append(";");
}
return stringSecuence;
return stringSequence;
}
QList<QKeySequence> ShortcutsSettings::parseSecuenceString(QString stringSecuence)
QList<QKeySequence> ShortcutsSettings::parseSequenceString(QString stringSequence)
{
QStringList secuences = stringSecuence.split(";");
QList<QKeySequence> secuenceList;
for(QStringList::const_iterator ss = secuences.constBegin(); ss != secuences.constEnd(); ++ss)
QStringList Sequences = stringSequence.split(";");
QList<QKeySequence> SequenceList;
for(QStringList::const_iterator ss = Sequences.constBegin(); ss != Sequences.constEnd(); ++ss)
{
secuenceList.append(QKeySequence(*ss, QKeySequence::PortableText));
SequenceList.append(QKeySequence(*ss, QKeySequence::PortableText));
}
return secuenceList;
return SequenceList;
}
void ShortcutsSettings::setShortcuts(QString name, QList<QKeySequence> secuence)
void ShortcutsSettings::setShortcuts(QString name, QList<QKeySequence> Sequence)
{
shortCuts[name] = secuence;
shortCuts[name] = Sequence;
QSettings shortCutsFile(settingsFilePath, QSettings::IniFormat);
shortCutsFile.beginGroup("Custom");
QString stringSecuence = stringifySecuence(secuence);
shortCutsFile.setValue(name, stringSecuence);
QString stringSequence = stringifySequence(Sequence);
shortCutsFile.setValue(name, stringSequence);
shortCutsFile.endGroup();
emit shortCutchanged();
}
void ShortcutsSettings::setShortcuts(QString name, QKeySequence secuence)
void ShortcutsSettings::setShortcuts(QString name, QKeySequence Sequence)
{
setShortcuts(name, QList<QKeySequence>() << secuence);
setShortcuts(name, QList<QKeySequence>() << Sequence);
}
void ShortcutsSettings::setShortcuts(QString name, QString secuences)
void ShortcutsSettings::setShortcuts(QString name, QString Sequences)
{
setShortcuts(name,parseSecuenceString(secuences));
setShortcuts(name,parseSequenceString(Sequences));
}
bool ShortcutsSettings::isValid(QString name, QString secuences)
bool ShortcutsSettings::isValid(QString name, QString Sequences)
{
QString checkKey = name.left(name.indexOf("/"));
QStringList stringSecuences = secuences.split(";");
QString checkSequence = Sequences.split(";").last();
QList<QString> allKeys = shortCuts.keys();
for(int i=0; i < allKeys.size(); i++){
QString key = allKeys.at(i);
if(key.startsWith(checkKey) || key.startsWith("MainWindow") || checkKey.startsWith("MainWindow"))
{
QString storedSecuence = stringifySecuence(shortCuts.value(key));
for(int j = 0; j < stringSecuences.size(); j++)
QString storedSequence = stringifySequence(shortCuts.value(key));
QStringList stringSequences = storedSequence.split(";");
for(int j = 0; j < stringSequences.size(); j++)
{
if(storedSecuence.contains(stringSecuences.at(j)))
if(checkSequence == stringSequences.at(j))
return false;
}
}
@ -120,109 +121,108 @@ bool ShortcutsSettings::isValid(QString name, QString secuences)
void ShortcutsSettings::fillDefaultShorcuts()
{
defaultShortCuts["MainWindow/aCheckCardUpdates"] = parseSecuenceString("");
defaultShortCuts["MainWindow/aConnect"] = parseSecuenceString("");
defaultShortCuts["MainWindow/aDeckEditor"] = parseSecuenceString("");
defaultShortCuts["MainWindow/aDisconnect"] = parseSecuenceString("");
defaultShortCuts["MainWindow/aExit"] = parseSecuenceString("");
defaultShortCuts["MainWindow/aFullScreen"] = parseSecuenceString("Ctrl+F");
defaultShortCuts["MainWindow/aRegister"] = parseSecuenceString("");
defaultShortCuts["MainWindow/aSettings"] = parseSecuenceString("");
defaultShortCuts["MainWindow/aSinglePlayer"] = parseSecuenceString("");
defaultShortCuts["MainWindow/aWatchReplay"] = parseSecuenceString("");
defaultShortCuts["MainWindow/aCheckCardUpdates"] = parseSequenceString("");
defaultShortCuts["MainWindow/aConnect"] = parseSequenceString("");
defaultShortCuts["MainWindow/aDeckEditor"] = parseSequenceString("");
defaultShortCuts["MainWindow/aDisconnect"] = parseSequenceString("");
defaultShortCuts["MainWindow/aExit"] = parseSequenceString("");
defaultShortCuts["MainWindow/aFullScreen"] = parseSequenceString("Ctrl+F");
defaultShortCuts["MainWindow/aRegister"] = parseSequenceString("");
defaultShortCuts["MainWindow/aSettings"] = parseSequenceString("");
defaultShortCuts["MainWindow/aSinglePlayer"] = parseSequenceString("");
defaultShortCuts["MainWindow/aWatchReplay"] = parseSequenceString("");
defaultShortCuts["TabDeckEditor/aAnalyzeDeck"] = parseSecuenceString("");
defaultShortCuts["TabDeckEditor/aClearFilterAll"] = parseSecuenceString("");
defaultShortCuts["TabDeckEditor/aClearFilterOne"] = parseSecuenceString("");
defaultShortCuts["TabDeckEditor/aClose"] = parseSecuenceString("");
defaultShortCuts["TabDeckEditor/aDecrement"] = parseSecuenceString("-");
defaultShortCuts["TabDeckEditor/aEditSets"] = parseSecuenceString("");
defaultShortCuts["TabDeckEditor/aEditTokens"] = parseSecuenceString("");
defaultShortCuts["TabDeckEditor/aIncrement"] = parseSecuenceString("+");
defaultShortCuts["TabDeckEditor/aLoadDeck"] = parseSecuenceString("Ctrl+O");
defaultShortCuts["TabDeckEditor/aLoadDeckFromClipboard"] = parseSecuenceString("Ctrl+V");
defaultShortCuts["TabDeckEditor/aNewDeck"] = parseSecuenceString("Ctrl+N");
defaultShortCuts["TabDeckEditor/aOpenCustomFolder"] = parseSecuenceString("");
defaultShortCuts["TabDeckEditor/aPrintDeck"] = parseSecuenceString("Ctrl+P");
defaultShortCuts["TabDeckEditor/aRemoveCard"] = parseSecuenceString("Del");
defaultShortCuts["TabDeckEditor/aResetLayout"] = parseSecuenceString("");
defaultShortCuts["TabDeckEditor/aSaveDeck"] = parseSecuenceString("Ctrl+S");
defaultShortCuts["TabDeckEditor/aSaveDeckAs"] = parseSecuenceString("");
defaultShortCuts["TabDeckEditor/aSaveDeckToClipboard"] = parseSecuenceString("Ctrl+C");
defaultShortCuts["TabDeckEditor/aAnalyzeDeck"] = parseSequenceString("");
defaultShortCuts["TabDeckEditor/aClearFilterAll"] = parseSequenceString("");
defaultShortCuts["TabDeckEditor/aClearFilterOne"] = parseSequenceString("");
defaultShortCuts["TabDeckEditor/aClose"] = parseSequenceString("");
defaultShortCuts["TabDeckEditor/aDecrement"] = parseSequenceString("-");
defaultShortCuts["TabDeckEditor/aEditSets"] = parseSequenceString("");
defaultShortCuts["TabDeckEditor/aEditTokens"] = parseSequenceString("");
defaultShortCuts["TabDeckEditor/aIncrement"] = parseSequenceString("+");
defaultShortCuts["TabDeckEditor/aLoadDeck"] = parseSequenceString("Ctrl+O");
defaultShortCuts["TabDeckEditor/aLoadDeckFromClipboard"] = parseSequenceString("Ctrl+V");
defaultShortCuts["TabDeckEditor/aNewDeck"] = parseSequenceString("Ctrl+N");
defaultShortCuts["TabDeckEditor/aOpenCustomFolder"] = parseSequenceString("");
defaultShortCuts["TabDeckEditor/aPrintDeck"] = parseSequenceString("Ctrl+P");
defaultShortCuts["TabDeckEditor/aRemoveCard"] = parseSequenceString("Del");
defaultShortCuts["TabDeckEditor/aResetLayout"] = parseSequenceString("");
defaultShortCuts["TabDeckEditor/aSaveDeck"] = parseSequenceString("Ctrl+S");
defaultShortCuts["TabDeckEditor/aSaveDeckAs"] = parseSequenceString("");
defaultShortCuts["TabDeckEditor/aSaveDeckToClipboard"] = parseSequenceString("Ctrl+C");
defaultShortCuts["DeckViewContainer/loadLocalButton"] = parseSecuenceString("Ctrl+O");
defaultShortCuts["DeckViewContainer/loadRemoteButton"] = parseSecuenceString("Ctrl+Alt+O");
defaultShortCuts["DeckViewContainer/loadLocalButton"] = parseSequenceString("Ctrl+O");
defaultShortCuts["DeckViewContainer/loadRemoteButton"] = parseSequenceString("Ctrl+Alt+O");
defaultShortCuts["Player/aDec"] = parseSecuenceString("F11");
defaultShortCuts["Player/aInc"] = parseSecuenceString("F12");
defaultShortCuts["Player/aSet"] = parseSecuenceString("Ctrl+L");
defaultShortCuts["Player/aCloseMostRecentZoneView"] = parseSecuenceString("Esc");
defaultShortCuts["Player/IncP"] = parseSecuenceString("Ctrl++");
defaultShortCuts["Player/aAlwaysRevealTopCard"] = parseSecuenceString("Ctrl+N");
defaultShortCuts["Player/aAttach"] = parseSecuenceString("Ctrl+A");
defaultShortCuts["Player/aCCGreen"] = parseSecuenceString("");
defaultShortCuts["Player/aCCRed"] = parseSecuenceString("");
defaultShortCuts["Player/aCCYellow"] = parseSecuenceString("");
defaultShortCuts["Player/aClone"] = parseSecuenceString("Ctrl+J");
defaultShortCuts["Player/aCreateAnotherToken"] = parseSecuenceString("Ctrl+G");
defaultShortCuts["Player/aCreateToken"] = parseSecuenceString("Ctrl+T");
defaultShortCuts["Player/aDecP"] = parseSecuenceString("Ctrl+-");
defaultShortCuts["Player/aDecPT"] = parseSecuenceString("Ctrl+Alt+-");
defaultShortCuts["Player/aDecT"] = parseSecuenceString("Alt+-");
defaultShortCuts["Player/aDoesntUntap"] = parseSecuenceString("");
defaultShortCuts["Player/aDrawArrow"] = parseSecuenceString("");
defaultShortCuts["Player/aDrawCard"] = parseSecuenceString("Ctrl+D");
defaultShortCuts["Player/aDrawCards"] = parseSecuenceString("Ctrl+E");
defaultShortCuts["Player/aFlip"] = parseSecuenceString("");
defaultShortCuts["Player/aIncPT"] = parseSecuenceString("Ctrl+Alt++");
defaultShortCuts["Player/aIncT"] = parseSecuenceString("Alt++");
defaultShortCuts["Player/aMoveToBottomLibrary"] = parseSecuenceString("");
defaultShortCuts["Player/aMoveToExile"] = parseSecuenceString("");
defaultShortCuts["Player/aMoveToGraveyard"] = parseSecuenceString("Ctrl+Del");
defaultShortCuts["Player/aMoveToHand"] = parseSecuenceString("");
defaultShortCuts["Player/aMoveToTopLibrary"] = parseSecuenceString("");
defaultShortCuts["Player/aMulligan"] = parseSecuenceString("Ctrl+M");
defaultShortCuts["Player/aPeek"] = parseSecuenceString("");
defaultShortCuts["Player/aPlay"] = parseSecuenceString("");
defaultShortCuts["Player/aRCGreen"] = parseSecuenceString("");
defaultShortCuts["Player/aRCRed"] = parseSecuenceString("");
defaultShortCuts["Player/aRCYellow"] = parseSecuenceString("");
defaultShortCuts["Player/aRollDie"] = parseSecuenceString("Ctrl+I");
defaultShortCuts["Player/aSCGreen"] = parseSecuenceString("");
defaultShortCuts["Player/aSCRed"] = parseSecuenceString("");
defaultShortCuts["Player/aSCYellow"] = parseSecuenceString("");
defaultShortCuts["Player/aSetAnnotation"] = parseSecuenceString("");
defaultShortCuts["Player/aSetPT"] = parseSecuenceString("Ctrl+P");
defaultShortCuts["Player/aShuffle"] = parseSecuenceString("Ctrl+S");
defaultShortCuts["Player/aTap"] = parseSecuenceString("");
defaultShortCuts["Player/aUnattach"] = parseSecuenceString("");
defaultShortCuts["Player/aUndoDraw"] = parseSecuenceString("Ctrl+Shift+D");
defaultShortCuts["Player/aUntap"] = parseSecuenceString("");
defaultShortCuts["Player/aUntapAll"] = parseSecuenceString("Ctrl+U");
defaultShortCuts["Player/aViewGraveyard"] = parseSecuenceString("F4");
defaultShortCuts["Player/aViewLibrary"] = parseSecuenceString("F3");
defaultShortCuts["Player/aViewRfg"] = parseSecuenceString("");
defaultShortCuts["Player/aViewSideboard"] = parseSecuenceString("Ctrl+F3");
defaultShortCuts["Player/aViewTopCards"] = parseSecuenceString("Ctrl+W");
defaultShortCuts["Player/aConcede"] = parseSecuenceString("F2");
defaultShortCuts["Player/aLeaveGame"] = parseSecuenceString("Ctrl+Q");
defaultShortCuts["Player/aNextPhase"] = parseSecuenceString("Ctrl+Space;Tab");
defaultShortCuts["Player/aNextTurn"] = parseSecuenceString("Ctrl+Return;Ctrl+Enter");
defaultShortCuts["Player/aRemoveLocalArrows"] = parseSecuenceString("Ctrl+R");
defaultShortCuts["Player/aRotateViewCCW"] = parseSecuenceString("Ctrl+[");
defaultShortCuts["Player/aRotateViewCW"] = parseSecuenceString("Ctrl+]");
defaultShortCuts["Player/phase0"] = parseSecuenceString("F5");
defaultShortCuts["Player/phase1"] = parseSecuenceString("");
defaultShortCuts["Player/phase10"] = parseSecuenceString("F10");
defaultShortCuts["Player/phase2"] = parseSecuenceString("F6");
defaultShortCuts["Player/phase3"] = parseSecuenceString("F7");
defaultShortCuts["Player/phase4"] = parseSecuenceString("F8");
defaultShortCuts["Player/phase5"] = parseSecuenceString("");
defaultShortCuts["Player/phase6"] = parseSecuenceString("");
defaultShortCuts["Player/phase7"] = parseSecuenceString("");
defaultShortCuts["Player/phase8"] = parseSecuenceString("");
defaultShortCuts["Player/phase9"] = parseSecuenceString("F9");
defaultShortCuts["tab_room/aClearChat"] = parseSecuenceString("F12");
defaultShortCuts["DlgLoadDeckFromClipboard/refreshButton"] = parseSecuenceString("F5");
defaultShortCuts["Player/aDec"] = parseSequenceString("F11");
defaultShortCuts["Player/aInc"] = parseSequenceString("F12");
defaultShortCuts["Player/aSet"] = parseSequenceString("Ctrl+L");
defaultShortCuts["Player/aCloseMostRecentZoneView"] = parseSequenceString("Esc");
defaultShortCuts["Player/IncP"] = parseSequenceString("Ctrl++");
defaultShortCuts["Player/aAlwaysRevealTopCard"] = parseSequenceString("Ctrl+N");
defaultShortCuts["Player/aAttach"] = parseSequenceString("Ctrl+A");
defaultShortCuts["Player/aCCGreen"] = parseSequenceString("");
defaultShortCuts["Player/aCCRed"] = parseSequenceString("");
defaultShortCuts["Player/aCCYellow"] = parseSequenceString("");
defaultShortCuts["Player/aClone"] = parseSequenceString("Ctrl+J");
defaultShortCuts["Player/aCreateAnotherToken"] = parseSequenceString("Ctrl+G");
defaultShortCuts["Player/aCreateToken"] = parseSequenceString("Ctrl+T");
defaultShortCuts["Player/aDecP"] = parseSequenceString("Ctrl+-");
defaultShortCuts["Player/aDecPT"] = parseSequenceString("Ctrl+Alt+-");
defaultShortCuts["Player/aDecT"] = parseSequenceString("Alt+-");
defaultShortCuts["Player/aDoesntUntap"] = parseSequenceString("");
defaultShortCuts["Player/aDrawArrow"] = parseSequenceString("");
defaultShortCuts["Player/aDrawCard"] = parseSequenceString("Ctrl+D");
defaultShortCuts["Player/aDrawCards"] = parseSequenceString("Ctrl+E");
defaultShortCuts["Player/aFlip"] = parseSequenceString("");
defaultShortCuts["Player/aIncPT"] = parseSequenceString("Ctrl+Alt++");
defaultShortCuts["Player/aIncT"] = parseSequenceString("Alt++");
defaultShortCuts["Player/aMoveToBottomLibrary"] = parseSequenceString("");
defaultShortCuts["Player/aMoveToExile"] = parseSequenceString("");
defaultShortCuts["Player/aMoveToGraveyard"] = parseSequenceString("Ctrl+Del");
defaultShortCuts["Player/aMoveToHand"] = parseSequenceString("");
defaultShortCuts["Player/aMoveToTopLibrary"] = parseSequenceString("");
defaultShortCuts["Player/aMulligan"] = parseSequenceString("Ctrl+M");
defaultShortCuts["Player/aPeek"] = parseSequenceString("");
defaultShortCuts["Player/aPlay"] = parseSequenceString("");
defaultShortCuts["Player/aRCGreen"] = parseSequenceString("");
defaultShortCuts["Player/aRCRed"] = parseSequenceString("");
defaultShortCuts["Player/aRCYellow"] = parseSequenceString("");
defaultShortCuts["Player/aRollDie"] = parseSequenceString("Ctrl+I");
defaultShortCuts["Player/aSCGreen"] = parseSequenceString("");
defaultShortCuts["Player/aSCRed"] = parseSequenceString("");
defaultShortCuts["Player/aSCYellow"] = parseSequenceString("");
defaultShortCuts["Player/aSetAnnotation"] = parseSequenceString("");
defaultShortCuts["Player/aSetPT"] = parseSequenceString("Ctrl+P");
defaultShortCuts["Player/aShuffle"] = parseSequenceString("Ctrl+S");
defaultShortCuts["Player/aTap"] = parseSequenceString("");
defaultShortCuts["Player/aUnattach"] = parseSequenceString("");
defaultShortCuts["Player/aUndoDraw"] = parseSequenceString("Ctrl+Shift+D");
defaultShortCuts["Player/aUntap"] = parseSequenceString("");
defaultShortCuts["Player/aUntapAll"] = parseSequenceString("Ctrl+U");
defaultShortCuts["Player/aViewGraveyard"] = parseSequenceString("F4");
defaultShortCuts["Player/aViewLibrary"] = parseSequenceString("F3");
defaultShortCuts["Player/aViewRfg"] = parseSequenceString("");
defaultShortCuts["Player/aViewSideboard"] = parseSequenceString("Ctrl+F3");
defaultShortCuts["Player/aViewTopCards"] = parseSequenceString("Ctrl+W");
defaultShortCuts["Player/aConcede"] = parseSequenceString("F2");
defaultShortCuts["Player/aLeaveGame"] = parseSequenceString("Ctrl+Q");
defaultShortCuts["Player/aNextPhase"] = parseSequenceString("Ctrl+Space;Tab");
defaultShortCuts["Player/aNextTurn"] = parseSequenceString("Ctrl+Return;Ctrl+Enter");
defaultShortCuts["Player/aRemoveLocalArrows"] = parseSequenceString("Ctrl+R");
defaultShortCuts["Player/aRotateViewCCW"] = parseSequenceString("Ctrl+[");
defaultShortCuts["Player/aRotateViewCW"] = parseSequenceString("Ctrl+]");
defaultShortCuts["Player/phase0"] = parseSequenceString("F5");
defaultShortCuts["Player/phase1"] = parseSequenceString("");
defaultShortCuts["Player/phase10"] = parseSequenceString("F10");
defaultShortCuts["Player/phase2"] = parseSequenceString("F6");
defaultShortCuts["Player/phase3"] = parseSequenceString("F7");
defaultShortCuts["Player/phase4"] = parseSequenceString("F8");
defaultShortCuts["Player/phase5"] = parseSequenceString("");
defaultShortCuts["Player/phase6"] = parseSequenceString("");
defaultShortCuts["Player/phase7"] = parseSequenceString("");
defaultShortCuts["Player/phase8"] = parseSequenceString("");
defaultShortCuts["Player/phase9"] = parseSequenceString("F9");
defaultShortCuts["tab_room/aClearChat"] = parseSequenceString("F12");
defaultShortCuts["DlgLoadDeckFromClipboard/refreshButton"] = parseSequenceString("F5");
}

View file

@ -19,11 +19,11 @@ public:
QString getDefaultShortcutString(QString name);
QString getShortcutString(QString name);
void setShortcuts(QString name, QList<QKeySequence> secuence);
void setShortcuts(QString name, QKeySequence secuence);
void setShortcuts(QString name, QString secuences);
void setShortcuts(QString name, QList<QKeySequence> Sequence);
void setShortcuts(QString name, QKeySequence Sequence);
void setShortcuts(QString name, QString Sequences);
bool isValid(QString name, QString secuences);
bool isValid(QString name, QString Sequences);
signals:
void shortCutchanged();
@ -33,8 +33,8 @@ private:
QMap<QString,QList<QKeySequence> > defaultShortCuts;
void fillDefaultShorcuts();
QString stringifySecuence(QList<QKeySequence> secuence) const;
QList<QKeySequence> parseSecuenceString(QString stringSecuence);
QString stringifySequence(QList<QKeySequence> Sequence) const;
QList<QKeySequence> parseSequenceString(QString stringSequence);
};
#endif // SHORTCUTSSETTINGS_H

View file

@ -452,6 +452,7 @@ TabGame::TabGame(TabSupervisor *_tabSupervisor, QList<AbstractClient *> &_client
scene = new GameScene(phasesToolbar, this);
gameView = new GameView(scene);
gameView->hide();
gameView->setFocusPolicy(Qt::ClickFocus);
cardInfo = new CardFrame();
playerListWidget = new PlayerListWidget(tabSupervisor, clients.first(), this);