From 06081bd9409f4cee3e31368e26d2ffbee756458f Mon Sep 17 00:00:00 2001 From: ebbit1q Date: Sat, 24 Nov 2018 04:21:20 +0100 Subject: [PATCH] add keybinds to mill cards (#3439) * add keybinds to mill cards Add functions to move single card from top of deck to the graveyard and exile. Add keybinds to move single or multiple cards from top of deck to exile or graveyard. Add new keybinds to settings menu. Move settings menu items around for a better fit. Rename a few of the items in the settings menu. Add default keybinds: ctrl alt d/e for single/multiple cards from top of deck to the graveyard. No defaults are set for moving to exile. * fix shortcut menu * fix missing tag * rename mismatched functions * fixed your typos * refactor shortcutsettings correct a lot of typos optimize a lot of functions this could merit a pr on its own * set mill keybinds * refactor add related card actions I found a function that was completely unintelligible so I made it remotely legible and removed the duplication. * shorten line by 17 characters replace a lot of function calls with just a single reference * add brackets add brackets to all single line if statements etc. readability improvements --- cockatrice/src/abstractcounter.cpp | 2 +- .../src/dlg_load_deck_from_clipboard.cpp | 2 +- cockatrice/src/gameview.cpp | 2 +- cockatrice/src/player.cpp | 912 +++++++++++------- cockatrice/src/player.h | 10 +- cockatrice/src/sequenceEdit/sequenceedit.cpp | 36 +- cockatrice/src/sequenceEdit/sequenceedit.h | 25 +- cockatrice/src/sequenceEdit/ui_shortcutstab.h | 626 ++++++------ cockatrice/src/shortcutssettings.cpp | 278 ++---- cockatrice/src/shortcutssettings.h | 184 +++- cockatrice/src/tab_deck_editor.cpp | 2 +- cockatrice/src/tab_game.cpp | 6 +- cockatrice/src/window_main.cpp | 2 +- 13 files changed, 1154 insertions(+), 933 deletions(-) diff --git a/cockatrice/src/abstractcounter.cpp b/cockatrice/src/abstractcounter.cpp index 64c19253..42cf6ad8 100644 --- a/cockatrice/src/abstractcounter.cpp +++ b/cockatrice/src/abstractcounter.cpp @@ -46,7 +46,7 @@ AbstractCounter::AbstractCounter(Player *_player, } else menu = nullptr; - connect(&settingsCache->shortcuts(), SIGNAL(shortCutchanged()), this, SLOT(refreshShortcuts())); + connect(&settingsCache->shortcuts(), SIGNAL(shortCutChanged()), this, SLOT(refreshShortcuts())); refreshShortcuts(); retranslateUi(); } diff --git a/cockatrice/src/dlg_load_deck_from_clipboard.cpp b/cockatrice/src/dlg_load_deck_from_clipboard.cpp index 8d39ea41..32d1dec4 100644 --- a/cockatrice/src/dlg_load_deck_from_clipboard.cpp +++ b/cockatrice/src/dlg_load_deck_from_clipboard.cpp @@ -32,7 +32,7 @@ DlgLoadDeckFromClipboard::DlgLoadDeckFromClipboard(QWidget *parent) : QDialog(pa resize(500, 500); actRefresh(); - connect(&settingsCache->shortcuts(), SIGNAL(shortCutchanged()), this, SLOT(refreshShortcuts())); + connect(&settingsCache->shortcuts(), SIGNAL(shortCutChanged()), this, SLOT(refreshShortcuts())); refreshShortcuts(); } diff --git a/cockatrice/src/gameview.cpp b/cockatrice/src/gameview.cpp index b96e5f5b..26f97550 100644 --- a/cockatrice/src/gameview.cpp +++ b/cockatrice/src/gameview.cpp @@ -22,7 +22,7 @@ GameView::GameView(QGraphicsScene *scene, QWidget *parent) : QGraphicsView(scene connect(aCloseMostRecentZoneView, SIGNAL(triggered()), scene, SLOT(closeMostRecentZoneView())); addAction(aCloseMostRecentZoneView); - connect(&settingsCache->shortcuts(), SIGNAL(shortCutchanged()), this, SLOT(refreshShortcuts())); + connect(&settingsCache->shortcuts(), SIGNAL(shortCutChanged()), this, SLOT(refreshShortcuts())); refreshShortcuts(); rubberBand = new QRubberBand(QRubberBand::Rectangle, this); } diff --git a/cockatrice/src/player.cpp b/cockatrice/src/player.cpp index 782bc3de..95a55152 100644 --- a/cockatrice/src/player.cpp +++ b/cockatrice/src/player.cpp @@ -24,7 +24,8 @@ #include #include #include -#include +#include +#include #include #include "pb/command_attach_card.pb.h" @@ -219,8 +220,12 @@ Player::Player(const ServerInfo_User &info, int _id, bool _local, TabGame *_pare connect(aMulligan, SIGNAL(triggered()), this, SLOT(actMulligan())); aMoveTopToPlayFaceDown = new QAction(this); connect(aMoveTopToPlayFaceDown, SIGNAL(triggered()), this, SLOT(actMoveTopCardToPlayFaceDown())); - aMoveTopCardsToGrave = new QAction(this); - connect(aMoveTopCardsToGrave, SIGNAL(triggered()), this, SLOT(actMoveTopCardsToGrave())); + aMoveTopCardToGraveyard = new QAction(this); + connect(aMoveTopCardToGraveyard, SIGNAL(triggered()), this, SLOT(actMoveTopCardToGrave())); + aMoveTopCardToExile = new QAction(this); + connect(aMoveTopCardToExile, SIGNAL(triggered()), this, SLOT(actMoveTopCardToExile())); + aMoveTopCardsToGraveyard = new QAction(this); + connect(aMoveTopCardsToGraveyard, SIGNAL(triggered()), this, SLOT(actMoveTopCardsToGrave())); aMoveTopCardsToExile = new QAction(this); connect(aMoveTopCardsToExile, SIGNAL(triggered()), this, SLOT(actMoveTopCardsToExile())); aMoveTopCardToBottom = new QAction(this); @@ -266,7 +271,9 @@ Player::Player(const ServerInfo_User &info, int _id, bool _local, TabGame *_pare libraryMenu->addAction(aMoveTopCardToBottom); libraryMenu->addAction(aMoveBottomCardToGrave); libraryMenu->addSeparator(); - libraryMenu->addAction(aMoveTopCardsToGrave); + libraryMenu->addAction(aMoveTopCardToGraveyard); + libraryMenu->addAction(aMoveTopCardToExile); + libraryMenu->addAction(aMoveTopCardsToGraveyard); libraryMenu->addAction(aMoveTopCardsToExile); libraryMenu->addSeparator(); libraryMenu->addAction(aOpenDeckInDeckEditor); @@ -449,7 +456,7 @@ Player::Player(const ServerInfo_User &info, int _id, bool _local, TabGame *_pare rearrangeZones(); retranslateUi(); - connect(&settingsCache->shortcuts(), SIGNAL(shortCutchanged()), this, SLOT(refreshShortcuts())); + connect(&settingsCache->shortcuts(), SIGNAL(shortCutChanged()), this, SLOT(refreshShortcuts())); refreshShortcuts(); } @@ -483,8 +490,9 @@ void Player::clear() void Player::addPlayer(Player *player) { - if (player == nullptr || player == this) + if (player == nullptr || player == this) { return; + } for (int i = 0; i < playerLists.size(); ++i) { QAction *newAction = playerLists[i]->addAction(player->getName()); @@ -495,8 +503,9 @@ void Player::addPlayer(Player *player) void Player::removePlayer(Player *player) { - if (player == nullptr) + if (player == nullptr) { return; + } for (int i = 0; i < playerLists.size(); ++i) { QList actionList = playerLists[i]->actions(); @@ -515,8 +524,9 @@ void Player::playerListActionTriggered() Command_RevealCards cmd; const int otherPlayerId = action->data().toInt(); - if (otherPlayerId != -1) + if (otherPlayerId != -1) { cmd.set_player_id(otherPlayerId); + } if (menu == mRevealLibrary) { cmd.set_zone_name("deck"); @@ -533,13 +543,14 @@ void Player::playerListActionTriggered() cmd.set_card_id(0); } - } else if (menu == mRevealHand) + } else if (menu == mRevealHand) { cmd.set_zone_name("hand"); - else if (menu == mRevealRandomHandCard) { + } else if (menu == mRevealRandomHandCard) { cmd.set_zone_name("hand"); cmd.set_card_id(RANDOM_CARD_FROM_ZONE); - } else + } else { return; + } sendGameCommand(cmd); } @@ -603,9 +614,10 @@ void Player::updateBoundingRect() if (settingsCache->getHorizontalHand()) { qreal handHeight = handVisible ? hand->boundingRect().height() : 0; bRect = QRectF(0, 0, width + table->boundingRect().width(), table->boundingRect().height() + handHeight); - } else + } else { bRect = QRectF(0, 0, width + hand->boundingRect().width() + table->boundingRect().width(), table->boundingRect().height()); + } playerArea->setSize(CARD_HEIGHT + counterAreaWidth + 15, bRect.height()); emit sizeChanged(); @@ -652,7 +664,9 @@ void Player::retranslateUi() aMulligan->setText(tr("Take &mulligan")); aShuffle->setText(tr("&Shuffle")); aMoveTopToPlayFaceDown->setText(tr("Play top card &face down")); - aMoveTopCardsToGrave->setText(tr("Move top cards to &graveyard...")); + aMoveTopCardToGraveyard->setText(tr("Move top card to grave&yard")); + aMoveTopCardToExile->setText(tr("Move top card to e&xile")); + aMoveTopCardsToGraveyard->setText(tr("Move top cards to &graveyard...")); aMoveTopCardsToExile->setText(tr("Move top cards to &exile...")); aMoveTopCardToBottom->setText(tr("Put top card on &bottom")); aMoveBottomCardToGrave->setText(tr("Put bottom card &in graveyard")); @@ -730,52 +744,54 @@ void Player::retranslateUi() aMoveToExile->setText(tr("&Exile")); QMapIterator zoneIterator(zones); - while (zoneIterator.hasNext()) + while (zoneIterator.hasNext()) { zoneIterator.next().value()->retranslateUi(); + } } void Player::setShortcutsActive() { shortcutsActive = true; + ShortcutsSettings &shortcuts = settingsCache->shortcuts(); - aPlay->setShortcuts(settingsCache->shortcuts().getShortcut("Player/aPlay")); - aTap->setShortcuts(settingsCache->shortcuts().getShortcut("Player/aTap")); - aDoesntUntap->setShortcuts(settingsCache->shortcuts().getShortcut("Player/aDoesntUntap")); - aFlip->setShortcuts(settingsCache->shortcuts().getShortcut("Player/aFlip")); - aPeek->setShortcuts(settingsCache->shortcuts().getShortcut("Player/aPeek")); - aClone->setShortcuts(settingsCache->shortcuts().getShortcut("Player/aClone")); - aAttach->setShortcuts(settingsCache->shortcuts().getShortcut("Player/aAttach")); - aUnattach->setShortcuts(settingsCache->shortcuts().getShortcut("Player/aUnattach")); - aDrawArrow->setShortcuts(settingsCache->shortcuts().getShortcut("Player/aDrawArrow")); - aIncP->setShortcuts(settingsCache->shortcuts().getShortcut("Player/IncP")); - aDecP->setShortcuts(settingsCache->shortcuts().getShortcut("Player/aDecP")); - aIncT->setShortcuts(settingsCache->shortcuts().getShortcut("Player/aIncT")); - aDecT->setShortcuts(settingsCache->shortcuts().getShortcut("Player/aDecT")); - aIncPT->setShortcuts(settingsCache->shortcuts().getShortcut("Player/aIncPT")); - aDecPT->setShortcuts(settingsCache->shortcuts().getShortcut("Player/aDecPT")); - aSetPT->setShortcuts(settingsCache->shortcuts().getShortcut("Player/aSetPT")); - aResetPT->setShortcuts(settingsCache->shortcuts().getShortcut("Player/aResetPT")); - aSetAnnotation->setShortcuts(settingsCache->shortcuts().getShortcut("Player/aSetAnnotation")); - aMoveToTopLibrary->setShortcuts(settingsCache->shortcuts().getShortcut("Player/aMoveToTopLibrary")); - aMoveToBottomLibrary->setShortcuts(settingsCache->shortcuts().getShortcut("Player/aMoveToBottomLibrary")); - aMoveToHand->setShortcuts(settingsCache->shortcuts().getShortcut("Player/aMoveToHand")); - aMoveToGraveyard->setShortcuts(settingsCache->shortcuts().getShortcut("Player/aMoveToGraveyard")); - aMoveToExile->setShortcuts(settingsCache->shortcuts().getShortcut("Player/aMoveToExile")); + aPlay->setShortcuts(shortcuts.getShortcut("Player/aPlay")); + aTap->setShortcuts(shortcuts.getShortcut("Player/aTap")); + aDoesntUntap->setShortcuts(shortcuts.getShortcut("Player/aDoesntUntap")); + aFlip->setShortcuts(shortcuts.getShortcut("Player/aFlip")); + aPeek->setShortcuts(shortcuts.getShortcut("Player/aPeek")); + aClone->setShortcuts(shortcuts.getShortcut("Player/aClone")); + aAttach->setShortcuts(shortcuts.getShortcut("Player/aAttach")); + aUnattach->setShortcuts(shortcuts.getShortcut("Player/aUnattach")); + aDrawArrow->setShortcuts(shortcuts.getShortcut("Player/aDrawArrow")); + aIncP->setShortcuts(shortcuts.getShortcut("Player/IncP")); + aDecP->setShortcuts(shortcuts.getShortcut("Player/aDecP")); + aIncT->setShortcuts(shortcuts.getShortcut("Player/aIncT")); + aDecT->setShortcuts(shortcuts.getShortcut("Player/aDecT")); + aIncPT->setShortcuts(shortcuts.getShortcut("Player/aIncPT")); + aDecPT->setShortcuts(shortcuts.getShortcut("Player/aDecPT")); + aSetPT->setShortcuts(shortcuts.getShortcut("Player/aSetPT")); + aResetPT->setShortcuts(shortcuts.getShortcut("Player/aResetPT")); + aSetAnnotation->setShortcuts(shortcuts.getShortcut("Player/aSetAnnotation")); + aMoveToTopLibrary->setShortcuts(shortcuts.getShortcut("Player/aMoveToTopLibrary")); + aMoveToBottomLibrary->setShortcuts(shortcuts.getShortcut("Player/aMoveToBottomLibrary")); + aMoveToHand->setShortcuts(shortcuts.getShortcut("Player/aMoveToHand")); + aMoveToGraveyard->setShortcuts(shortcuts.getShortcut("Player/aMoveToGraveyard")); + aMoveToExile->setShortcuts(shortcuts.getShortcut("Player/aMoveToExile")); QList addCCShortCuts; - addCCShortCuts.append(settingsCache->shortcuts().getSingleShortcut("Player/aCCRed")); - addCCShortCuts.append(settingsCache->shortcuts().getSingleShortcut("Player/aCCYellow")); - addCCShortCuts.append(settingsCache->shortcuts().getSingleShortcut("Player/aCCGreen")); + addCCShortCuts.append(shortcuts.getSingleShortcut("Player/aCCRed")); + addCCShortCuts.append(shortcuts.getSingleShortcut("Player/aCCYellow")); + addCCShortCuts.append(shortcuts.getSingleShortcut("Player/aCCGreen")); QList removeCCShortCuts; - removeCCShortCuts.append(settingsCache->shortcuts().getSingleShortcut("Player/aRCRed")); - removeCCShortCuts.append(settingsCache->shortcuts().getSingleShortcut("Player/aRCYellow")); - removeCCShortCuts.append(settingsCache->shortcuts().getSingleShortcut("Player/aRCGreen")); + removeCCShortCuts.append(shortcuts.getSingleShortcut("Player/aRCRed")); + removeCCShortCuts.append(shortcuts.getSingleShortcut("Player/aRCYellow")); + removeCCShortCuts.append(shortcuts.getSingleShortcut("Player/aRCGreen")); QList setCCShortCuts; - setCCShortCuts.append(settingsCache->shortcuts().getSingleShortcut("Player/aSCRed")); - setCCShortCuts.append(settingsCache->shortcuts().getSingleShortcut("Player/aSCYellow")); - setCCShortCuts.append(settingsCache->shortcuts().getSingleShortcut("Player/aSCGreen")); + setCCShortCuts.append(shortcuts.getSingleShortcut("Player/aSCRed")); + setCCShortCuts.append(shortcuts.getSingleShortcut("Player/aSCYellow")); + setCCShortCuts.append(shortcuts.getSingleShortcut("Player/aSCGreen")); for (int i = 0; i < aAddCounter.size(); ++i) { aAddCounter[i]->setShortcut(addCCShortCuts.at(i)); @@ -788,24 +804,29 @@ void Player::setShortcutsActive() } QMapIterator counterIterator(counters); - while (counterIterator.hasNext()) + while (counterIterator.hasNext()) { counterIterator.next().value()->setShortcutsActive(); + } - aViewSideboard->setShortcut(settingsCache->shortcuts().getSingleShortcut("Player/aViewSideboard")); - aViewLibrary->setShortcut(settingsCache->shortcuts().getSingleShortcut("Player/aViewLibrary")); - aViewTopCards->setShortcut(settingsCache->shortcuts().getSingleShortcut("Player/aViewTopCards")); - aViewGraveyard->setShortcut(settingsCache->shortcuts().getSingleShortcut("Player/aViewGraveyard")); - aDrawCard->setShortcut(settingsCache->shortcuts().getSingleShortcut("Player/aDrawCard")); - aDrawCards->setShortcut(settingsCache->shortcuts().getSingleShortcut("Player/aDrawCards")); - aUndoDraw->setShortcut(settingsCache->shortcuts().getSingleShortcut("Player/aUndoDraw")); - aMulligan->setShortcut(settingsCache->shortcuts().getSingleShortcut("Player/aMulligan")); - aShuffle->setShortcut(settingsCache->shortcuts().getSingleShortcut("Player/aShuffle")); - aUntapAll->setShortcut(settingsCache->shortcuts().getSingleShortcut("Player/aUntapAll")); - aRollDie->setShortcut(settingsCache->shortcuts().getSingleShortcut("Player/aRollDie")); - aCreateToken->setShortcut(settingsCache->shortcuts().getSingleShortcut("Player/aCreateToken")); - aCreateAnotherToken->setShortcut(settingsCache->shortcuts().getSingleShortcut("Player/aCreateAnotherToken")); - aAlwaysRevealTopCard->setShortcut(settingsCache->shortcuts().getSingleShortcut("Player/aAlwaysRevealTopCard")); - aMoveTopToPlayFaceDown->setShortcut(settingsCache->shortcuts().getSingleShortcut("Player/aMoveTopToPlayFaceDown")); + aViewSideboard->setShortcut(shortcuts.getSingleShortcut("Player/aViewSideboard")); + aViewLibrary->setShortcut(shortcuts.getSingleShortcut("Player/aViewLibrary")); + aViewTopCards->setShortcut(shortcuts.getSingleShortcut("Player/aViewTopCards")); + aViewGraveyard->setShortcut(shortcuts.getSingleShortcut("Player/aViewGraveyard")); + aDrawCard->setShortcut(shortcuts.getSingleShortcut("Player/aDrawCard")); + aDrawCards->setShortcut(shortcuts.getSingleShortcut("Player/aDrawCards")); + aUndoDraw->setShortcut(shortcuts.getSingleShortcut("Player/aUndoDraw")); + aMulligan->setShortcut(shortcuts.getSingleShortcut("Player/aMulligan")); + aShuffle->setShortcut(shortcuts.getSingleShortcut("Player/aShuffle")); + aUntapAll->setShortcut(shortcuts.getSingleShortcut("Player/aUntapAll")); + aRollDie->setShortcut(shortcuts.getSingleShortcut("Player/aRollDie")); + aCreateToken->setShortcut(shortcuts.getSingleShortcut("Player/aCreateToken")); + aCreateAnotherToken->setShortcut(shortcuts.getSingleShortcut("Player/aCreateAnotherToken")); + aAlwaysRevealTopCard->setShortcut(shortcuts.getSingleShortcut("Player/aAlwaysRevealTopCard")); + aMoveTopToPlayFaceDown->setShortcut(shortcuts.getSingleShortcut("Player/aMoveTopToPlayFaceDown")); + aMoveTopCardToGraveyard->setShortcut(shortcuts.getSingleShortcut("Player/aMoveTopCardToGraveyard")); + aMoveTopCardsToGraveyard->setShortcut(shortcuts.getSingleShortcut("Player/aMoveTopCardsToGraveyard")); + aMoveTopCardToExile->setShortcut(shortcuts.getSingleShortcut("Player/aMoveTopCardToExile")); + aMoveTopCardsToExile->setShortcut(shortcuts.getSingleShortcut("Player/aMoveTopCardsToExile")); } void Player::setShortcutsInactive() @@ -826,10 +847,16 @@ void Player::setShortcutsInactive() aCreateToken->setShortcut(QKeySequence()); aCreateAnotherToken->setShortcut(QKeySequence()); aAlwaysRevealTopCard->setShortcut(QKeySequence()); + aMoveTopToPlayFaceDown->setShortcut(QKeySequence()); + aMoveTopCardToGraveyard->setShortcut(QKeySequence()); + aMoveTopCardsToGraveyard->setShortcut(QKeySequence()); + aMoveTopCardToExile->setShortcut(QKeySequence()); + aMoveTopCardsToExile->setShortcut(QKeySequence()); QMapIterator counterIterator(counters); - while (counterIterator.hasNext()) + while (counterIterator.hasNext()) { counterIterator.next().value()->setShortcutsInactive(); + } } void Player::initSayMenu() @@ -838,7 +865,7 @@ void Player::initSayMenu() int count = settingsCache->messages().getCount(); - for (int i = 0; i < count; i++) { + for (int i = 0; i < count; ++i) { QAction *newAction = new QAction(settingsCache->messages().getMessageAt(i), this); if (i <= 10) { newAction->setShortcut(QKeySequence("Ctrl+" + QString::number((i + 1) % 10))); @@ -909,8 +936,9 @@ void Player::actRevealRandomGraveyardCard() Command_RevealCards cmd; QAction *action = dynamic_cast(sender()); const int otherPlayerId = action->data().toInt(); - if (otherPlayerId != -1) + if (otherPlayerId != -1) { cmd.set_player_id(otherPlayerId); + } cmd.set_zone_name("grave"); cmd.set_card_id(RANDOM_CARD_FROM_ZONE); sendGameCommand(cmd); @@ -958,15 +986,51 @@ void Player::actUndoDraw() sendGameCommand(Command_UndoDraw()); } +void Player::actMoveTopCardToGrave() +{ + if (zones.value("deck")->getCards().size() == 0) { + return; + } + + Command_MoveCard cmd; + cmd.set_start_zone("deck"); + cmd.mutable_cards_to_move()->add_card()->set_card_id(0); + cmd.set_target_player_id(getId()); + cmd.set_target_zone("grave"); + cmd.set_x(0); + cmd.set_y(0); + + sendGameCommand(cmd); +} + +void Player::actMoveTopCardToExile() +{ + if (zones.value("deck")->getCards().size() == 0) { + return; + } + + Command_MoveCard cmd; + cmd.set_start_zone("deck"); + cmd.mutable_cards_to_move()->add_card()->set_card_id(0); + cmd.set_target_player_id(getId()); + cmd.set_target_zone("rfg"); + cmd.set_x(0); + cmd.set_y(0); + + sendGameCommand(cmd); +} + void Player::actMoveTopCardsToGrave() { int number = QInputDialog::getInt(0, tr("Move top cards to grave"), tr("Number:")); - if (!number) + if (!number) { return; + } const int maxCards = zones.value("deck")->getCards().size(); - if (number > maxCards) + if (number > maxCards) { number = maxCards; + } Command_MoveCard cmd; cmd.set_start_zone("deck"); @@ -975,8 +1039,9 @@ void Player::actMoveTopCardsToGrave() cmd.set_x(0); cmd.set_y(0); - for (int i = 0; i < number; ++i) + for (int i = 0; i < number; ++i) { cmd.mutable_cards_to_move()->add_card()->set_card_id(i); + } sendGameCommand(cmd); } @@ -984,12 +1049,14 @@ void Player::actMoveTopCardsToGrave() void Player::actMoveTopCardsToExile() { int number = QInputDialog::getInt(0, tr("Move top cards to exile"), tr("Number:")); - if (!number) + if (!number) { return; + } const int maxCards = zones.value("deck")->getCards().size(); - if (number > maxCards) + if (number > maxCards) { number = maxCards; + } Command_MoveCard cmd; cmd.set_start_zone("deck"); @@ -998,8 +1065,9 @@ void Player::actMoveTopCardsToExile() cmd.set_x(0); cmd.set_y(0); - for (int i = 0; i < number; ++i) + for (int i = 0; i < number; ++i) { cmd.mutable_cards_to_move()->add_card()->set_card_id(i); + } sendGameCommand(cmd); } @@ -1071,8 +1139,9 @@ void Player::actRollDie() void Player::actCreateToken() { DlgCreateToken dlg(predefinedTokens); - if (!dlg.exec()) + if (!dlg.exec()) { return; + } lastTokenName = dlg.getName(); lastTokenPT = dlg.getPT(); @@ -1080,8 +1149,9 @@ void Player::actCreateToken() if (correctedCard) { lastTokenName = correctedCard->getName(); lastTokenTableRow = table->clampValidTableRow(2 - correctedCard->getTableRow()); - if (lastTokenPT.isEmpty()) + if (lastTokenPT.isEmpty()) { lastTokenPT = correctedCard->getPowTough(); + } } lastTokenColor = dlg.getColor(); lastTokenAnnotation = dlg.getAnnotation(); @@ -1093,8 +1163,9 @@ void Player::actCreateToken() void Player::actCreateAnotherToken() { - if (lastTokenName.isEmpty()) + if (lastTokenName.isEmpty()) { return; + } Command_CreateToken cmd; cmd.set_zone("table"); @@ -1113,8 +1184,9 @@ void Player::actCreatePredefinedToken() { QAction *action = static_cast(sender()); CardInfoPtr cardInfo = db->getCard(action->text()); - if (!cardInfo) + if (!cardInfo) { return; + } setLastToken(cardInfo); @@ -1124,8 +1196,9 @@ void Player::actCreatePredefinedToken() void Player::actCreateRelatedCard() { CardItem *sourceCard = game->getActiveCard(); - if (!sourceCard) + if (!sourceCard) { return; + } QAction *action = static_cast(sender()); // If there is a better way of passing a CardRelation through a QAction, please add it here. QList relatedCards = QList(); @@ -1146,70 +1219,70 @@ void Player::actCreateRelatedCard() void Player::actCreateAllRelatedCards() { CardItem *sourceCard = game->getActiveCard(); - if (!sourceCard) + if (!sourceCard) { return; + } - QList relatedCards = QList(); - relatedCards.append(sourceCard->getInfo()->getRelatedCards()); + QList relatedCards = sourceCard->getInfo()->getRelatedCards(); relatedCards.append(sourceCard->getInfo()->getReverseRelatedCards2Me()); + if (relatedCards.empty()) { + return; + } - QList nonExcludedRelatedCards = QList(); - QString dbName; CardRelation *cardRelation = nullptr; int tokensTypesCreated = 0; - switch (relatedCards.length()) { // Is an if/elseif/else pattern better? - case 0: // if (relatedCards.length() == 0) - return; - case 1: // else if (relatedCards.length() == 1) - cardRelation = relatedCards.at(0); - if (createRelatedFromRelation(sourceCard, cardRelation)) - tokensTypesCreated++; - break; - default: // else - foreach (CardRelation *cardRelationTemp, relatedCards) { - if (!cardRelationTemp->getIsCreateAllExclusion() && !cardRelationTemp->getDoesAttach()) { - nonExcludedRelatedCards.append(cardRelationTemp); + if (relatedCards.length() == 1) { + cardRelation = relatedCards.at(0); + if (createRelatedFromRelation(sourceCard, cardRelation)) { + ++tokensTypesCreated; + } + } else { + QList nonExcludedRelatedCards; + QString dbName; + for (CardRelation *cardRelationTemp : relatedCards) { + if (!cardRelationTemp->getIsCreateAllExclusion() && !cardRelationTemp->getDoesAttach()) { + nonExcludedRelatedCards.append(cardRelationTemp); + } + } + switch (nonExcludedRelatedCards.length()) { + case 1: // if nonExcludedRelatedCards == 1 + cardRelation = nonExcludedRelatedCards.at(0); + if (createRelatedFromRelation(sourceCard, cardRelation)) { + ++tokensTypesCreated; } - } - switch (nonExcludedRelatedCards.length()) { - case 1: // if nonExcludedRelatedCards == 1 - cardRelation = nonExcludedRelatedCards.at(0); - if (createRelatedFromRelation(sourceCard, cardRelation)) - tokensTypesCreated++; - break; - // If all are marked "Exclude", then treat the situation as if none of them are. - // We won't accept "garbage in, garbage out", here. - case 0: // else if nonExcludedRelatedCards == 0 - foreach (CardRelation *cardRelationAll, relatedCards) { - if (!cardRelationAll->getDoesAttach() && !cardRelationAll->getIsVariable()) { - dbName = dbNameFromTokenDisplayName(cardRelationAll->getName()); - for (int i = 0; i < cardRelationAll->getDefaultCount(); i++) { - createCard(sourceCard, dbName); - } - tokensTypesCreated++; - if (tokensTypesCreated == 1) { - cardRelation = cardRelationAll; - } + break; + // If all are marked "Exclude", then treat the situation as if none of them are. + // We won't accept "garbage in, garbage out", here. + case 0: // else if nonExcludedRelatedCards == 0 + for (CardRelation *cardRelationAll : relatedCards) { + if (!cardRelationAll->getDoesAttach() && !cardRelationAll->getIsVariable()) { + dbName = dbNameFromTokenDisplayName(cardRelationAll->getName()); + for (int i = 0; i < cardRelationAll->getDefaultCount(); ++i) { + createCard(sourceCard, dbName); + } + ++tokensTypesCreated; + if (tokensTypesCreated == 1) { + cardRelation = cardRelationAll; } } - break; - default: // else - foreach (CardRelation *cardRelationNotExcluded, nonExcludedRelatedCards) { - if (!cardRelationNotExcluded->getDoesAttach() && !cardRelationNotExcluded->getIsVariable()) { - dbName = dbNameFromTokenDisplayName(cardRelationNotExcluded->getName()); - for (int i = 0; i < cardRelationNotExcluded->getDefaultCount(); i++) { - createCard(sourceCard, dbName); - } - tokensTypesCreated++; - if (tokensTypesCreated == 1) { - cardRelation = cardRelationNotExcluded; - } + } + break; + default: // else + for (CardRelation *cardRelationNotExcluded : nonExcludedRelatedCards) { + if (!cardRelationNotExcluded->getDoesAttach() && !cardRelationNotExcluded->getIsVariable()) { + dbName = dbNameFromTokenDisplayName(cardRelationNotExcluded->getName()); + for (int i = 0; i < cardRelationNotExcluded->getDefaultCount(); ++i) { + createCard(sourceCard, dbName); + } + ++tokensTypesCreated; + if (tokensTypesCreated == 1) { + cardRelation = cardRelationNotExcluded; } } - break; - } - break; + } + break; + } } /* @@ -1224,8 +1297,9 @@ void Player::actCreateAllRelatedCards() bool Player::createRelatedFromRelation(const CardItem *sourceCard, const CardRelation *cardRelation) { - if (sourceCard == nullptr || cardRelation == nullptr) + if (sourceCard == nullptr || cardRelation == nullptr) { return false; + } QString dbName = dbNameFromTokenDisplayName(cardRelation->getName()); if (cardRelation->getIsVariable()) { bool ok; @@ -1233,13 +1307,14 @@ bool Player::createRelatedFromRelation(const CardItem *sourceCard, const CardRel int count = QInputDialog::getInt(0, tr("Create tokens"), tr("Number:"), cardRelation->getDefaultCount(), 1, MAX_TOKENS_PER_DIALOG, 1, &ok); dialogSemaphore = false; - if (!ok) + if (!ok) { return false; - for (int i = 0; i < count; i++) { + } + for (int i = 0; i < count; ++i) { createCard(sourceCard, dbName); } } else if (cardRelation->getDefaultCount() > 1) { - for (int i = 0; i < cardRelation->getDefaultCount(); i++) { + for (int i = 0; i < cardRelation->getDefaultCount(); ++i) { createCard(sourceCard, dbName); } } else { @@ -1256,8 +1331,9 @@ void Player::createCard(const CardItem *sourceCard, const QString &dbCardName, b { CardInfoPtr cardInfo = db->getCard(dbCardName); - if (cardInfo == nullptr || sourceCard == nullptr) + if (cardInfo == nullptr || sourceCard == nullptr) { return; + } // get the target token's location // TODO: Define this QPoint into its own function along with the one below @@ -1268,20 +1344,28 @@ void Player::createCard(const CardItem *sourceCard, const QString &dbCardName, b cmd.set_zone("table"); cmd.set_card_name(cardInfo->getName().toStdString()); if (cardInfo->getColors().length() > 1) // Multicoloured + { cmd.set_color("m"); - else - cmd.set_color(cardInfo->getColors().isEmpty() ? QString().toStdString() - : cardInfo->getColors().first().toLower().toStdString()); + } else if (cardInfo->getColors().isEmpty()) { + cmd.set_color(""); + } else { + cmd.set_color(cardInfo->getColors().first().toLower().toStdString()); + } + cmd.set_pt(cardInfo->getPowTough().toStdString()); - cmd.set_annotation(settingsCache->getAnnotateTokens() ? cardInfo->getText().toStdString() - : QString().toStdString()); + if (settingsCache->getAnnotateTokens()) { + cmd.set_annotation(cardInfo->getText().toStdString()); + } else { + cmd.set_annotation(""); + } cmd.set_destroy_on_zone_change(true); cmd.set_target_zone(sourceCard->getZone()->getName().toStdString()); cmd.set_x(gridPoint.x()); cmd.set_y(gridPoint.y()); - if (attach) + if (attach) { cmd.set_target_card_id(sourceCard->getId()); + } sendGameCommand(cmd); } @@ -1305,29 +1389,34 @@ void Player::setCardAttrHelper(const GameEventContext &context, const QString &avalue, bool allCards) { - if (card == nullptr) + if (card == nullptr) { return; + } bool moveCardContext = context.HasExtension(Context_MoveCard::ext); switch (attribute) { case AttrTapped: { bool tapped = avalue == "1"; if (!(!tapped && card->getDoesntUntap() && allCards)) { - if (!allCards) + if (!allCards) { emit logSetTapped(this, card, tapped); + } card->setTapped(tapped, !moveCardContext); } break; } - case AttrAttacking: + case AttrAttacking: { card->setAttacking(avalue == "1"); break; - case AttrFaceDown: + } + case AttrFaceDown: { card->setFaceDown(avalue == "1"); break; - case AttrColor: + } + case AttrColor: { card->setColor(avalue); break; + } case AttrAnnotation: { emit logSetAnnotation(this, card, avalue); card->setAnnotation(avalue); @@ -1352,11 +1441,10 @@ void Player::setCardAttrHelper(const GameEventContext &context, // trailing whitespace is significant; it is hacked on at the end as an additional identifier in our single key database QString Player::dbNameFromTokenDisplayName(const QString &tokenName) { - QRegExp tokenNamePattern(".*/\\S+\\s+(.*)"); - - int index = tokenNamePattern.indexIn(tokenName); - if (index != -1) { - return tokenNamePattern.capturedTexts()[1]; + QRegularExpression tokenNamePattern(".*/\\S+\\s+(.*)"); + QRegularExpressionMatch match = tokenNamePattern.match(tokenName); + if (match.hasMatch()) { + return match.captured(1); } else if (tokenName.indexOf(tr("Token: ")) != -1) { return tokenName.mid(tr("Token: ").length()); } else { @@ -1372,11 +1460,12 @@ void Player::eventGameSay(const Event_GameSay &event) void Player::eventShuffle(const Event_Shuffle &event) { CardZone *zone = zones.value(QString::fromStdString(event.zone_name())); - if (!zone) + if (!zone) { return; - if (zone->getView()) - if (zone->getView()->getRevealZone()) - zone->getView()->setWriteableRevealZone(false); + } + if (zone->getView() && zone->getView()->getRevealZone()) { + zone->getView()->setWriteableRevealZone(false); + } emit logShuffle(this, zone); } @@ -1388,17 +1477,19 @@ void Player::eventRollDie(const Event_RollDie &event) void Player::eventCreateArrow(const Event_CreateArrow &event) { ArrowItem *arrow = addArrow(event.arrow_info()); - if (!arrow) + if (!arrow) { return; + } CardItem *startCard = static_cast(arrow->getStartItem()); CardItem *targetCard = qgraphicsitem_cast(arrow->getTargetItem()); - if (targetCard) + if (targetCard) { emit logCreateArrow(this, startCard->getOwner(), startCard->getName(), targetCard->getOwner(), targetCard->getName(), false); - else + } else { emit logCreateArrow(this, startCard->getOwner(), startCard->getName(), arrow->getTargetItem()->getOwner(), QString(), true); + } } void Player::eventDeleteArrow(const Event_DeleteArrow &event) @@ -1409,8 +1500,9 @@ void Player::eventDeleteArrow(const Event_DeleteArrow &event) void Player::eventCreateToken(const Event_CreateToken &event) { CardZone *zone = zones.value(QString::fromStdString(event.zone_name()), 0); - if (!zone) + if (!zone) { return; + } CardItem *card = new CardItem(this, QString::fromStdString(event.card_name()), event.card_id()); // use db PT if not provided in event @@ -1418,8 +1510,9 @@ void Player::eventCreateToken(const Event_CreateToken &event) card->setPT(QString::fromStdString(event.pt())); } else { CardInfoPtr dbCard = db->getCard(QString::fromStdString(event.card_name())); - if (dbCard) + if (dbCard) { card->setPT(dbCard->getPowTough()); + } } card->setColor(QString::fromStdString(event.color())); card->setAnnotation(QString::fromStdString(event.annotation())); @@ -1432,16 +1525,19 @@ void Player::eventCreateToken(const Event_CreateToken &event) void Player::eventSetCardAttr(const Event_SetCardAttr &event, const GameEventContext &context) { CardZone *zone = zones.value(QString::fromStdString(event.zone_name()), 0); - if (!zone) + if (!zone) { return; + } if (!event.has_card_id()) { const CardList &cards = zone->getCards(); - for (int i = 0; i < cards.size(); i++) + for (int i = 0; i < cards.size(); ++i) { setCardAttrHelper(context, cards.at(i), event.attribute(), QString::fromStdString(event.attr_value()), true); - if (event.attribute() == AttrTapped) + } + if (event.attribute() == AttrTapped) { emit logSetTapped(this, 0, event.attr_value() == "1"); + } } else { CardItem *card = zone->getCard(event.card_id(), QString()); if (!card) { @@ -1455,12 +1551,14 @@ void Player::eventSetCardAttr(const Event_SetCardAttr &event, const GameEventCon void Player::eventSetCardCounter(const Event_SetCardCounter &event) { CardZone *zone = zones.value(QString::fromStdString(event.zone_name()), 0); - if (!zone) + if (!zone) { return; + } CardItem *card = zone->getCard(event.card_id(), QString()); - if (!card) + if (!card) { return; + } int oldValue = card->getCounters().value(event.counter_id(), 0); card->setCounter(event.counter_id(), event.counter_value()); @@ -1474,12 +1572,12 @@ void Player::eventCreateCounter(const Event_CreateCounter &event) void Player::eventSetCounter(const Event_SetCounter &event) { - AbstractCounter *c = counters.value(event.counter_id(), 0); - if (!c) + AbstractCounter *ctr = counters.value(event.counter_id(), 0); + if (!ctr) return; - int oldValue = c->getValue(); - c->setValue(event.value()); - emit logSetCounter(this, c->getName(), event.value(), oldValue); + int oldValue = ctr->getValue(); + ctr->setValue(event.value()); + emit logSetCounter(this, ctr->getName(), event.value(), oldValue); } void Player::eventDelCounter(const Event_DelCounter &event) @@ -1490,41 +1588,49 @@ void Player::eventDelCounter(const Event_DelCounter &event) void Player::eventDumpZone(const Event_DumpZone &event) { Player *zoneOwner = game->getPlayers().value(event.zone_owner_id(), 0); - if (!zoneOwner) + if (!zoneOwner) { return; + } CardZone *zone = zoneOwner->getZones().value(QString::fromStdString(event.zone_name()), 0); - if (!zone) + if (!zone) { return; + } emit logDumpZone(this, zone, event.number_cards()); } void Player::eventStopDumpZone(const Event_StopDumpZone &event) { Player *zoneOwner = game->getPlayers().value(event.zone_owner_id(), 0); - if (!zoneOwner) + if (!zoneOwner) { return; + } CardZone *zone = zoneOwner->getZones().value(QString::fromStdString(event.zone_name()), 0); - if (!zone) + if (!zone) { return; + } emit logStopDumpZone(this, zone); } void Player::eventMoveCard(const Event_MoveCard &event, const GameEventContext &context) { Player *startPlayer = game->getPlayers().value(event.start_player_id()); - if (!startPlayer) + if (!startPlayer) { return; + } CardZone *startZone = startPlayer->getZones().value(QString::fromStdString(event.start_zone()), 0); Player *targetPlayer = game->getPlayers().value(event.target_player_id()); - if (!targetPlayer) + if (!targetPlayer) { return; + } CardZone *targetZone; - if (event.has_target_zone()) + if (event.has_target_zone()) { targetZone = targetPlayer->getZones().value(QString::fromStdString(event.target_zone()), 0); - else + } else { targetZone = startZone; - if (!startZone || !targetZone) + } + if (!startZone || !targetZone) { return; + } int position = event.position(); int x = event.x(); @@ -1532,15 +1638,19 @@ void Player::eventMoveCard(const Event_MoveCard &event, const GameEventContext & int logPosition = position; int logX = x; - if (x == -1) + if (x == -1) { x = 0; + } CardItem *card = startZone->takeCard(position, event.card_id(), startZone != targetZone); - if (!card) + if (!card) { return; - if (startZone != targetZone) + } + if (startZone != targetZone) { card->deleteCardInfoPopup(); - if (event.has_card_name()) + } + if (event.has_card_name()) { card->setName(QString::fromStdString(event.card_name())); + } if (card->getAttachedTo() && (startZone != targetZone)) { CardItem *parentCard = card->getAttachedTo(); @@ -1557,19 +1667,22 @@ void Player::eventMoveCard(const Event_MoveCard &event, const GameEventContext & card->setHovered(false); const QList &attachedCards = card->getAttachedCards(); - for (int i = 0; i < attachedCards.size(); ++i) + for (int i = 0; i < attachedCards.size(); ++i) { attachedCards[i]->setParentItem(targetZone); + } - if (startZone->getPlayer() != targetZone->getPlayer()) + if (startZone->getPlayer() != targetZone->getPlayer()) { card->setOwner(targetZone->getPlayer()); + } } // The log event has to be sent before the card is added to the target zone // because the addCard function can modify the card object. - if (context.HasExtension(Context_UndoDraw::ext)) + if (context.HasExtension(Context_UndoDraw::ext)) { emit logUndoDraw(this, card->getName()); - else + } else { emit logMoveCard(this, card, startZone, logPosition, targetZone, logX); + } targetZone->addCard(card, true, x, y); @@ -1584,25 +1697,29 @@ void Player::eventMoveCard(const Event_MoveCard &event, const GameEventContext & while (arrowIterator.hasNext()) { ArrowItem *arrow = arrowIterator.next().value(); if ((arrow->getStartItem() == card) || (arrow->getTargetItem() == card)) { - if (startZone == targetZone) + if (startZone == targetZone) { arrow->updatePath(); - else + } else { arrowsToDelete.append(arrow); + } } } - for (int i = 0; i < arrowsToDelete.size(); ++i) + for (int i = 0; i < arrowsToDelete.size(); ++i) { arrowsToDelete[i]->delArrow(); + } } } void Player::eventFlipCard(const Event_FlipCard &event) { CardZone *zone = zones.value(QString::fromStdString(event.zone_name()), 0); - if (!zone) + if (!zone) { return; + } CardItem *card = zone->getCard(event.card_id(), QString::fromStdString(event.card_name())); - if (!card) + if (!card) { return; + } emit logFlipCard(this, card->getName(), event.face_down()); card->setFaceDown(event.face_down()); } @@ -1610,17 +1727,20 @@ void Player::eventFlipCard(const Event_FlipCard &event) void Player::eventDestroyCard(const Event_DestroyCard &event) { CardZone *zone = zones.value(QString::fromStdString(event.zone_name()), 0); - if (!zone) + if (!zone) { return; + } CardItem *card = zone->getCard(event.card_id(), QString()); - if (!card) + if (!card) { return; + } QList attachedCards = card->getAttachedCards(); // This list is always empty except for buggy server implementations. - for (int i = 0; i < attachedCards.size(); ++i) + for (int i = 0; i < attachedCards.size(); ++i) { attachedCards[i]->setAttachedTo(0); + } emit logDestroyCard(this, card->getName()); zone->takeCard(-1, event.card_id(), true); @@ -1637,33 +1757,39 @@ void Player::eventAttachCard(const Event_AttachCard &event) targetPlayer = playerList.value(event.target_player_id(), 0); if (targetPlayer) { targetZone = targetPlayer->getZones().value(QString::fromStdString(event.target_zone()), 0); - if (targetZone) + if (targetZone) { targetCard = targetZone->getCard(event.target_card_id(), QString()); + } } } CardZone *startZone = getZones().value(QString::fromStdString(event.start_zone()), 0); - if (!startZone) + if (!startZone) { return; + } CardItem *startCard = startZone->getCard(event.card_id(), QString()); - if (!startCard) + if (!startCard) { return; + } CardItem *oldParent = startCard->getAttachedTo(); startCard->setAttachedTo(targetCard); startZone->reorganizeCards(); - if ((startZone != targetZone) && targetZone) + if ((startZone != targetZone) && targetZone) { targetZone->reorganizeCards(); - if (oldParent) + } + if (oldParent) { oldParent->getZone()->reorganizeCards(); + } - if (targetCard) + if (targetCard) { emit logAttachCard(this, startCard->getName(), targetPlayer, targetCard->getName()); - else + } else { emit logUnattachCard(this, startCard->getName()); + } } void Player::eventDrawCards(const Event_DrawCards &event) @@ -1681,8 +1807,9 @@ void Player::eventDrawCards(const Event_DrawCards &event) } } else { const int number = event.number(); - for (int i = 0; i < number; ++i) + for (int i = 0; i < number; ++i) { hand->addCard(deck->takeCard(0, -1), false, -1); + } } hand->reorganizeCards(); @@ -1693,13 +1820,15 @@ void Player::eventDrawCards(const Event_DrawCards &event) void Player::eventRevealCards(const Event_RevealCards &event) { CardZone *zone = zones.value(QString::fromStdString(event.zone_name())); - if (!zone) + if (!zone) { return; + } Player *otherPlayer = 0; if (event.has_other_player_id()) { otherPlayer = game->getPlayers().value(event.other_player_id()); - if (!otherPlayer) + if (!otherPlayer) { return; + } } bool peeking = false; @@ -1707,8 +1836,9 @@ void Player::eventRevealCards(const Event_RevealCards &event) const int cardListSize = event.cards_size(); for (int i = 0; i < cardListSize; ++i) { const ServerInfo_Card *temp = &event.cards(i); - if (temp->face_down()) + if (temp->face_down()) { peeking = true; + } cardList.append(temp); } @@ -1716,8 +1846,9 @@ void Player::eventRevealCards(const Event_RevealCards &event) for (int i = 0; i < cardList.size(); ++i) { QString cardName = QString::fromStdString(cardList.at(i)->name()); CardItem *card = zone->getCard(cardList.at(i)->id(), QString()); - if (!card) + if (!card) { continue; + } card->setName(cardName); emit logRevealCards(this, zone, cardList.at(i)->id(), cardName, this, true); } @@ -1732,8 +1863,9 @@ void Player::eventRevealCards(const Event_RevealCards &event) showZoneView = false; } } - if (showZoneView && !cardList.isEmpty()) + if (showZoneView && !cardList.isEmpty()) { static_cast(scene())->addRevealedZoneView(this, zone, cardList, event.grant_write_access()); + } emit logRevealCards(this, zone, event.card_id(), cardName, otherPlayer, false); } @@ -1742,8 +1874,9 @@ void Player::eventRevealCards(const Event_RevealCards &event) void Player::eventChangeZoneProperties(const Event_ChangeZoneProperties &event) { CardZone *zone = zones.value(QString::fromStdString(event.zone_name())); - if (!zone) + if (!zone) { return; + } if (event.has_always_reveal_top_card()) { zone->setAlwaysRevealTopCard(event.always_reveal_top_card()); @@ -1842,20 +1975,23 @@ void Player::processPlayerInfo(const ServerInfo_Player &info) clearArrows(); QMapIterator zoneIt(zones); - while (zoneIt.hasNext()) + while (zoneIt.hasNext()) { zoneIt.next().value()->clearContents(); + } const int zoneListSize = info.zone_list_size(); for (int i = 0; i < zoneListSize; ++i) { const ServerInfo_Zone &zoneInfo = info.zone_list(i); CardZone *zone = zones.value(QString::fromStdString(zoneInfo.name()), 0); - if (!zone) + if (!zone) { continue; + } const int cardListSize = zoneInfo.card_list_size(); if (!cardListSize) { - for (int j = 0; j < zoneInfo.card_count(); ++j) + for (int j = 0; j < zoneInfo.card_count(); ++j) { zone->addCard(new CardItem(this), false, -1); + } } else { for (int j = 0; j < cardListSize; ++j) { const ServerInfo_Card &cardInfo = zoneInfo.card_list(j); @@ -1864,15 +2000,17 @@ void Player::processPlayerInfo(const ServerInfo_Player &info) zone->addCard(card, false, cardInfo.x(), cardInfo.y()); } } - if (zoneInfo.has_always_reveal_top_card()) + if (zoneInfo.has_always_reveal_top_card()) { zone->setAlwaysRevealTopCard(zoneInfo.always_reveal_top_card()); + } zone->reorganizeCards(); } const int counterListSize = info.counter_list_size(); - for (int i = 0; i < counterListSize; ++i) + for (int i = 0; i < counterListSize; ++i) { addCounter(info.counter_list(i)); + } setConceded(info.properties().conceded()); } @@ -1883,8 +2021,9 @@ void Player::processCardAttachment(const ServerInfo_Player &info) for (int i = 0; i < zoneListSize; ++i) { const ServerInfo_Zone &zoneInfo = info.zone_list(i); CardZone *zone = zones.value(QString::fromStdString(zoneInfo.name()), 0); - if (!zone) + if (!zone) { continue; + } const int cardListSize = zoneInfo.card_list_size(); for (int j = 0; j < cardListSize; ++j) { @@ -1894,8 +2033,9 @@ void Player::processCardAttachment(const ServerInfo_Player &info) CardItem *targetCard = game->getCard(cardInfo.attach_player_id(), QString::fromStdString(cardInfo.attach_zone()), cardInfo.attach_card_id()); - if (!targetCard) + if (!targetCard) { continue; + } startCard->setAttachedTo(targetCard); } @@ -1903,36 +2043,39 @@ void Player::processCardAttachment(const ServerInfo_Player &info) } const int arrowListSize = info.arrow_list_size(); - for (int i = 0; i < arrowListSize; ++i) + for (int i = 0; i < arrowListSize; ++i) { addArrow(info.arrow_list(i)); + } } -void Player::playCard(CardItem *c, bool faceDown, bool tapped) +void Player::playCard(CardItem *card, bool faceDown, bool tapped) { - if (c == nullptr) + if (card == nullptr) { return; + } Command_MoveCard cmd; - cmd.set_start_player_id(c->getZone()->getPlayer()->getId()); - cmd.set_start_zone(c->getZone()->getName().toStdString()); + cmd.set_start_player_id(card->getZone()->getPlayer()->getId()); + cmd.set_start_zone(card->getZone()->getName().toStdString()); cmd.set_target_player_id(getId()); CardToMove *cardToMove = cmd.mutable_cards_to_move()->add_card(); - cardToMove->set_card_id(c->getId()); + cardToMove->set_card_id(card->getId()); - CardInfoPtr ci = c->getInfo(); - if (!ci) + CardInfoPtr info = card->getInfo(); + if (!info) { return; - if (!faceDown && ((!settingsCache->getPlayToStack() && ci->getTableRow() == 3) || - ((settingsCache->getPlayToStack() && ci->getTableRow() != 0) && - c->getZone()->getName().toStdString() != "stack"))) { + } + if (!faceDown && ((!settingsCache->getPlayToStack() && info->getTableRow() == 3) || + ((settingsCache->getPlayToStack() && info->getTableRow() != 0) && + card->getZone()->getName().toStdString() != "stack"))) { cmd.set_target_zone("stack"); cmd.set_x(0); cmd.set_y(0); } else { - int tableRow = faceDown ? 2 : ci->getTableRow(); + int tableRow = faceDown ? 2 : info->getTableRow(); QPoint gridPoint = QPoint(-1, table->clampValidTableRow(2 - tableRow)); cardToMove->set_face_down(faceDown); - cardToMove->set_pt(ci->getPowTough().toStdString()); + cardToMove->set_pt(info->getPowTough().toStdString()); cardToMove->set_tapped(faceDown ? false : tapped); if (tableRow != 3) cmd.set_target_zone("table"); @@ -1942,25 +2085,25 @@ void Player::playCard(CardItem *c, bool faceDown, bool tapped) sendGameCommand(cmd); } -void Player::addCard(CardItem *c) +void Player::addCard(CardItem *card) { - emit newCardAdded(c); + emit newCardAdded(card); } -void Player::deleteCard(CardItem *c) +void Player::deleteCard(CardItem *card) { - if (c == nullptr) { + if (card == nullptr) { return; } else if (dialogSemaphore) { - cardsToDelete.append(c); + cardsToDelete.append(card); } else { - c->deleteLater(); + card->deleteLater(); } } -void Player::addZone(CardZone *z) +void Player::addZone(CardZone *zone) { - zones.insert(z->getName(), z); + zones.insert(zone->getName(), zone); } AbstractCounter *Player::addCounter(const ServerInfo_Counter &counter) @@ -1972,30 +2115,35 @@ AbstractCounter *Player::addCounter(const ServerInfo_Counter &counter) AbstractCounter *Player::addCounter(int counterId, const QString &name, QColor color, int radius, int value) { qDebug() << "addCounter:" << getName() << counterId << name; - if (counters.contains(counterId)) + if (counters.contains(counterId)) { return 0; + } - AbstractCounter *c; - if (name == "life") - c = playerTarget->addCounter(counterId, name, value); - else - c = new GeneralCounter(this, counterId, name, color, radius, value, true, this); - counters.insert(counterId, c); - if (countersMenu) - countersMenu->addMenu(c->getMenu()); - if (shortcutsActive) - c->setShortcutsActive(); + AbstractCounter *ctr; + if (name == "life") { + ctr = playerTarget->addCounter(counterId, name, value); + } else { + ctr = new GeneralCounter(this, counterId, name, color, radius, value, true, this); + } + counters.insert(counterId, ctr); + if (countersMenu) { + countersMenu->addMenu(ctr->getMenu()); + } + if (shortcutsActive) { + ctr->setShortcutsActive(); + } rearrangeCounters(); - return c; + return ctr; } void Player::delCounter(int counterId) { - AbstractCounter *c = counters.value(counterId, 0); - if (!c) + AbstractCounter *ctr = counters.value(counterId, 0); + if (!ctr) { return; + } - c->delCounter(); + ctr->delCounter(); counters.remove(counterId); rearrangeCounters(); } @@ -2003,8 +2151,9 @@ void Player::delCounter(int counterId) void Player::clearCounters() { QMapIterator counterIterator(counters); - while (counterIterator.hasNext()) + while (counterIterator.hasNext()) { counterIterator.next().value()->delCounter(); + } counters.clear(); } @@ -2013,28 +2162,34 @@ ArrowItem *Player::addArrow(const ServerInfo_Arrow &arrow) const QMap &playerList = game->getPlayers(); Player *startPlayer = playerList.value(arrow.start_player_id(), 0); Player *targetPlayer = playerList.value(arrow.target_player_id(), 0); - if (!startPlayer || !targetPlayer) + if (!startPlayer || !targetPlayer) { return 0; + } CardZone *startZone = startPlayer->getZones().value(QString::fromStdString(arrow.start_zone()), 0); CardZone *targetZone = 0; - if (arrow.has_target_zone()) + if (arrow.has_target_zone()) { targetZone = targetPlayer->getZones().value(QString::fromStdString(arrow.target_zone()), 0); - if (!startZone || (!targetZone && arrow.has_target_zone())) + } + if (!startZone || (!targetZone && arrow.has_target_zone())) { return 0; + } CardItem *startCard = startZone->getCard(arrow.start_card_id(), QString()); CardItem *targetCard = 0; - if (targetZone) + if (targetZone) { targetCard = targetZone->getCard(arrow.target_card_id(), QString()); - if (!startCard || (!targetCard && arrow.has_target_card_id())) + } + if (!startCard || (!targetCard && arrow.has_target_card_id())) { return 0; + } - if (targetCard) + if (targetCard) { return addArrow(arrow.id(), startCard, targetCard, convertColorToQColor(arrow.arrow_color())); - else + } else { return addArrow(arrow.id(), startCard, targetPlayer->getPlayerTarget(), convertColorToQColor(arrow.arrow_color())); + } } ArrowItem *Player::addArrow(int arrowId, CardItem *startCard, ArrowTarget *targetItem, const QColor &color) @@ -2047,23 +2202,26 @@ ArrowItem *Player::addArrow(int arrowId, CardItem *startCard, ArrowTarget *targe void Player::delArrow(int arrowId) { - ArrowItem *a = arrows.value(arrowId, 0); - if (!a) + ArrowItem *arr = arrows.value(arrowId, 0); + if (!arr) { return; - a->delArrow(); + } + arr->delArrow(); } void Player::removeArrow(ArrowItem *arrow) { - if (arrow->getId() != -1) + if (arrow->getId() != -1) { arrows.remove(arrow->getId()); + } } void Player::clearArrows() { QMapIterator arrowIterator(arrows); - while (arrowIterator.hasNext()) + while (arrowIterator.hasNext()) { arrowIterator.next().value()->delArrow(); + } arrows.clear(); } @@ -2076,23 +2234,25 @@ void Player::rearrangeCounters() QMapIterator counterIterator(counters); while (counterIterator.hasNext()) { counterIterator.next(); - if (counterIterator.value()->getShownInCounterArea()) + if (counterIterator.value()->getShownInCounterArea()) { totalHeight += counterIterator.value()->boundingRect().height(); + } } const qreal padding = 5; - qreal y = boundingRect().y() + marginTop; + qreal ySize = boundingRect().y() + marginTop; // Place objects for (counterIterator.toFront(); counterIterator.hasNext();) { - AbstractCounter *c = counterIterator.next().value(); + AbstractCounter *ctr = counterIterator.next().value(); - if (!c->getShownInCounterArea()) + if (!ctr->getShownInCounterArea()) { continue; + } - QRectF br = c->boundingRect(); - c->setPos((counterAreaWidth - br.width()) / 2, y); - y += br.height() + padding; + QRectF br = ctr->boundingRect(); + ctr->setPos((counterAreaWidth - br.width()) / 2, ySize); + ySize += br.height() + padding; } } @@ -2118,8 +2278,9 @@ void Player::sendGameCommand(PendingCommand *pend) bool Player::clearCardsToDelete() { - if (cardsToDelete.isEmpty()) + if (cardsToDelete.isEmpty()) { return false; + } for (auto &i : cardsToDelete) { if (i != nullptr) { @@ -2139,23 +2300,27 @@ void Player::actMoveCardXCardsFromTop() defaultNumberTopCardsToPlaceBelow, 1, 2000000000, 1, &ok); number--; - if (!ok) + if (!ok) { return; + } defaultNumberTopCardsToPlaceBelow = number; QList sel = scene()->selectedItems(); QList cardList; - while (!sel.isEmpty()) + while (!sel.isEmpty()) { cardList.append(qgraphicsitem_cast(sel.takeFirst())); + } QList commandList; ListOfCardsToMove idList; - for (auto &i : cardList) + for (auto &i : cardList) { idList.add_card()->set_card_id(i->getId()); + } - if (cardList.isEmpty()) + if (cardList.isEmpty()) { return; + } int startPlayerId = cardList[0]->getZone()->getPlayer()->getId(); QString startZone = cardList[0]->getZone()->getName(); @@ -2170,10 +2335,11 @@ void Player::actMoveCardXCardsFromTop() cmd->set_y(0); commandList.append(cmd); - if (local) + if (local) { sendGameCommand(prepareGameCommand(commandList)); - else + } else { game->sendGameCommand(prepareGameCommand(commandList)); + } } void Player::cardMenuAction() @@ -2181,8 +2347,9 @@ void Player::cardMenuAction() QAction *a = dynamic_cast(sender()); QList sel = scene()->selectedItems(); QList cardList; - while (!sel.isEmpty()) + while (!sel.isEmpty()) { cardList.append(qgraphicsitem_cast(sel.takeFirst())); + } QList commandList; if (a->data().toInt() <= (int)cmClone) { @@ -2191,6 +2358,7 @@ void Player::cardMenuAction() switch (static_cast(a->data().toInt())) { // Leaving both for compatibility with server case cmUntap: + // fallthrough case cmTap: { Command_SetCardAttr *cmd = new Command_SetCardAttr; cmd->set_zone(card->getZone()->getName().toStdString()); @@ -2216,8 +2384,9 @@ void Player::cardMenuAction() cmd->set_face_down(!card->getFaceDown()); if (card->getFaceDown()) { CardInfoPtr ci = card->getInfo(); - if (ci) + if (ci) { cmd->set_pt(ci->getPowTough().toStdString()); + } } commandList.append(cmd); break; @@ -2249,7 +2418,7 @@ void Player::cardMenuAction() } } else { ListOfCardsToMove idList; - for (int i = 0; i < cardList.size(); i++) { + for (int i = 0; i < cardList.size(); ++i) { idList.add_card()->set_card_id(cardList[i]->getId()); } int startPlayerId = cardList[0]->getZone()->getPlayer()->getId(); @@ -2344,8 +2513,9 @@ void Player::actIncPT(int deltaP, int deltaT) cmd->set_attr_value(ptString.toStdString()); commandList.append(cmd); - if (local) + if (local) { playerid = card->getZone()->getPlayer()->getId(); + } } game->sendGameCommand(prepareGameCommand(commandList), playerid); @@ -2387,18 +2557,21 @@ void Player::actSetPT() QListIterator i(scene()->selectedItems()); while (i.hasNext()) { CardItem *card = static_cast(i.next()); - if (!card->getPT().isEmpty()) + if (!card->getPT().isEmpty()) { oldPT = card->getPT(); + } } bool ok; dialogSemaphore = true; QString pt = QInputDialog::getText(0, tr("Set power/toughness"), tr("Please enter the new PT:"), QLineEdit::Normal, oldPT, &ok); dialogSemaphore = false; - if (clearCardsToDelete()) + if (clearCardsToDelete()) { return; - if (!ok) + } + if (!ok) { return; + } QList commandList; QListIterator j(scene()->selectedItems()); @@ -2411,8 +2584,9 @@ void Player::actSetPT() cmd->set_attr_value(pt.toStdString()); commandList.append(cmd); - if (local) + if (local) { playerid = card->getZone()->getPlayer()->getId(); + } } game->sendGameCommand(prepareGameCommand(commandList), playerid); @@ -2420,8 +2594,9 @@ void Player::actSetPT() void Player::actDrawArrow() { - if (!game->getActiveCard()) + if (!game->getActiveCard()) { return; + } game->getActiveCard()->drawArrow(Qt::red); } @@ -2462,8 +2637,9 @@ void Player::actSetAnnotation() QListIterator i(scene()->selectedItems()); while (i.hasNext()) { CardItem *card = static_cast(i.next()); - if (!card->getAnnotation().isEmpty()) + if (!card->getAnnotation().isEmpty()) { oldAnnotation = card->getAnnotation(); + } } bool ok; @@ -2471,10 +2647,12 @@ void Player::actSetAnnotation() QString annotation = QInputDialog::getText(0, tr("Set annotation"), tr("Please enter the new annotation:"), QLineEdit::Normal, oldAnnotation, &ok); dialogSemaphore = false; - if (clearCardsToDelete()) + if (clearCardsToDelete()) { return; - if (!ok) + } + if (!ok) { return; + } QList commandList; i.toFront(); @@ -2492,8 +2670,9 @@ void Player::actSetAnnotation() void Player::actAttach() { - if (!game->getActiveCard()) + if (!game->getActiveCard()) { return; + } ArrowAttachItem *arrow = new ArrowAttachItem(game->getActiveCard()); scene()->addItem(arrow); @@ -2502,8 +2681,9 @@ void Player::actAttach() void Player::actUnattach() { - if (!game->getActiveCard()) + if (!game->getActiveCard()) { return; + } Command_AttachCard cmd; cmd.set_start_zone(game->getActiveCard()->getZone()->getName().toStdString()); @@ -2513,11 +2693,10 @@ void Player::actUnattach() void Player::actCardCounterTrigger() { - QAction *a = static_cast(sender()); - int counterId = a->data().toInt() / 1000; - int action = a->data().toInt() % 1000; + QAction *action = static_cast(sender()); + int counterId = action->data().toInt() / 1000; QList commandList; - switch (action) { + switch (action->data().toInt() % 1000) { // TODO: define case numbers case 9: { QListIterator i(scene()->selectedItems()); while (i.hasNext()) { @@ -2553,10 +2732,9 @@ void Player::actCardCounterTrigger() dialogSemaphore = true; int number = QInputDialog::getInt(0, tr("Set counters"), tr("Number:"), 0, 0, MAX_COUNTERS_ON_CARD, 1, &ok); dialogSemaphore = false; - if (clearCardsToDelete()) - return; - if (!ok) + if (clearCardsToDelete() || !ok) { return; + } QListIterator i(scene()->selectedItems()); while (i.hasNext()) { @@ -2577,8 +2755,9 @@ void Player::actCardCounterTrigger() void Player::actPlay() { - if (!game->getActiveCard()) + if (!game->getActiveCard()) { return; + } bool cipt = game->getActiveCard()->getInfo() ? game->getActiveCard()->getInfo()->getCipt() : false; playCard(game->getActiveCard(), false, cipt); @@ -2586,16 +2765,18 @@ void Player::actPlay() void Player::actHide() { - if (!game->getActiveCard()) + if (!game->getActiveCard()) { return; + } game->getActiveCard()->getZone()->removeCard(game->getActiveCard()); } void Player::actPlayFacedown() { - if (!game->getActiveCard()) + if (!game->getActiveCard()) { return; + } playCard(game->getActiveCard(), true, false); } @@ -2605,7 +2786,7 @@ void Player::refreshShortcuts() if (shortcutsActive) { setShortcutsActive(); - foreach (const CardItem *cardItem, table->getCards()) { + for (const CardItem *cardItem : table->getCards()) { updateCardMenu(cardItem); } } @@ -2769,85 +2950,66 @@ void Player::addRelatedCardView(const CardItem *card, QMenu *cardMenu) void Player::addRelatedCardActions(const CardItem *card, QMenu *cardMenu) { - if (card == nullptr || cardMenu == nullptr || card->getInfo() == nullptr) + if (card == nullptr || cardMenu == nullptr || card->getInfo() == nullptr) { return; - - QList relatedCards = QList(); - relatedCards.append(card->getInfo()->getRelatedCards()); - relatedCards.append(card->getInfo()->getReverseRelatedCards2Me()); - - switch (relatedCards.length()) { - case 0: - break; - case 1: { - cardMenu->addSeparator(); - QAction *createRelatedCards; - if (relatedCards.at(0)->getDoesAttach()) { - createRelatedCards = - new QAction(tr("Token: ") + tr("Attach to ") + "\"" + relatedCards.at(0)->getName() + "\"", this); - } else - createRelatedCards = new QAction( - tr("Token: ") + - (relatedCards.at(0)->getIsVariable() - ? "X " - : QString(relatedCards.at(0)->getDefaultCount() == 1 - ? QString() - : QString::number(relatedCards.at(0)->getDefaultCount()) + "x ")) + - relatedCards.at(0)->getName(), - this); - connect(createRelatedCards, SIGNAL(triggered()), this, SLOT(actCreateAllRelatedCards())); - if (shortcutsActive) { - createRelatedCards->setShortcut( - settingsCache->shortcuts().getSingleShortcut("Player/aCreateRelatedTokens")); - } - cardMenu->addAction(createRelatedCards); - break; - } - default: { - cardMenu->addSeparator(); - int i = 0; - foreach (CardRelation *cardRelation, relatedCards) { - QString cardName = cardRelation->getName(); - QAction *createRelated; - if (cardRelation->getDoesAttach()) - createRelated = new QAction(tr("Token: ") + tr("Attach to ") + "\"" + cardName + "\"", this); - else - createRelated = - new QAction(tr("Token: ") + - (cardRelation->getIsVariable() - ? "X " - : QString(cardRelation->getDefaultCount() == 1 - ? QString() - : QString::number(cardRelation->getDefaultCount()) + "x ")) + - cardName, - this); - createRelated->setData(QVariant(i)); - connect(createRelated, SIGNAL(triggered()), this, SLOT(actCreateRelatedCard())); - cardMenu->addAction(createRelated); - i++; - } - QAction *createRelatedCards = new QAction(tr("All tokens"), this); - connect(createRelatedCards, SIGNAL(triggered()), this, SLOT(actCreateAllRelatedCards())); - if (shortcutsActive) { - createRelatedCards->setShortcut( - settingsCache->shortcuts().getSingleShortcut("Player/aCreateRelatedTokens")); - } - cardMenu->addAction(createRelatedCards); - break; - } } + + QList relatedCards(card->getInfo()->getRelatedCards()); + relatedCards.append(card->getInfo()->getReverseRelatedCards2Me()); + if (relatedCards.empty()) { + return; + } + + cardMenu->addSeparator(); + int index = 0; + QAction *createRelatedCards = nullptr; + for (const CardRelation *cardRelation : relatedCards) { + QString cardName = cardRelation->getName(); + QString text = tr("Token: "); + if (cardRelation->getDoesAttach()) { + text += tr("Attach to ") + "\"" + cardName + "\""; + } else if (cardRelation->getIsVariable()) { + text += "X " + cardName; + } else if (cardRelation->getDefaultCount() != 1) { + text += QString(cardRelation->getDefaultCount()) + "x " + cardName; + } else { + text += cardName; + } + + if (createRelatedCards == nullptr) { + if (relatedCards.length() == 1) { + createRelatedCards = new QAction(text, this); // set actCreateAllRelatedCards with this text + break; // do not set an individual entry as there is only one entry + } else { + createRelatedCards = new QAction(tr("All tokens"), this); + } + } + + QAction *createRelated = new QAction(text, this); + createRelated->setData(QVariant(index++)); + connect(createRelated, SIGNAL(triggered()), this, SLOT(actCreateRelatedCard())); + cardMenu->addAction(createRelated); + } + + if (shortcutsActive) { + createRelatedCards->setShortcut(settingsCache->shortcuts().getSingleShortcut("Player/aCreateRelatedTokens")); + } + connect(createRelatedCards, SIGNAL(triggered()), this, SLOT(actCreateAllRelatedCards())); + cardMenu->addAction(createRelatedCards); } void Player::setCardMenu(QMenu *menu) { - if (aCardMenu) + if (aCardMenu) { aCardMenu->setMenu(menu); + } } QMenu *Player::getCardMenu() const { - if (aCardMenu) + if (aCardMenu) { return aCardMenu->menu(); + } return 0; } @@ -2859,15 +3021,17 @@ QString Player::getName() const qreal Player::getMinimumWidth() const { qreal result = table->getMinimumWidth() + CARD_HEIGHT + 15 + counterAreaWidth + stack->boundingRect().width(); - if (!settingsCache->getHorizontalHand()) + if (!settingsCache->getHorizontalHand()) { result += hand->boundingRect().width(); + } return result; } void Player::setGameStarted() { - if (local) + if (local) { aAlwaysRevealTopCard->setChecked(false); + } setConceded(false); } @@ -2893,8 +3057,9 @@ void Player::processSceneSizeChange(int newPlayerWidth) { // Extend table (and hand, if horizontal) to accomodate the new player width. qreal tableWidth = newPlayerWidth - CARD_HEIGHT - 15 - counterAreaWidth - stack->boundingRect().width(); - if (!settingsCache->getHorizontalHand()) + if (!settingsCache->getHorizontalHand()) { tableWidth -= hand->boundingRect().width(); + } table->setWidth(tableWidth); hand->setWidth(tableWidth + stack->boundingRect().width()); @@ -2902,8 +3067,9 @@ void Player::processSceneSizeChange(int newPlayerWidth) void Player::setLastToken(CardInfoPtr cardInfo) { - if (cardInfo == nullptr || aCreateAnotherToken == nullptr) + if (cardInfo == nullptr || aCreateAnotherToken == nullptr) { return; + } lastTokenName = cardInfo->getName(); lastTokenColor = cardInfo->getColors().isEmpty() ? QString() : cardInfo->getColors().first().toLower(); diff --git a/cockatrice/src/player.h b/cockatrice/src/player.h index e459d3d2..c4f6ed00 100644 --- a/cockatrice/src/player.h +++ b/cockatrice/src/player.h @@ -144,6 +144,8 @@ public slots: void actUndoDraw(); void actMulligan(); void actMoveTopCardToPlayFaceDown(); + void actMoveTopCardToGrave(); + void actMoveTopCardToExile(); void actMoveTopCardsToGrave(); void actMoveTopCardsToExile(); void actMoveTopCardToBottom(); @@ -201,10 +203,10 @@ private: QAction *aMoveHandToTopLibrary, *aMoveHandToBottomLibrary, *aMoveHandToGrave, *aMoveHandToRfg, *aMoveGraveToTopLibrary, *aMoveGraveToBottomLibrary, *aMoveGraveToHand, *aMoveGraveToRfg, *aMoveRfgToTopLibrary, *aMoveRfgToBottomLibrary, *aMoveRfgToHand, *aMoveRfgToGrave, *aViewLibrary, *aViewTopCards, - *aAlwaysRevealTopCard, *aOpenDeckInDeckEditor, *aMoveTopCardsToGrave, *aMoveTopCardsToExile, - *aMoveTopCardToBottom, *aViewGraveyard, *aViewRfg, *aViewSideboard, *aDrawCard, *aDrawCards, *aUndoDraw, - *aMulligan, *aShuffle, *aMoveTopToPlayFaceDown, *aUntapAll, *aRollDie, *aCreateToken, *aCreateAnotherToken, - *aCardMenu, *aMoveBottomCardToGrave; + *aAlwaysRevealTopCard, *aOpenDeckInDeckEditor, *aMoveTopCardToGraveyard, *aMoveTopCardToExile, + *aMoveTopCardsToGraveyard, *aMoveTopCardsToExile, *aMoveTopCardToBottom, *aViewGraveyard, *aViewRfg, + *aViewSideboard, *aDrawCard, *aDrawCards, *aUndoDraw, *aMulligan, *aShuffle, *aMoveTopToPlayFaceDown, + *aUntapAll, *aRollDie, *aCreateToken, *aCreateAnotherToken, *aCardMenu, *aMoveBottomCardToGrave; QList aAddCounter, aSetCounter, aRemoveCounter; QAction *aPlay, *aPlayFacedown, *aHide, *aTap, *aDoesntUntap, *aAttach, *aUnattach, *aDrawArrow, *aSetPT, *aResetPT, diff --git a/cockatrice/src/sequenceEdit/sequenceedit.cpp b/cockatrice/src/sequenceEdit/sequenceedit.cpp index 3553870d..c652a525 100644 --- a/cockatrice/src/sequenceEdit/sequenceedit.cpp +++ b/cockatrice/src/sequenceEdit/sequenceedit.cpp @@ -1,20 +1,12 @@ #include "sequenceedit.h" #include "../settingscache.h" -#include #include #include -#include -#include #include #include -SequenceEdit::SequenceEdit(QString _shorcutName, QWidget *parent) : QWidget(parent) +SequenceEdit::SequenceEdit(const QString &_shortcutName, QWidget *parent) : QWidget(parent), shortcutName(_shortcutName) { - shorcutName = std::move(_shorcutName); - currentKey = 0; - keys = 0; - valid = false; - lineEdit = new QLineEdit(this); clearButton = new QPushButton("", this); defaultButton = new QPushButton("", this); @@ -42,20 +34,20 @@ SequenceEdit::SequenceEdit(QString _shorcutName, QWidget *parent) : QWidget(pare connect(defaultButton, SIGNAL(clicked()), this, SLOT(restoreDefault())); lineEdit->installEventFilter(this); - lineEdit->setText(settingsCache->shortcuts().getShortcutString(shorcutName)); + lineEdit->setText(settingsCache->shortcuts().getShortcutString(shortcutName)); } -QString SequenceEdit::getSecuence() +QString SequenceEdit::getSequence() { return lineEdit->text(); } void SequenceEdit::removeLastShortcut() { - QString secuences = lineEdit->text(); - if (!secuences.isEmpty()) { - if (secuences.lastIndexOf(";") > 0) { - QString valid = secuences.left(secuences.lastIndexOf(";")); + QString sequences = lineEdit->text(); + if (!sequences.isEmpty()) { + if (sequences.lastIndexOf(";") > 0) { + QString valid = sequences.left(sequences.lastIndexOf(";")); lineEdit->setText(valid); } else { lineEdit->clear(); @@ -67,18 +59,18 @@ void SequenceEdit::removeLastShortcut() void SequenceEdit::restoreDefault() { - lineEdit->setText(settingsCache->shortcuts().getDefaultShortcutString(shorcutName)); + lineEdit->setText(settingsCache->shortcuts().getDefaultShortcutString(shortcutName)); updateSettings(); } void SequenceEdit::refreshShortcut() { - lineEdit->setText(settingsCache->shortcuts().getShortcutString(shorcutName)); + lineEdit->setText(settingsCache->shortcuts().getShortcutString(shortcutName)); } void SequenceEdit::clear() { - this->lineEdit->setText(""); + lineEdit->setText(""); } bool SequenceEdit::eventFilter(QObject *, QEvent *event) @@ -142,8 +134,8 @@ void SequenceEdit::finishShortcut() QKeySequence sequence(keys); if (!sequence.isEmpty() && valid) { QString sequenceString = sequence.toString(); - if (settingsCache->shortcuts().isKeyAllowed(shorcutName, sequenceString)) { - if (settingsCache->shortcuts().isValid(shorcutName, sequenceString)) { + if (settingsCache->shortcuts().isKeyAllowed(shortcutName, sequenceString)) { + if (settingsCache->shortcuts().isValid(shortcutName, sequenceString)) { if (!lineEdit->text().isEmpty()) { if (lineEdit->text().contains(sequenceString)) { return; @@ -167,5 +159,5 @@ void SequenceEdit::finishShortcut() void SequenceEdit::updateSettings() { - settingsCache->shortcuts().setShortcuts(shorcutName, lineEdit->text()); -} \ No newline at end of file + settingsCache->shortcuts().setShortcuts(shortcutName, lineEdit->text()); +} diff --git a/cockatrice/src/sequenceEdit/sequenceedit.h b/cockatrice/src/sequenceEdit/sequenceedit.h index 2dffc101..5f61127a 100644 --- a/cockatrice/src/sequenceEdit/sequenceedit.h +++ b/cockatrice/src/sequenceEdit/sequenceedit.h @@ -1,19 +1,18 @@ -#ifndef SECUENCEEDIT_H -#define SECUENCEEDIT_H +#ifndef SEQUENCEEDIT_H +#define SEQUENCEEDIT_H +#include #include +#include +#include #include -class QLineEdit; -class QPushButton; -class QEvent; - class SequenceEdit : public QWidget { Q_OBJECT public: - SequenceEdit(QString _shorcutName, QWidget *parent = nullptr); - QString getSecuence(); + SequenceEdit(const QString &_shortcutName, QWidget *parent = nullptr); + QString getSequence(); void refreshShortcut(); void clear(); @@ -25,13 +24,13 @@ protected: bool eventFilter(QObject *, QEvent *event); private: - QString shorcutName; + QString shortcutName; QLineEdit *lineEdit; QPushButton *clearButton; QPushButton *defaultButton; - int keys; - int currentKey; - bool valid; + int keys = 0; + int currentKey = 0; + bool valid = false; void processKey(QKeyEvent *e); int translateModifiers(Qt::KeyboardModifiers state, const QString &text); @@ -39,4 +38,4 @@ private: void updateSettings(); }; -#endif // SECUENCEEDIT_H +#endif // SEQUENCEEDIT_H diff --git a/cockatrice/src/sequenceEdit/ui_shortcutstab.h b/cockatrice/src/sequenceEdit/ui_shortcutstab.h index 1a6714df..17c786a8 100644 --- a/cockatrice/src/sequenceEdit/ui_shortcutstab.h +++ b/cockatrice/src/sequenceEdit/ui_shortcutstab.h @@ -279,42 +279,8 @@ public: QSpacerItem *verticalSpacer_2; QWidget *tab_3; QGridLayout *gridLayout_20; - QGroupBox *groupBox_15; - QGridLayout *gridLayout_15; - QLabel *lbl_Player_aMoveToBottomLibrary; - SequenceEdit *Player_aMoveToBottomLibrary; - QLabel *lbl_Player_aMoveToTopLibrary; - SequenceEdit *Player_aMoveToTopLibrary; - QLabel *lbl_Player_aMoveToGraveyard; - SequenceEdit *Player_aMoveToGraveyard; - QLabel *lbl_Player_aMoveToExile; - SequenceEdit *Player_aMoveToExile; - QLabel *lbl_Player_aMoveToHand; - SequenceEdit *Player_aMoveToHand; - QLabel *lbl_Player_aMoveTopToPlayFaceDown; - SequenceEdit *Player_aMoveTopToPlayFaceDown; - QGroupBox *groupBox_16; - QGridLayout *gridLayout_16; - QLabel *lbl_Player_aViewGraveyard; - SequenceEdit *Player_aViewGraveyard; - QLabel *lbl_Player_aViewLibrary; - SequenceEdit *Player_aViewLibrary; - QLabel *lbl_Player_aViewTopCards; - SequenceEdit *Player_aViewTopCards; - QLabel *lbl_Player_aViewSideboard; - SequenceEdit *Player_aViewSideboard; - QLabel *lbl_Player_aViewRfg; - SequenceEdit *Player_aViewRfg; - QLabel *lbl_GameView_aCloseMostRecentZoneView; - SequenceEdit *GameView_aCloseMostRecentZoneView; - QGroupBox *groupBox_17; - QGridLayout *gridLayout_18; - SequenceEdit *DeckViewContainer_loadRemoteButton; - SequenceEdit *DeckViewContainer_loadLocalButton; - QLabel *lbl_DeckViewContainer_loadRemoteButton; - QLabel *lbl_DeckViewContainer_loadLocalButton; - QGroupBox *groupBox_18; - QGridLayout *gridLayout_19; + QGroupBox *groupBox_gameplay; + QGridLayout *gridLayout_gameplay; QLabel *lbl_Player_aDrawArrow; SequenceEdit *Player_aDrawArrow; QLabel *lbl_TabGame_aLeaveGame; @@ -331,8 +297,36 @@ public: SequenceEdit *Player_aShuffle; QLabel *lbl_TabGame_aRotateViewCCW; SequenceEdit *TabGame_aRotateViewCCW; - QGroupBox *groupBox_14; - QGridLayout *gridLayout_14; + QGroupBox *groupBox_moveCard; + QGridLayout *gridLayout_moveCard; + QLabel *lbl_Player_aMoveToBottomLibrary; + SequenceEdit *Player_aMoveToBottomLibrary; + QLabel *lbl_Player_aMoveToTopLibrary; + SequenceEdit *Player_aMoveToTopLibrary; + QLabel *lbl_Player_aMoveToGraveyard; + SequenceEdit *Player_aMoveToGraveyard; + QLabel *lbl_Player_aMoveToExile; + SequenceEdit *Player_aMoveToExile; + QLabel *lbl_Player_aMoveToHand; + SequenceEdit *Player_aMoveToHand; + QLabel *lbl_Player_aMoveTopToPlayFaceDown; + SequenceEdit *Player_aMoveTopToPlayFaceDown; + QGroupBox *groupBox_view; + QGridLayout *gridLayout_view; + QLabel *lbl_Player_aViewGraveyard; + SequenceEdit *Player_aViewGraveyard; + QLabel *lbl_Player_aViewLibrary; + SequenceEdit *Player_aViewLibrary; + QLabel *lbl_Player_aViewTopCards; + SequenceEdit *Player_aViewTopCards; + QLabel *lbl_Player_aViewSideboard; + SequenceEdit *Player_aViewSideboard; + QLabel *lbl_Player_aViewRfg; + SequenceEdit *Player_aViewRfg; + QLabel *lbl_GameView_aCloseMostRecentZoneView; + SequenceEdit *GameView_aCloseMostRecentZoneView; + QGroupBox *groupBox_draw; + QGridLayout *gridLayout_draw; QLabel *lbl_Player_aMulligan; SequenceEdit *Player_aMulligan; QLabel *lbl_Player_aDrawCard; @@ -343,6 +337,22 @@ public: SequenceEdit *Player_aUndoDraw; QLabel *lbl_Player_aAlwaysRevealTopCard; SequenceEdit *Player_aAlwaysRevealTopCard; + QGroupBox *groupBox_moveDeck; + QGridLayout *gridLayout_moveDeck; + QLabel *lbl_Player_aMoveTopCardToGraveyard; + SequenceEdit *Player_aMoveTopCardToGraveyard; + QLabel *lbl_Player_aMoveTopCardToExile; + SequenceEdit *Player_aMoveTopCardToExile; + QLabel *lbl_Player_aMoveTopCardsToGraveyard; + SequenceEdit *Player_aMoveTopCardsToGraveyard; + QLabel *lbl_Player_aMoveTopCardsToExile; + SequenceEdit *Player_aMoveTopCardsToExile; + QGroupBox *groupBox_gameLobby; + QGridLayout *gridLayout_gameLobby; + SequenceEdit *DeckViewContainer_loadRemoteButton; + QLabel *lbl_DeckViewContainer_loadRemoteButton; + SequenceEdit *DeckViewContainer_loadLocalButton; + QLabel *lbl_DeckViewContainer_loadLocalButton; QSpacerItem *verticalSpacer_3; QWidget *tab_4; QLabel *faqLabel; @@ -1406,304 +1416,352 @@ public: tab_3->setObjectName("tab_3"); gridLayout_20 = new QGridLayout(tab_3); gridLayout_20->setObjectName("gridLayout_20"); - groupBox_15 = new QGroupBox(tab_3); - groupBox_15->setObjectName("groupBox_15"); - gridLayout_15 = new QGridLayout(groupBox_15); - gridLayout_15->setObjectName("gridLayout_15"); - lbl_Player_aMoveToBottomLibrary = new QLabel(groupBox_15); - lbl_Player_aMoveToBottomLibrary->setObjectName("lbl_Player_aMoveToBottomLibrary"); - gridLayout_15->addWidget(lbl_Player_aMoveToBottomLibrary, 0, 0, 1, 1); - - Player_aMoveToBottomLibrary = new SequenceEdit("Player/aMoveToBottomLibrary", groupBox_15); - Player_aMoveToBottomLibrary->setObjectName("Player_aMoveToBottomLibrary"); - - gridLayout_15->addWidget(Player_aMoveToBottomLibrary, 0, 1, 1, 1); - - lbl_Player_aMoveToTopLibrary = new QLabel(groupBox_15); - lbl_Player_aMoveToTopLibrary->setObjectName("lbl_Player_aMoveToTopLibrary"); - - gridLayout_15->addWidget(lbl_Player_aMoveToTopLibrary, 1, 0, 1, 1); - - Player_aMoveToTopLibrary = new SequenceEdit("Player/aMoveToTopLibrary", groupBox_15); - Player_aMoveToTopLibrary->setObjectName("Player_aMoveToTopLibrary"); - - gridLayout_15->addWidget(Player_aMoveToTopLibrary, 1, 1, 1, 1); - - lbl_Player_aMoveToGraveyard = new QLabel(groupBox_15); - lbl_Player_aMoveToGraveyard->setObjectName("lbl_Player_aMoveToGraveyard"); - - gridLayout_15->addWidget(lbl_Player_aMoveToGraveyard, 2, 0, 1, 1); - - Player_aMoveToGraveyard = new SequenceEdit("Player/aMoveToGraveyard", groupBox_15); - Player_aMoveToGraveyard->setObjectName("Player_aMoveToGraveyard"); - - gridLayout_15->addWidget(Player_aMoveToGraveyard, 2, 1, 1, 1); - - lbl_Player_aMoveToExile = new QLabel(groupBox_15); - lbl_Player_aMoveToExile->setObjectName("lbl_Player_aMoveToExile"); - - gridLayout_15->addWidget(lbl_Player_aMoveToExile, 3, 0, 1, 1); - - Player_aMoveToExile = new SequenceEdit("Player/aMoveToExile", groupBox_15); - Player_aMoveToExile->setObjectName("Player_aMoveToExile"); - - gridLayout_15->addWidget(Player_aMoveToExile, 3, 1, 1, 1); - - lbl_Player_aMoveToHand = new QLabel(groupBox_15); - lbl_Player_aMoveToHand->setObjectName("lbl_Player_aMoveToHand"); - - gridLayout_15->addWidget(lbl_Player_aMoveToHand, 4, 0, 1, 1); - - Player_aMoveToHand = new SequenceEdit("Player/aMoveToHand", groupBox_15); - Player_aMoveToHand->setObjectName("Player_aMoveToHand"); - - gridLayout_15->addWidget(Player_aMoveToHand, 4, 1, 1, 1); - - lbl_Player_aMoveTopToPlayFaceDown = new QLabel(groupBox_15); - lbl_Player_aMoveTopToPlayFaceDown->setObjectName("lbl_Player_aMoveTopToPlayFaceDown"); - - gridLayout_15->addWidget(lbl_Player_aMoveTopToPlayFaceDown, 5, 0, 1, 1); - - Player_aMoveTopToPlayFaceDown = new SequenceEdit("Player/aMoveTopToPlayFaceDown", groupBox_15); - Player_aMoveTopToPlayFaceDown->setObjectName("Player_aMoveTopToPlayFaceDown"); - - gridLayout_15->addWidget(Player_aMoveTopToPlayFaceDown, 5, 1, 1, 1); - - gridLayout_20->addWidget(groupBox_15, 0, 1, 1, 1); - - groupBox_16 = new QGroupBox(tab_3); - groupBox_16->setObjectName("groupBox_16"); - gridLayout_16 = new QGridLayout(groupBox_16); - gridLayout_16->setObjectName("gridLayout_16"); - lbl_Player_aViewGraveyard = new QLabel(groupBox_16); - lbl_Player_aViewGraveyard->setObjectName("lbl_Player_aViewGraveyard"); - - gridLayout_16->addWidget(lbl_Player_aViewGraveyard, 0, 0, 1, 1); - - Player_aViewGraveyard = new SequenceEdit("Player/aViewGraveyard", groupBox_16); - Player_aViewGraveyard->setObjectName("Player_aViewGraveyard"); - - gridLayout_16->addWidget(Player_aViewGraveyard, 0, 1, 1, 1); - - lbl_Player_aViewLibrary = new QLabel(groupBox_16); - lbl_Player_aViewLibrary->setObjectName("lbl_Player_aViewLibrary"); - - gridLayout_16->addWidget(lbl_Player_aViewLibrary, 1, 0, 1, 1); - - Player_aViewLibrary = new SequenceEdit("Player/aViewLibrary", groupBox_16); - Player_aViewLibrary->setObjectName("Player_aViewLibrary"); - - gridLayout_16->addWidget(Player_aViewLibrary, 1, 1, 1, 1); - - lbl_Player_aViewTopCards = new QLabel(groupBox_16); - lbl_Player_aViewTopCards->setObjectName("lbl_Player_aViewTopCards"); - - gridLayout_16->addWidget(lbl_Player_aViewTopCards, 2, 0, 1, 1); - - Player_aViewTopCards = new SequenceEdit("Player/aViewTopCards", groupBox_16); - Player_aViewTopCards->setObjectName("Player_aViewTopCards"); - - gridLayout_16->addWidget(Player_aViewTopCards, 2, 1, 1, 1); - - lbl_Player_aViewSideboard = new QLabel(groupBox_16); - lbl_Player_aViewSideboard->setObjectName("lbl_Player_aViewSideboard"); - - gridLayout_16->addWidget(lbl_Player_aViewSideboard, 3, 0, 1, 1); - - Player_aViewSideboard = new SequenceEdit("Player/aViewSideboard", groupBox_16); - Player_aViewSideboard->setObjectName("Player_aViewSideboard"); - - gridLayout_16->addWidget(Player_aViewSideboard, 3, 1, 1, 1); - - lbl_Player_aViewRfg = new QLabel(groupBox_16); - lbl_Player_aViewRfg->setObjectName("lbl_Player_aViewRfg"); - - gridLayout_16->addWidget(lbl_Player_aViewRfg, 4, 0, 1, 1); - - Player_aViewRfg = new SequenceEdit("Player/aViewRfg", groupBox_16); - Player_aViewRfg->setObjectName("Player_aViewRfg"); - - gridLayout_16->addWidget(Player_aViewRfg, 4, 1, 1, 1); - - lbl_GameView_aCloseMostRecentZoneView = new QLabel(groupBox_16); - lbl_GameView_aCloseMostRecentZoneView->setObjectName("lbl_GameView_aCloseMostRecentZoneView"); - - gridLayout_16->addWidget(lbl_GameView_aCloseMostRecentZoneView, 5, 0, 1, 1); - - GameView_aCloseMostRecentZoneView = new SequenceEdit("Player/aCloseMostRecentZoneView", groupBox_16); - GameView_aCloseMostRecentZoneView->setObjectName("GameView_aCloseMostRecentZoneView"); - - gridLayout_16->addWidget(GameView_aCloseMostRecentZoneView, 5, 1, 1, 1); - - gridLayout_20->addWidget(groupBox_16, 0, 2, 1, 1); - - groupBox_17 = new QGroupBox(tab_3); - groupBox_17->setObjectName("groupBox_17"); - gridLayout_18 = new QGridLayout(groupBox_17); - gridLayout_18->setObjectName("gridLayout_18"); - DeckViewContainer_loadRemoteButton = new SequenceEdit("DeckViewContainer/loadRemoteButton", groupBox_17); - DeckViewContainer_loadRemoteButton->setObjectName("DeckViewContainer_loadRemoteButton"); - - gridLayout_18->addWidget(DeckViewContainer_loadRemoteButton, 2, 1, 1, 1); - - DeckViewContainer_loadLocalButton = new SequenceEdit("DeckViewContainer/loadLocalButton", groupBox_17); - DeckViewContainer_loadLocalButton->setObjectName("DeckViewContainer_loadLocalButton"); - - gridLayout_18->addWidget(DeckViewContainer_loadLocalButton, 0, 1, 1, 1); - - lbl_DeckViewContainer_loadRemoteButton = new QLabel(groupBox_17); - lbl_DeckViewContainer_loadRemoteButton->setObjectName("lbl_DeckViewContainer_loadRemoteButton"); - - gridLayout_18->addWidget(lbl_DeckViewContainer_loadRemoteButton, 2, 0, 1, 1); - - lbl_DeckViewContainer_loadLocalButton = new QLabel(groupBox_17); - lbl_DeckViewContainer_loadLocalButton->setObjectName("lbl_DeckViewContainer_loadLocalButton"); - - gridLayout_18->addWidget(lbl_DeckViewContainer_loadLocalButton, 0, 0, 1, 1); - - gridLayout_20->addWidget(groupBox_17, 1, 0, 1, 1); - - groupBox_18 = new QGroupBox(tab_3); - groupBox_18->setObjectName("groupBox_18"); - gridLayout_19 = new QGridLayout(groupBox_18); - gridLayout_19->setObjectName("gridLayout_19"); - lbl_Player_aDrawArrow = new QLabel(groupBox_18); + groupBox_gameplay = new QGroupBox(tab_3); + groupBox_gameplay->setObjectName("groupBox_gameplay"); + gridLayout_gameplay = new QGridLayout(groupBox_gameplay); + gridLayout_gameplay->setObjectName("gridLayout_gameplay"); + lbl_Player_aDrawArrow = new QLabel(groupBox_gameplay); lbl_Player_aDrawArrow->setObjectName("lbl_Player_aDrawArrow"); - gridLayout_19->addWidget(lbl_Player_aDrawArrow, 0, 0, 1, 1); + gridLayout_gameplay->addWidget(lbl_Player_aDrawArrow, 0, 0, 1, 1); - Player_aDrawArrow = new SequenceEdit("Player/aDrawArrow", groupBox_18); + Player_aDrawArrow = new SequenceEdit("Player/aDrawArrow", groupBox_gameplay); Player_aDrawArrow->setObjectName("Player_aDrawArrow"); - gridLayout_19->addWidget(Player_aDrawArrow, 0, 1, 1, 1); + gridLayout_gameplay->addWidget(Player_aDrawArrow, 0, 1, 1, 1); - lbl_TabGame_aLeaveGame = new QLabel(groupBox_18); - lbl_TabGame_aLeaveGame->setObjectName("lbl_TabGame_aLeaveGame"); - - gridLayout_19->addWidget(lbl_TabGame_aLeaveGame, 0, 2, 1, 1); - - TabGame_aLeaveGame = new SequenceEdit("Player/aLeaveGame", groupBox_18); - TabGame_aLeaveGame->setObjectName("TabGame_aLeaveGame"); - - gridLayout_19->addWidget(TabGame_aLeaveGame, 0, 3, 1, 1); - - lbl_TabGame_aRemoveLocalArrows = new QLabel(groupBox_18); + lbl_TabGame_aRemoveLocalArrows = new QLabel(groupBox_gameplay); lbl_TabGame_aRemoveLocalArrows->setObjectName("lbl_TabGame_aRemoveLocalArrows"); - gridLayout_19->addWidget(lbl_TabGame_aRemoveLocalArrows, 1, 0, 1, 1); + gridLayout_gameplay->addWidget(lbl_TabGame_aRemoveLocalArrows, 1, 0, 1, 1); - TabGame_aRemoveLocalArrows = new SequenceEdit("Player/aRemoveLocalArrows", groupBox_18); + TabGame_aRemoveLocalArrows = new SequenceEdit("Player/aRemoveLocalArrows", groupBox_gameplay); TabGame_aRemoveLocalArrows->setObjectName("TabGame_aRemoveLocalArrows"); - gridLayout_19->addWidget(TabGame_aRemoveLocalArrows, 1, 1, 1, 1); + gridLayout_gameplay->addWidget(TabGame_aRemoveLocalArrows, 1, 1, 1, 1); - lbl_TabGame_aConcede = new QLabel(groupBox_18); + lbl_TabGame_aConcede = new QLabel(groupBox_gameplay); lbl_TabGame_aConcede->setObjectName("lbl_TabGame_aConcede"); - gridLayout_19->addWidget(lbl_TabGame_aConcede, 1, 2, 1, 1); + gridLayout_gameplay->addWidget(lbl_TabGame_aConcede, 2, 0, 1, 1); - TabGame_aConcede = new SequenceEdit("Player/aConcede", groupBox_18); + TabGame_aConcede = new SequenceEdit("Player/aConcede", groupBox_gameplay); TabGame_aConcede->setObjectName("TabGame_aConcede"); - gridLayout_19->addWidget(TabGame_aConcede, 1, 3, 1, 1); + gridLayout_gameplay->addWidget(TabGame_aConcede, 2, 1, 1, 1); - lbl_Player_aRollDie = new QLabel(groupBox_18); + lbl_TabGame_aLeaveGame = new QLabel(groupBox_gameplay); + lbl_TabGame_aLeaveGame->setObjectName("lbl_TabGame_aLeaveGame"); + + gridLayout_gameplay->addWidget(lbl_TabGame_aLeaveGame, 3, 0, 1, 1); + + TabGame_aLeaveGame = new SequenceEdit("Player/aLeaveGame", groupBox_gameplay); + TabGame_aLeaveGame->setObjectName("TabGame_aLeaveGame"); + + gridLayout_gameplay->addWidget(TabGame_aLeaveGame, 3, 1, 1, 1); + + lbl_Player_aRollDie = new QLabel(groupBox_gameplay); lbl_Player_aRollDie->setObjectName("lbl_Player_aRollDie"); - gridLayout_19->addWidget(lbl_Player_aRollDie, 2, 0, 1, 1); + gridLayout_gameplay->addWidget(lbl_Player_aRollDie, 4, 0, 1, 1); - Player_aRollDie = new SequenceEdit("Player/aRollDie", groupBox_18); + Player_aRollDie = new SequenceEdit("Player/aRollDie", groupBox_gameplay); Player_aRollDie->setObjectName("Player_aRollDie"); - gridLayout_19->addWidget(Player_aRollDie, 2, 1, 1, 1); + gridLayout_gameplay->addWidget(Player_aRollDie, 4, 1, 1, 1); - lbl_TabGame_aRotateViewCW = new QLabel(groupBox_18); - lbl_TabGame_aRotateViewCW->setObjectName("lbl_TabGame_aRotateViewCW"); - - gridLayout_19->addWidget(lbl_TabGame_aRotateViewCW, 2, 2, 1, 1); - - TabGame_aRotateViewCW = new SequenceEdit("Player/aRotateViewCW", groupBox_18); - TabGame_aRotateViewCW->setObjectName("TabGame_aRotateViewCW"); - - gridLayout_19->addWidget(TabGame_aRotateViewCW, 2, 3, 1, 1); - - lbl_Player_aShuffle = new QLabel(groupBox_18); + lbl_Player_aShuffle = new QLabel(groupBox_gameplay); lbl_Player_aShuffle->setObjectName("lbl_Player_aShuffle"); - gridLayout_19->addWidget(lbl_Player_aShuffle, 3, 0, 1, 1); + gridLayout_gameplay->addWidget(lbl_Player_aShuffle, 5, 0, 1, 1); - Player_aShuffle = new SequenceEdit("Player/aShuffle", groupBox_18); + Player_aShuffle = new SequenceEdit("Player/aShuffle", groupBox_gameplay); Player_aShuffle->setObjectName("Player_aShuffle"); - gridLayout_19->addWidget(Player_aShuffle, 3, 1, 1, 1); + gridLayout_gameplay->addWidget(Player_aShuffle, 5, 1, 1, 1); - lbl_TabGame_aRotateViewCCW = new QLabel(groupBox_18); + lbl_TabGame_aRotateViewCW = new QLabel(groupBox_gameplay); + lbl_TabGame_aRotateViewCW->setObjectName("lbl_TabGame_aRotateViewCW"); + + gridLayout_gameplay->addWidget(lbl_TabGame_aRotateViewCW, 6, 0, 1, 1); + + TabGame_aRotateViewCW = new SequenceEdit("Player/aRotateViewCW", groupBox_gameplay); + TabGame_aRotateViewCW->setObjectName("TabGame_aRotateViewCW"); + + gridLayout_gameplay->addWidget(TabGame_aRotateViewCW, 6, 1, 1, 1); + + lbl_TabGame_aRotateViewCCW = new QLabel(groupBox_gameplay); lbl_TabGame_aRotateViewCCW->setObjectName("lbl_TabGame_aRotateViewCCW"); - gridLayout_19->addWidget(lbl_TabGame_aRotateViewCCW, 3, 2, 1, 1); + gridLayout_gameplay->addWidget(lbl_TabGame_aRotateViewCCW, 7, 0, 1, 1); - TabGame_aRotateViewCCW = new SequenceEdit("Player/aRotateViewCCW", groupBox_18); + TabGame_aRotateViewCCW = new SequenceEdit("Player/aRotateViewCCW", groupBox_gameplay); TabGame_aRotateViewCCW->setObjectName("TabGame_aRotateViewCCW"); - gridLayout_19->addWidget(TabGame_aRotateViewCCW, 3, 3, 1, 1); + gridLayout_gameplay->addWidget(TabGame_aRotateViewCCW, 7, 1, 1, 1); - gridLayout_20->addWidget(groupBox_18, 1, 1, 1, 2); + gridLayout_20->addWidget(groupBox_gameplay, 0, 0, 1, 1); - groupBox_14 = new QGroupBox(tab_3); - groupBox_14->setObjectName("groupBox_14"); - gridLayout_14 = new QGridLayout(groupBox_14); - gridLayout_14->setObjectName("gridLayout_14"); - lbl_Player_aMulligan = new QLabel(groupBox_14); + groupBox_moveCard = new QGroupBox(tab_3); + groupBox_moveCard->setObjectName("groupBox_moveCard"); + gridLayout_moveCard = new QGridLayout(groupBox_moveCard); + gridLayout_moveCard->setObjectName("gridLayout_moveCard"); + lbl_Player_aMoveToBottomLibrary = new QLabel(groupBox_moveCard); + lbl_Player_aMoveToBottomLibrary->setObjectName("lbl_Player_aMoveToBottomLibrary"); + + gridLayout_moveCard->addWidget(lbl_Player_aMoveToBottomLibrary, 0, 0, 1, 1); + + Player_aMoveToBottomLibrary = new SequenceEdit("Player/aMoveToBottomLibrary", groupBox_moveCard); + Player_aMoveToBottomLibrary->setObjectName("Player_aMoveToBottomLibrary"); + + gridLayout_moveCard->addWidget(Player_aMoveToBottomLibrary, 0, 1, 1, 1); + + lbl_Player_aMoveToTopLibrary = new QLabel(groupBox_moveCard); + lbl_Player_aMoveToTopLibrary->setObjectName("lbl_Player_aMoveToTopLibrary"); + + gridLayout_moveCard->addWidget(lbl_Player_aMoveToTopLibrary, 1, 0, 1, 1); + + Player_aMoveToTopLibrary = new SequenceEdit("Player/aMoveToTopLibrary", groupBox_moveCard); + Player_aMoveToTopLibrary->setObjectName("Player_aMoveToTopLibrary"); + + gridLayout_moveCard->addWidget(Player_aMoveToTopLibrary, 1, 1, 1, 1); + + lbl_Player_aMoveToGraveyard = new QLabel(groupBox_moveCard); + lbl_Player_aMoveToGraveyard->setObjectName("lbl_Player_aMoveToGraveyard"); + + gridLayout_moveCard->addWidget(lbl_Player_aMoveToGraveyard, 2, 0, 1, 1); + + Player_aMoveToGraveyard = new SequenceEdit("Player/aMoveToGraveyard", groupBox_moveCard); + Player_aMoveToGraveyard->setObjectName("Player_aMoveToGraveyard"); + + gridLayout_moveCard->addWidget(Player_aMoveToGraveyard, 2, 1, 1, 1); + + lbl_Player_aMoveToExile = new QLabel(groupBox_moveCard); + lbl_Player_aMoveToExile->setObjectName("lbl_Player_aMoveToExile"); + + gridLayout_moveCard->addWidget(lbl_Player_aMoveToExile, 3, 0, 1, 1); + + Player_aMoveToExile = new SequenceEdit("Player/aMoveToExile", groupBox_moveCard); + Player_aMoveToExile->setObjectName("Player_aMoveToExile"); + + gridLayout_moveCard->addWidget(Player_aMoveToExile, 3, 1, 1, 1); + + lbl_Player_aMoveToHand = new QLabel(groupBox_moveCard); + lbl_Player_aMoveToHand->setObjectName("lbl_Player_aMoveToHand"); + + gridLayout_moveCard->addWidget(lbl_Player_aMoveToHand, 4, 0, 1, 1); + + Player_aMoveToHand = new SequenceEdit("Player/aMoveToHand", groupBox_moveCard); + Player_aMoveToHand->setObjectName("Player_aMoveToHand"); + + gridLayout_moveCard->addWidget(Player_aMoveToHand, 4, 1, 1, 1); + + lbl_Player_aMoveTopToPlayFaceDown = new QLabel(groupBox_moveCard); + lbl_Player_aMoveTopToPlayFaceDown->setObjectName("lbl_Player_aMoveTopToPlayFaceDown"); + + gridLayout_moveCard->addWidget(lbl_Player_aMoveTopToPlayFaceDown, 5, 0, 1, 1); + + Player_aMoveTopToPlayFaceDown = new SequenceEdit("Player/aMoveTopToPlayFaceDown", groupBox_moveCard); + Player_aMoveTopToPlayFaceDown->setObjectName("Player_aMoveTopToPlayFaceDown"); + + gridLayout_moveCard->addWidget(Player_aMoveTopToPlayFaceDown, 5, 1, 1, 1); + + gridLayout_20->addWidget(groupBox_moveCard, 0, 1, 1, 1); + + groupBox_view = new QGroupBox(tab_3); + groupBox_view->setObjectName("groupBox_view"); + gridLayout_view = new QGridLayout(groupBox_view); + gridLayout_view->setObjectName("gridLayout_view"); + lbl_Player_aViewGraveyard = new QLabel(groupBox_view); + lbl_Player_aViewGraveyard->setObjectName("lbl_Player_aViewGraveyard"); + + gridLayout_view->addWidget(lbl_Player_aViewGraveyard, 0, 0, 1, 1); + + Player_aViewGraveyard = new SequenceEdit("Player/aViewGraveyard", groupBox_view); + Player_aViewGraveyard->setObjectName("Player_aViewGraveyard"); + + gridLayout_view->addWidget(Player_aViewGraveyard, 0, 1, 1, 1); + + lbl_Player_aViewLibrary = new QLabel(groupBox_view); + lbl_Player_aViewLibrary->setObjectName("lbl_Player_aViewLibrary"); + + gridLayout_view->addWidget(lbl_Player_aViewLibrary, 1, 0, 1, 1); + + Player_aViewLibrary = new SequenceEdit("Player/aViewLibrary", groupBox_view); + Player_aViewLibrary->setObjectName("Player_aViewLibrary"); + + gridLayout_view->addWidget(Player_aViewLibrary, 1, 1, 1, 1); + + lbl_Player_aViewTopCards = new QLabel(groupBox_view); + lbl_Player_aViewTopCards->setObjectName("lbl_Player_aViewTopCards"); + + gridLayout_view->addWidget(lbl_Player_aViewTopCards, 2, 0, 1, 1); + + Player_aViewTopCards = new SequenceEdit("Player/aViewTopCards", groupBox_view); + Player_aViewTopCards->setObjectName("Player_aViewTopCards"); + + gridLayout_view->addWidget(Player_aViewTopCards, 2, 1, 1, 1); + + lbl_Player_aViewSideboard = new QLabel(groupBox_view); + lbl_Player_aViewSideboard->setObjectName("lbl_Player_aViewSideboard"); + + gridLayout_view->addWidget(lbl_Player_aViewSideboard, 3, 0, 1, 1); + + Player_aViewSideboard = new SequenceEdit("Player/aViewSideboard", groupBox_view); + Player_aViewSideboard->setObjectName("Player_aViewSideboard"); + + gridLayout_view->addWidget(Player_aViewSideboard, 3, 1, 1, 1); + + lbl_Player_aViewRfg = new QLabel(groupBox_view); + lbl_Player_aViewRfg->setObjectName("lbl_Player_aViewRfg"); + + gridLayout_view->addWidget(lbl_Player_aViewRfg, 4, 0, 1, 1); + + Player_aViewRfg = new SequenceEdit("Player/aViewRfg", groupBox_view); + Player_aViewRfg->setObjectName("Player_aViewRfg"); + + gridLayout_view->addWidget(Player_aViewRfg, 4, 1, 1, 1); + + lbl_GameView_aCloseMostRecentZoneView = new QLabel(groupBox_view); + lbl_GameView_aCloseMostRecentZoneView->setObjectName("lbl_GameView_aCloseMostRecentZoneView"); + + gridLayout_view->addWidget(lbl_GameView_aCloseMostRecentZoneView, 5, 0, 1, 1); + + GameView_aCloseMostRecentZoneView = new SequenceEdit("Player/aCloseMostRecentZoneView", groupBox_view); + GameView_aCloseMostRecentZoneView->setObjectName("GameView_aCloseMostRecentZoneView"); + + gridLayout_view->addWidget(GameView_aCloseMostRecentZoneView, 5, 1, 1, 1); + + gridLayout_20->addWidget(groupBox_view, 0, 2, 1, 1); + + groupBox_draw = new QGroupBox(tab_3); + groupBox_draw->setObjectName("groupBox_draw"); + gridLayout_draw = new QGridLayout(groupBox_draw); + gridLayout_draw->setObjectName("gridLayout_draw"); + lbl_Player_aMulligan = new QLabel(groupBox_draw); lbl_Player_aMulligan->setObjectName("lbl_Player_aMulligan"); - gridLayout_14->addWidget(lbl_Player_aMulligan, 4, 0, 1, 1); + gridLayout_draw->addWidget(lbl_Player_aMulligan, 4, 0, 1, 1); - Player_aMulligan = new SequenceEdit("Player/aMulligan", groupBox_14); + Player_aMulligan = new SequenceEdit("Player/aMulligan", groupBox_draw); Player_aMulligan->setObjectName("Player_aMulligan"); - gridLayout_14->addWidget(Player_aMulligan, 4, 1, 1, 1); + gridLayout_draw->addWidget(Player_aMulligan, 4, 1, 1, 1); - lbl_Player_aDrawCard = new QLabel(groupBox_14); + lbl_Player_aDrawCard = new QLabel(groupBox_draw); lbl_Player_aDrawCard->setObjectName("lbl_Player_aDrawCard"); - gridLayout_14->addWidget(lbl_Player_aDrawCard, 0, 0, 1, 1); + gridLayout_draw->addWidget(lbl_Player_aDrawCard, 0, 0, 1, 1); - Player_aDrawCard = new SequenceEdit("Player/aDrawCard", groupBox_14); + Player_aDrawCard = new SequenceEdit("Player/aDrawCard", groupBox_draw); Player_aDrawCard->setObjectName("Player_aDrawCard"); - gridLayout_14->addWidget(Player_aDrawCard, 0, 1, 1, 1); + gridLayout_draw->addWidget(Player_aDrawCard, 0, 1, 1, 1); - lbl_Player_aDrawCards = new QLabel(groupBox_14); + lbl_Player_aDrawCards = new QLabel(groupBox_draw); lbl_Player_aDrawCards->setObjectName("lbl_Player_aDrawCards"); - gridLayout_14->addWidget(lbl_Player_aDrawCards, 1, 0, 1, 1); + gridLayout_draw->addWidget(lbl_Player_aDrawCards, 1, 0, 1, 1); - Player_aDrawCards = new SequenceEdit("Player/aDrawCards", groupBox_14); + Player_aDrawCards = new SequenceEdit("Player/aDrawCards", groupBox_draw); Player_aDrawCards->setObjectName("Player_aDrawCards"); - gridLayout_14->addWidget(Player_aDrawCards, 1, 1, 1, 1); + gridLayout_draw->addWidget(Player_aDrawCards, 1, 1, 1, 1); - lbl_Player_aUndoDraw = new QLabel(groupBox_14); + lbl_Player_aUndoDraw = new QLabel(groupBox_draw); lbl_Player_aUndoDraw->setObjectName("lbl_Player_aUndoDraw"); - gridLayout_14->addWidget(lbl_Player_aUndoDraw, 2, 0, 1, 1); + gridLayout_draw->addWidget(lbl_Player_aUndoDraw, 2, 0, 1, 1); - Player_aUndoDraw = new SequenceEdit("Player/aUndoDraw", groupBox_14); + Player_aUndoDraw = new SequenceEdit("Player/aUndoDraw", groupBox_draw); Player_aUndoDraw->setObjectName("Player_aUndoDraw"); - gridLayout_14->addWidget(Player_aUndoDraw, 2, 1, 1, 1); + gridLayout_draw->addWidget(Player_aUndoDraw, 2, 1, 1, 1); - lbl_Player_aAlwaysRevealTopCard = new QLabel(groupBox_14); + lbl_Player_aAlwaysRevealTopCard = new QLabel(groupBox_draw); lbl_Player_aAlwaysRevealTopCard->setObjectName("lbl_Player_aAlwaysRevealTopCard"); - gridLayout_14->addWidget(lbl_Player_aAlwaysRevealTopCard, 3, 0, 1, 1); + gridLayout_draw->addWidget(lbl_Player_aAlwaysRevealTopCard, 3, 0, 1, 1); - Player_aAlwaysRevealTopCard = new SequenceEdit("Player/aAlwaysRevealTopCard", groupBox_14); + Player_aAlwaysRevealTopCard = new SequenceEdit("Player/aAlwaysRevealTopCard", groupBox_draw); Player_aAlwaysRevealTopCard->setObjectName("Player_aAlwaysRevealTopCard"); - gridLayout_14->addWidget(Player_aAlwaysRevealTopCard, 3, 1, 1, 1); - gridLayout_20->addWidget(groupBox_14, 0, 0, 1, 1); + gridLayout_draw->addWidget(Player_aAlwaysRevealTopCard, 3, 1, 1, 1); + gridLayout_20->addWidget(groupBox_draw, 1, 0, 1, 1); + + groupBox_moveDeck = new QGroupBox(tab_3); + groupBox_moveDeck->setObjectName("groupBox_moveDeck"); + gridLayout_moveDeck = new QGridLayout(groupBox_moveDeck); + gridLayout_moveDeck->setObjectName("gridLayout_moveDeck"); + lbl_Player_aMoveTopCardToGraveyard = new QLabel(groupBox_moveDeck); + lbl_Player_aMoveTopCardToGraveyard->setObjectName("lbl_Player_aMoveTopCardToGraveyard"); + + gridLayout_moveDeck->addWidget(lbl_Player_aMoveTopCardToGraveyard, 0, 0, 1, 1); + + Player_aMoveTopCardToGraveyard = new SequenceEdit("Player/aMoveTopCardToGraveyard", groupBox_moveDeck); + Player_aMoveTopCardToGraveyard->setObjectName("Player_aMoveTopCardToGraveyard"); + + gridLayout_moveDeck->addWidget(Player_aMoveTopCardToGraveyard, 0, 1, 1, 1); + + lbl_Player_aMoveTopCardsToGraveyard = new QLabel(groupBox_moveDeck); + lbl_Player_aMoveTopCardsToGraveyard->setObjectName("lbl_Player_aMoveTopCardsToGraveyard"); + + gridLayout_moveDeck->addWidget(lbl_Player_aMoveTopCardsToGraveyard, 1, 0, 1, 1); + + Player_aMoveTopCardsToGraveyard = new SequenceEdit("Player/aMoveTopCardsToGraveyard", groupBox_moveDeck); + Player_aMoveTopCardsToGraveyard->setObjectName("Player_aMoveTopCardsToGraveyard"); + + gridLayout_moveDeck->addWidget(Player_aMoveTopCardsToGraveyard, 1, 1, 1, 1); + + lbl_Player_aMoveTopCardToExile = new QLabel(groupBox_moveDeck); + lbl_Player_aMoveTopCardToExile->setObjectName("lbl_Player_aMoveTopCardToExile"); + + gridLayout_moveDeck->addWidget(lbl_Player_aMoveTopCardToExile, 2, 0, 1, 1); + + Player_aMoveTopCardToExile = new SequenceEdit("Player/aMoveTopCardToExile", groupBox_moveDeck); + Player_aMoveTopCardToExile->setObjectName("Player_aMoveTopCardToExile"); + + gridLayout_moveDeck->addWidget(Player_aMoveTopCardToExile, 2, 1, 1, 1); + + lbl_Player_aMoveTopCardsToExile = new QLabel(groupBox_moveDeck); + lbl_Player_aMoveTopCardsToExile->setObjectName("lbl_Player_aMoveTopCardsToExile"); + + gridLayout_moveDeck->addWidget(lbl_Player_aMoveTopCardsToExile, 3, 0, 1, 1); + + Player_aMoveTopCardsToExile = new SequenceEdit("Player/aMoveTopCardsToExile", groupBox_moveDeck); + Player_aMoveTopCardsToExile->setObjectName("Player_aMoveTopCardsToExile"); + + gridLayout_moveDeck->addWidget(Player_aMoveTopCardsToExile, 3, 1, 1, 1); + + gridLayout_20->addWidget(groupBox_moveDeck, 1, 1, 1, 1); + + groupBox_gameLobby = new QGroupBox(tab_3); + groupBox_gameLobby->setObjectName("groupBox_gameLobby"); + gridLayout_gameLobby = new QGridLayout(groupBox_gameLobby); + gridLayout_gameLobby->setObjectName("gridLayout_gameLobby"); + DeckViewContainer_loadRemoteButton = new SequenceEdit("DeckViewContainer/loadRemoteButton", groupBox_gameLobby); + DeckViewContainer_loadRemoteButton->setObjectName("DeckViewContainer_loadRemoteButton"); + + gridLayout_gameLobby->addWidget(DeckViewContainer_loadRemoteButton, 2, 1, 1, 1); + + DeckViewContainer_loadLocalButton = new SequenceEdit("DeckViewContainer/loadLocalButton", groupBox_gameLobby); + DeckViewContainer_loadLocalButton->setObjectName("DeckViewContainer_loadLocalButton"); + + gridLayout_gameLobby->addWidget(DeckViewContainer_loadLocalButton, 0, 1, 1, 1); + + lbl_DeckViewContainer_loadRemoteButton = new QLabel(groupBox_gameLobby); + lbl_DeckViewContainer_loadRemoteButton->setObjectName("lbl_DeckViewContainer_loadRemoteButton"); + + gridLayout_gameLobby->addWidget(lbl_DeckViewContainer_loadRemoteButton, 2, 0, 1, 1); + + lbl_DeckViewContainer_loadLocalButton = new QLabel(groupBox_gameLobby); + lbl_DeckViewContainer_loadLocalButton->setObjectName("lbl_DeckViewContainer_loadLocalButton"); + + gridLayout_gameLobby->addWidget(lbl_DeckViewContainer_loadLocalButton, 0, 0, 1, 1); + + gridLayout_20->addWidget(groupBox_gameLobby, 1, 2, 1, 1); + verticalSpacer_3 = new QSpacerItem(20, 40, QSizePolicy::Minimum, QSizePolicy::Expanding); gridLayout_20->addItem(verticalSpacer_3, 2, 1, 1, 1); tabWidget->addTab(tab_3, QString()); @@ -1747,12 +1805,13 @@ public: gridLayout_11->setSpacing(3); gridLayout_12->setSpacing(3); gridLayout_13->setSpacing(3); - gridLayout_14->setSpacing(3); - gridLayout_15->setSpacing(3); - gridLayout_16->setSpacing(3); + gridLayout_moveDeck->setSpacing(3); + gridLayout_draw->setSpacing(3); + gridLayout_moveCard->setSpacing(3); + gridLayout_view->setSpacing(3); + gridLayout_gameLobby->setSpacing(3); + gridLayout_gameplay->setSpacing(3); gridLayout_17->setSpacing(3); - gridLayout_18->setSpacing(3); - gridLayout_19->setSpacing(3); gridLayout_20->setSpacing(3); verticalLayout->setSpacing(3); @@ -1893,24 +1952,29 @@ public: lbl_Player_aSetAnnotation->setText(QApplication::translate("shortcutsTab", "Set annotation", 0)); tabWidget->setTabText(tabWidget->indexOf(tab_2), QApplication::translate("shortcutsTab", "Phases | P/T | Playing Area", 0)); - groupBox_15->setTitle(QApplication::translate("shortcutsTab", "Move card to", 0)); + groupBox_moveCard->setTitle(QApplication::translate("shortcutsTab", "Move selected card to", 0)); lbl_Player_aMoveToBottomLibrary->setText(QApplication::translate("shortcutsTab", "Bottom library", 0)); lbl_Player_aMoveToTopLibrary->setText(QApplication::translate("shortcutsTab", "Top library", 0)); lbl_Player_aMoveToGraveyard->setText(QApplication::translate("shortcutsTab", "Graveyard", 0)); lbl_Player_aMoveToExile->setText(QApplication::translate("shortcutsTab", "Exile", 0)); lbl_Player_aMoveToHand->setText(QApplication::translate("shortcutsTab", "Hand", 0)); lbl_Player_aMoveTopToPlayFaceDown->setText(QApplication::translate("shortcutsTab", "Play face down")); - groupBox_16->setTitle(QApplication::translate("shortcutsTab", "View", 0)); + groupBox_view->setTitle(QApplication::translate("shortcutsTab", "View", 0)); lbl_Player_aViewGraveyard->setText(QApplication::translate("shortcutsTab", "Graveyard", 0)); lbl_Player_aViewLibrary->setText(QApplication::translate("shortcutsTab", "Library", 0)); - lbl_Player_aViewTopCards->setText(QApplication::translate("shortcutsTab", "Tops card of library", 0)); + lbl_Player_aViewTopCards->setText(QApplication::translate("shortcutsTab", "Top cards of library", 0)); lbl_Player_aViewSideboard->setText(QApplication::translate("shortcutsTab", "Sideboard", 0)); lbl_Player_aViewRfg->setText(QApplication::translate("shortcutsTab", "Exile", 0)); lbl_GameView_aCloseMostRecentZoneView->setText(QApplication::translate("shortcutsTab", "Close recent view", 0)); - groupBox_17->setTitle(QApplication::translate("shortcutsTab", "Game Lobby", 0)); + groupBox_moveDeck->setTitle(QApplication::translate("shortcutsTab", "Move top card to", 0)); + lbl_Player_aMoveTopCardToGraveyard->setText(QApplication::translate("shortcutsTab", "Graveyard Once", 0)); + lbl_Player_aMoveTopCardsToGraveyard->setText(QApplication::translate("shortcutsTab", "Graveyard Multiple", 0)); + lbl_Player_aMoveTopCardToExile->setText(QApplication::translate("shortcutsTab", "Exile Once", 0)); + lbl_Player_aMoveTopCardsToExile->setText(QApplication::translate("shortcutsTab", "Exile Multiple", 0)); + groupBox_gameLobby->setTitle(QApplication::translate("shortcutsTab", "Game Lobby", 0)); lbl_DeckViewContainer_loadRemoteButton->setText(QApplication::translate("shortcutsTab", "Load remote deck", 0)); lbl_DeckViewContainer_loadLocalButton->setText(QApplication::translate("shortcutsTab", "Load local deck", 0)); - groupBox_18->setTitle(QApplication::translate("shortcutsTab", "Gameplay", 0)); + groupBox_gameplay->setTitle(QApplication::translate("shortcutsTab", "Gameplay", 0)); lbl_Player_aDrawArrow->setText(QApplication::translate("shortcutsTab", "Draw arrow", 0)); lbl_TabGame_aLeaveGame->setText(QApplication::translate("shortcutsTab", "Leave game", 0)); lbl_TabGame_aRemoveLocalArrows->setText(QApplication::translate("shortcutsTab", "Remove local arrows", 0)); @@ -1919,14 +1983,14 @@ public: lbl_TabGame_aRotateViewCW->setText(QApplication::translate("shortcutsTab", "Rotate view CW", 0)); lbl_Player_aShuffle->setText(QApplication::translate("shortcutsTab", "Shuffle library", 0)); lbl_TabGame_aRotateViewCCW->setText(QApplication::translate("shortcutsTab", "Rotate view CCW", 0)); - groupBox_14->setTitle(QApplication::translate("shortcutsTab", "Draw", 0)); + groupBox_draw->setTitle(QApplication::translate("shortcutsTab", "Draw", 0)); lbl_Player_aMulligan->setText(QApplication::translate("shortcutsTab", "Mulligan", 0)); lbl_Player_aDrawCard->setText(QApplication::translate("shortcutsTab", "Draw card", 0)); lbl_Player_aDrawCards->setText(QApplication::translate("shortcutsTab", "Draw cards", 0)); lbl_Player_aUndoDraw->setText(QApplication::translate("shortcutsTab", "Undo draw", 0)); lbl_Player_aAlwaysRevealTopCard->setText(QApplication::translate("shortcutsTab", "Always reveal top card", 0)); tabWidget->setTabText(tabWidget->indexOf(tab_3), - QApplication::translate("shortcutsTab", "Draw | Move | View | Gameplay", 0)); + QApplication::translate("shortcutsTab", "Gameplay | Draw | Move | View", 0)); tabWidget->setTabText(tabWidget->indexOf(tab_4), QApplication::translate("shortcutsTab", "Counters", 0)); faqLabel->setText(QString("%2") .arg(WIKI) diff --git a/cockatrice/src/shortcutssettings.cpp b/cockatrice/src/shortcutssettings.cpp index 66078c29..002ae8e5 100644 --- a/cockatrice/src/shortcutssettings.cpp +++ b/cockatrice/src/shortcutssettings.cpp @@ -4,19 +4,18 @@ #include #include -ShortcutsSettings::ShortcutsSettings(QString settingsPath, QObject *parent) : QObject(parent) +ShortcutsSettings::ShortcutsSettings(const QString &settingsPath, QObject *parent) : QObject(parent) { - this->settingsFilePath = std::move(settingsPath); - this->settingsFilePath.append("shortcuts.ini"); - fillDefaultShorcuts(); - shortCuts = QMap>(defaultShortCuts); + shortCuts = defaultShortCuts; + settingsFilePath = settingsPath; + settingsFilePath.append("shortcuts.ini"); bool exists = QFile(settingsFilePath).exists(); QSettings shortCutsFile(settingsFilePath, QSettings::IniFormat); if (exists) { - shortCutsFile.beginGroup("Custom"); + shortCutsFile.beginGroup(custom); const QStringList customKeys = shortCutsFile.allKeys(); QMap invalidItems; @@ -55,114 +54,123 @@ ShortcutsSettings::ShortcutsSettings(QString settingsPath, QObject *parent) : QO } } -QList ShortcutsSettings::getShortcut(QString name) +QList ShortcutsSettings::getDefaultShortcut(const QString &name) const +{ + return defaultShortCuts.value(name, QList()); +} + +QList ShortcutsSettings::getShortcut(const QString &name) const { if (shortCuts.contains(name)) { return shortCuts.value(name); } - return defaultShortCuts.value(name, QList()); + return getDefaultShortcut(name); } -QKeySequence ShortcutsSettings::getSingleShortcut(QString name) +QKeySequence ShortcutsSettings::getSingleShortcut(const QString &name) const { - return getShortcut(std::move(name)).at(0); + return getShortcut(name).at(0); } -QString ShortcutsSettings::getDefaultShortcutString(QString name) +QString ShortcutsSettings::getDefaultShortcutString(const QString &name) const { - return stringifySequence(defaultShortCuts.value(name)); + return stringifySequence(getDefaultShortcut(name)); } -QString ShortcutsSettings::getShortcutString(QString name) +QString ShortcutsSettings::getShortcutString(const QString &name) const { - return stringifySequence(shortCuts.value(name)); + return stringifySequence(getShortcut(name)); } -QString ShortcutsSettings::stringifySequence(QList Sequence) const +QString ShortcutsSettings::stringifySequence(const QList &Sequence) const { - QString stringSequence; + QStringList stringSequence; for (int i = 0; i < Sequence.size(); ++i) { stringSequence.append(Sequence.at(i).toString(QKeySequence::PortableText)); - if (i < Sequence.size() - 1) { - stringSequence.append(";"); - } } - return stringSequence; + return stringSequence.join(sep); } -QList ShortcutsSettings::parseSequenceString(QString stringSequence) +QList ShortcutsSettings::parseSequenceString(const QString &stringSequence) const { - QStringList Sequences = stringSequence.split(";"); QList SequenceList; - for (QStringList::const_iterator ss = Sequences.constBegin(); ss != Sequences.constEnd(); ++ss) { - SequenceList.append(QKeySequence(*ss, QKeySequence::PortableText)); + for (const QString &shortcut : stringSequence.split(sep)) { + SequenceList.append(QKeySequence(shortcut, QKeySequence::PortableText)); } return SequenceList; } -void ShortcutsSettings::setShortcuts(QString name, QList Sequence) +void ShortcutsSettings::setShortcuts(const QString &name, const QList &Sequence) { shortCuts[name] = Sequence; QSettings shortCutsFile(settingsFilePath, QSettings::IniFormat); - shortCutsFile.beginGroup("Custom"); - QString stringSequence = stringifySequence(Sequence); - shortCutsFile.setValue(name, stringSequence); + shortCutsFile.beginGroup(custom); + shortCutsFile.setValue(name, stringifySequence(Sequence)); shortCutsFile.endGroup(); - emit shortCutchanged(); + emit shortCutChanged(); } -void ShortcutsSettings::setShortcuts(QString name, QKeySequence Sequence) +void ShortcutsSettings::setShortcuts(const QString &name, const QKeySequence &Sequence) { - setShortcuts(std::move(name), QList() << Sequence); + setShortcuts(name, QList{Sequence}); } -void ShortcutsSettings::setShortcuts(QString name, QString Sequences) +void ShortcutsSettings::setShortcuts(const QString &name, const QString &Sequences) { - setShortcuts(std::move(name), parseSequenceString(std::move(Sequences))); + setShortcuts(name, parseSequenceString(Sequences)); } -bool ShortcutsSettings::isKeyAllowed(QString name, QString Sequences) +void ShortcutsSettings::resetAllShortcuts() +{ + shortCuts = defaultShortCuts; + QSettings shortCutsFile(settingsFilePath, QSettings::IniFormat); + shortCutsFile.beginGroup(custom); + shortCutsFile.remove(""); + shortCutsFile.endGroup(); + emit shortCutChanged(); + emit allShortCutsReset(); +} + +void ShortcutsSettings::clearAllShortcuts() +{ + QSettings shortCutsFile(settingsFilePath, QSettings::IniFormat); + shortCutsFile.beginGroup(custom); + for (auto it = shortCuts.begin(); it != shortCuts.end(); ++it) { + it.value() = parseSequenceString(""); + shortCutsFile.setValue(it.key(), ""); + } + shortCutsFile.endGroup(); + emit shortCutChanged(); + emit allShortCutsClear(); +} + +bool ShortcutsSettings::isKeyAllowed(const QString &name, const QString &Sequences) const { // if the shortcut is not to be used in deck-editor then it doesn't matter if (name.startsWith("Player")) { return true; } - QString checkSequence = Sequences.split(";").last(); - QStringList forbiddenKeys = (QStringList() << "Del" - << "Backspace" - << "Down" - << "Up" - << "Left" - << "Right" - << "Return" - << "Enter" - << "Menu" - << "Ctrl+Alt+-" - << "Ctrl+Alt+=" - << "Ctrl+Alt+[" - << "Ctrl+Alt+]" - << "Tab" - << "Space" - << "Shift+S" - << "Shift+Left" - << "Shift+Right"); + QString checkSequence = Sequences.split(sep).last(); + QStringList forbiddenKeys{"Del", "Backspace", "Down", "Up", "Left", "Right", + "Return", "Enter", "Menu", "Ctrl+Alt+-", "Ctrl+Alt+=", "Ctrl+Alt+[", + "Ctrl+Alt+]", "Tab", "Space", "Shift+S", "Shift+Left", "Shift+Right"}; return !forbiddenKeys.contains(checkSequence); } -bool ShortcutsSettings::isValid(QString name, QString Sequences) +bool ShortcutsSettings::isValid(const QString &name, const QString &Sequences) const { - QString checkSequence = Sequences.split(";").last(); + QString checkSequence = Sequences.split(sep).last(); QString checkKey = name.left(name.indexOf("/")); QList allKeys = shortCuts.keys(); for (const auto &key : allKeys) { if (key.startsWith(checkKey) || key.startsWith("MainWindow") || checkKey.startsWith("MainWindow")) { QString storedSequence = stringifySequence(shortCuts.value(key)); - QStringList stringSequences = storedSequence.split(";"); + QStringList stringSequences = storedSequence.split(sep); if (stringSequences.contains(checkSequence)) { return false; } @@ -170,161 +178,3 @@ bool ShortcutsSettings::isValid(QString name, QString Sequences) } return true; } - -void ShortcutsSettings::resetAllShortcuts() -{ - for (auto it = defaultShortCuts.begin(); it != defaultShortCuts.end(); ++it) { - setShortcuts(it.key(), it.value()); - } - emit allShortCutsReset(); -} - -void ShortcutsSettings::clearAllShortcuts() -{ - for (auto it = shortCuts.begin(); it != shortCuts.end(); ++it) { - setShortcuts(it.key(), ""); - } - emit allShortCutsClear(); -} - -void ShortcutsSettings::fillDefaultShorcuts() -{ - defaultShortCuts["MainWindow/aCheckCardUpdates"] = parseSequenceString(""); - defaultShortCuts["MainWindow/aConnect"] = parseSequenceString("Ctrl+L"); - 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"] = parseSequenceString(""); - defaultShortCuts["TabDeckEditor/aClearFilterAll"] = parseSequenceString(""); - defaultShortCuts["TabDeckEditor/aClearFilterOne"] = parseSequenceString(""); - defaultShortCuts["TabDeckEditor/aClose"] = parseSequenceString(""); - defaultShortCuts["TabDeckEditor/aDecrement"] = parseSequenceString("-"); - defaultShortCuts["TabDeckEditor/aManageSets"] = parseSequenceString(""); - defaultShortCuts["TabDeckEditor/aEditTokens"] = parseSequenceString(""); - defaultShortCuts["TabDeckEditor/aExportDeckDecklist"] = parseSequenceString(""); - defaultShortCuts["TabDeckEditor/aIncrement"] = parseSequenceString("+"); - defaultShortCuts["TabDeckEditor/aLoadDeck"] = parseSequenceString("Ctrl+O"); - defaultShortCuts["TabDeckEditor/aLoadDeckFromClipboard"] = parseSequenceString("Ctrl+Shift+V"); - defaultShortCuts["TabDeckEditor/aNewDeck"] = parseSequenceString("Ctrl+N"); - defaultShortCuts["TabDeckEditor/aOpenCustomFolder"] = parseSequenceString(""); - defaultShortCuts["TabDeckEditor/aPrintDeck"] = parseSequenceString("Ctrl+P"); - defaultShortCuts["TabDeckEditor/aRemoveCard"] = parseSequenceString(""); - defaultShortCuts["TabDeckEditor/aResetLayout"] = parseSequenceString(""); - defaultShortCuts["TabDeckEditor/aSaveDeck"] = parseSequenceString("Ctrl+S"); - defaultShortCuts["TabDeckEditor/aSaveDeckAs"] = parseSequenceString(""); - defaultShortCuts["TabDeckEditor/aSaveDeckToClipboard"] = parseSequenceString("Ctrl+Shift+C"); - defaultShortCuts["TabDeckEditor/aSaveDeckToClipboardRaw"] = parseSequenceString("Ctrl+Shift+R"); - - defaultShortCuts["DeckViewContainer/loadLocalButton"] = parseSequenceString("Ctrl+O"); - defaultShortCuts["DeckViewContainer/loadRemoteButton"] = parseSequenceString("Ctrl+Alt+O"); - - 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+Alt+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/aCreateRelatedTokens"] = parseSequenceString("Ctrl+Shift+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/aResetPT"] = parseSequenceString("Ctrl+Alt+0"); - defaultShortCuts["Player/aShuffle"] = parseSequenceString("Ctrl+S"); - defaultShortCuts["Player/aTap"] = parseSequenceString(""); - defaultShortCuts["Player/aUnattach"] = parseSequenceString(""); - defaultShortCuts["Player/aUndoDraw"] = parseSequenceString("Ctrl+Shift+D"); - 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(""); - defaultShortCuts["Player/aRotateViewCW"] = parseSequenceString(""); - 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["Player/aIncCounter_w"] = parseSequenceString(""); - defaultShortCuts["Player/aDecCounter_w"] = parseSequenceString(""); - defaultShortCuts["Player/aSetCounter_w"] = parseSequenceString(""); - - defaultShortCuts["Player/aIncCounter_u"] = parseSequenceString(""); - defaultShortCuts["Player/aDecCounter_u"] = parseSequenceString(""); - defaultShortCuts["Player/aSetCounter_u"] = parseSequenceString(""); - - defaultShortCuts["Player/aIncCounter_b"] = parseSequenceString(""); - defaultShortCuts["Player/aDecCounter_b"] = parseSequenceString(""); - defaultShortCuts["Player/aSetCounter_b"] = parseSequenceString(""); - - defaultShortCuts["Player/aIncCounter_r"] = parseSequenceString(""); - defaultShortCuts["Player/aDecCounter_r"] = parseSequenceString(""); - defaultShortCuts["Player/aSetCounter_r"] = parseSequenceString(""); - - defaultShortCuts["Player/aIncCounter_g"] = parseSequenceString(""); - defaultShortCuts["Player/aDecCounter_g"] = parseSequenceString(""); - defaultShortCuts["Player/aSetCounter_g"] = parseSequenceString(""); - - defaultShortCuts["Player/aIncCounter_x"] = parseSequenceString(""); - defaultShortCuts["Player/aDecCounter_x"] = parseSequenceString(""); - defaultShortCuts["Player/aSetCounter_x"] = parseSequenceString(""); - - defaultShortCuts["Player/aIncCounter_storm"] = parseSequenceString(""); - defaultShortCuts["Player/aDecCounter_storm"] = parseSequenceString(""); - defaultShortCuts["Player/aSetCounter_storm"] = parseSequenceString(""); - - defaultShortCuts["tab_room/aClearChat"] = parseSequenceString("F12"); - defaultShortCuts["DlgLoadDeckFromClipboard/refreshButton"] = parseSequenceString("F5"); - defaultShortCuts["Player/aResetLayout"] = parseSequenceString(""); - defaultShortCuts["Player/aMoveTopToPlayFaceDown"] = parseSequenceString("Ctrl+Shift+E"); -} diff --git a/cockatrice/src/shortcutssettings.h b/cockatrice/src/shortcutssettings.h index 6d799448..902db3d7 100644 --- a/cockatrice/src/shortcutssettings.h +++ b/cockatrice/src/shortcutssettings.h @@ -1,8 +1,8 @@ #ifndef SHORTCUTSSETTINGS_H #define SHORTCUTSSETTINGS_H +#include #include -#include #include #include @@ -10,37 +10,185 @@ class ShortcutsSettings : public QObject { Q_OBJECT public: - ShortcutsSettings(QString settingsFilePath, QObject *parent = nullptr); + ShortcutsSettings(const QString &settingsFilePath, QObject *parent = nullptr); - QList getShortcut(QString name); - QKeySequence getSingleShortcut(QString name); + QList getDefaultShortcut(const QString &name) const; + QList getShortcut(const QString &name) const; + QKeySequence getSingleShortcut(const QString &name) const; + QString getDefaultShortcutString(const QString &name) const; + QString getShortcutString(const QString &name) const; - QString getDefaultShortcutString(QString name); - QString getShortcutString(QString name); + void setShortcuts(const QString &name, const QList &Sequence); + void setShortcuts(const QString &name, const QKeySequence &Sequence); + void setShortcuts(const QString &name, const QString &Sequences); - void setShortcuts(QString name, QList Sequence); - void setShortcuts(QString name, QKeySequence Sequence); - void setShortcuts(QString name, QString Sequences); - - bool isKeyAllowed(QString name, QString Sequences); - bool isValid(QString name, QString Sequences); + bool isKeyAllowed(const QString &name, const QString &Sequences) const; + bool isValid(const QString &name, const QString &Sequences) const; void resetAllShortcuts(); void clearAllShortcuts(); signals: - void shortCutchanged(); + void shortCutChanged(); void allShortCutsReset(); void allShortCutsClear(); private: + const QChar sep = ';'; + const QString custom = "Custom"; QString settingsFilePath; - QMap> shortCuts; - QMap> defaultShortCuts; - void fillDefaultShorcuts(); + QHash> shortCuts; - QString stringifySequence(QList Sequence) const; - QList parseSequenceString(QString stringSequence); + QString stringifySequence(const QList &Sequence) const; + QList parseSequenceString(const QString &stringSequence) const; + + const QHash> defaultShortCuts{ + {"MainWindow/aCheckCardUpdates", parseSequenceString("")}, + {"MainWindow/aConnect", parseSequenceString("Ctrl+L")}, + {"MainWindow/aDeckEditor", parseSequenceString("")}, + {"MainWindow/aDisconnect", parseSequenceString("")}, + {"MainWindow/aExit", parseSequenceString("")}, + {"MainWindow/aFullScreen", parseSequenceString("Ctrl+F")}, + {"MainWindow/aRegister", parseSequenceString("")}, + {"MainWindow/aSettings", parseSequenceString("")}, + {"MainWindow/aSinglePlayer", parseSequenceString("")}, + {"MainWindow/aWatchReplay", parseSequenceString("")}, + + {"TabDeckEditor/aAnalyzeDeck", parseSequenceString("")}, + {"TabDeckEditor/aClearFilterAll", parseSequenceString("")}, + {"TabDeckEditor/aClearFilterOne", parseSequenceString("")}, + {"TabDeckEditor/aClose", parseSequenceString("")}, + {"TabDeckEditor/aDecrement", parseSequenceString("-")}, + {"TabDeckEditor/aManageSets", parseSequenceString("")}, + {"TabDeckEditor/aEditTokens", parseSequenceString("")}, + {"TabDeckEditor/aExportDeckDecklist", parseSequenceString("")}, + {"TabDeckEditor/aIncrement", parseSequenceString("+")}, + {"TabDeckEditor/aLoadDeck", parseSequenceString("Ctrl+O")}, + {"TabDeckEditor/aLoadDeckFromClipboard", parseSequenceString("Ctrl+Shift+V")}, + {"TabDeckEditor/aNewDeck", parseSequenceString("Ctrl+N")}, + {"TabDeckEditor/aOpenCustomFolder", parseSequenceString("")}, + {"TabDeckEditor/aPrintDeck", parseSequenceString("Ctrl+P")}, + {"TabDeckEditor/aRemoveCard", parseSequenceString("")}, + {"TabDeckEditor/aResetLayout", parseSequenceString("")}, + {"TabDeckEditor/aSaveDeck", parseSequenceString("Ctrl+S")}, + {"TabDeckEditor/aSaveDeckAs", parseSequenceString("")}, + {"TabDeckEditor/aSaveDeckToClipboard", parseSequenceString("Ctrl+Shift+C")}, + {"TabDeckEditor/aSaveDeckToClipboardRaw", parseSequenceString("Ctrl+Shift+R")}, + + {"DeckViewContainer/loadLocalButton", parseSequenceString("Ctrl+O")}, + {"DeckViewContainer/loadRemoteButton", parseSequenceString("Ctrl+Alt+O")}, + + {"Player/aSet", parseSequenceString("Ctrl+L")}, + {"Player/aAlwaysRevealTopCard", parseSequenceString("Ctrl+N")}, + {"Player/aCloseMostRecentZoneView", parseSequenceString("Esc")}, + {"Player/aDrawCard", parseSequenceString("Ctrl+D")}, + {"Player/aDrawCards", parseSequenceString("Ctrl+E")}, + {"Player/aDec", parseSequenceString("F11")}, + {"Player/aInc", parseSequenceString("F12")}, + {"Player/aMoveTopCardToGraveyard", parseSequenceString("")}, + {"Player/aMoveTopCardsToGraveyard", parseSequenceString("Ctrl+Shift+M")}, + {"Player/aMoveTopCardToExile", parseSequenceString("")}, + {"Player/aMoveTopCardsToExile", parseSequenceString("")}, + {"Player/aMoveTopToPlayFaceDown", parseSequenceString("Ctrl+Shift+E")}, + {"Player/aMulligan", parseSequenceString("Ctrl+M")}, + {"Player/aPeek", parseSequenceString("")}, + {"Player/aPlay", parseSequenceString("")}, + {"Player/aResetLayout", parseSequenceString("")}, + {"Player/aRollDie", parseSequenceString("Ctrl+I")}, + {"Player/aShuffle", parseSequenceString("Ctrl+S")}, + {"Player/aUndoDraw", parseSequenceString("Ctrl+Shift+D")}, + {"Player/aUntapAll", parseSequenceString("Ctrl+U")}, + {"Player/aViewGraveyard", parseSequenceString("F4")}, + {"Player/aViewLibrary", parseSequenceString("F3")}, + {"Player/aViewRfg", parseSequenceString("")}, + {"Player/aViewSideboard", parseSequenceString("Ctrl+F3")}, + {"Player/aViewTopCards", parseSequenceString("Ctrl+W")}, + + {"Player/aAttach", parseSequenceString("Ctrl+Alt+A")}, + {"Player/aClone", parseSequenceString("Ctrl+J")}, + {"Player/aCreateAnotherToken", parseSequenceString("Ctrl+G")}, + {"Player/aCreateToken", parseSequenceString("Ctrl+T")}, + {"Player/aCreateRelatedTokens", parseSequenceString("Ctrl+Shift+T")}, + {"Player/aDoesntUntap", parseSequenceString("")}, + {"Player/aDrawArrow", parseSequenceString("")}, + {"Player/aFlip", parseSequenceString("")}, + {"Player/aMoveToBottomLibrary", parseSequenceString("")}, + {"Player/aMoveToExile", parseSequenceString("")}, + {"Player/aMoveToGraveyard", parseSequenceString("Ctrl+Del")}, + {"Player/aMoveToHand", parseSequenceString("")}, + {"Player/aMoveToTopLibrary", parseSequenceString("")}, + {"Player/aSetAnnotation", parseSequenceString("")}, + {"Player/aTap", parseSequenceString("")}, + {"Player/aUnattach", parseSequenceString("")}, + + {"Player/aCCGreen", parseSequenceString("")}, + {"Player/aCCRed", parseSequenceString("")}, + {"Player/aCCYellow", parseSequenceString("")}, + {"Player/aRCGreen", parseSequenceString("")}, + {"Player/aRCRed", parseSequenceString("")}, + {"Player/aRCYellow", parseSequenceString("")}, + {"Player/aSCGreen", parseSequenceString("")}, + {"Player/aSCRed", parseSequenceString("")}, + {"Player/aSCYellow", parseSequenceString("")}, + + {"Player/aDecP", parseSequenceString("Ctrl+-")}, + {"Player/aDecPT", parseSequenceString("Ctrl+Alt+-")}, + {"Player/aDecT", parseSequenceString("Alt+-")}, + {"Player/aIncP", parseSequenceString("Ctrl++")}, + {"Player/aIncPT", parseSequenceString("Ctrl+Alt++")}, + {"Player/aIncT", parseSequenceString("Alt++")}, + {"Player/aSetPT", parseSequenceString("Ctrl+P")}, + {"Player/aResetPT", parseSequenceString("Ctrl+Alt+0")}, + + {"Player/aConcede", parseSequenceString("F2")}, + {"Player/aLeaveGame", parseSequenceString("Ctrl+Q")}, + {"Player/aNextPhase", parseSequenceString("Ctrl+Space;Tab")}, + {"Player/aNextTurn", parseSequenceString("Ctrl+Return;Ctrl+Enter")}, + {"Player/aRemoveLocalArrows", parseSequenceString("Ctrl+R")}, + {"Player/aRotateViewCCW", parseSequenceString("")}, + {"Player/aRotateViewCW", parseSequenceString("")}, + {"Player/phase0", parseSequenceString("F5")}, + {"Player/phase1", parseSequenceString("")}, + {"Player/phase10", parseSequenceString("F10")}, + {"Player/phase2", parseSequenceString("F6")}, + {"Player/phase3", parseSequenceString("F7")}, + {"Player/phase4", parseSequenceString("F8")}, + {"Player/phase5", parseSequenceString("")}, + {"Player/phase6", parseSequenceString("")}, + {"Player/phase7", parseSequenceString("")}, + {"Player/phase8", parseSequenceString("")}, + {"Player/phase9", parseSequenceString("F9")}, + + {"Player/aDecCounter_w", parseSequenceString("")}, + {"Player/aIncCounter_w", parseSequenceString("")}, + {"Player/aSetCounter_w", parseSequenceString("")}, + + {"Player/aDecCounter_u", parseSequenceString("")}, + {"Player/aIncCounter_u", parseSequenceString("")}, + {"Player/aSetCounter_u", parseSequenceString("")}, + + {"Player/aDecCounter_b", parseSequenceString("")}, + {"Player/aIncCounter_b", parseSequenceString("")}, + {"Player/aSetCounter_b", parseSequenceString("")}, + + {"Player/aDecCounter_r", parseSequenceString("")}, + {"Player/aIncCounter_r", parseSequenceString("")}, + {"Player/aSetCounter_r", parseSequenceString("")}, + + {"Player/aDecCounter_g", parseSequenceString("")}, + {"Player/aIncCounter_g", parseSequenceString("")}, + {"Player/aSetCounter_g", parseSequenceString("")}, + + {"Player/aDecCounter_x", parseSequenceString("")}, + {"Player/aIncCounter_x", parseSequenceString("")}, + {"Player/aSetCounter_x", parseSequenceString("")}, + + {"Player/aDecCounter_storm", parseSequenceString("")}, + {"Player/aIncCounter_storm", parseSequenceString("")}, + {"Player/aSetCounter_storm", parseSequenceString("")}, + + {"tab_room/aClearChat", parseSequenceString("F12")}, + {"DlgLoadDeckFromClipboard/refreshButton", parseSequenceString("F5")}}; }; #endif // SHORTCUTSSETTINGS_H diff --git a/cockatrice/src/tab_deck_editor.cpp b/cockatrice/src/tab_deck_editor.cpp index d44f8bab..79556bda 100644 --- a/cockatrice/src/tab_deck_editor.cpp +++ b/cockatrice/src/tab_deck_editor.cpp @@ -590,7 +590,7 @@ TabDeckEditor::TabDeckEditor(TabSupervisor *_tabSupervisor, QWidget *parent) this->installEventFilter(this); retranslateUi(); - connect(&settingsCache->shortcuts(), SIGNAL(shortCutchanged()), this, SLOT(refreshShortcuts())); + connect(&settingsCache->shortcuts(), SIGNAL(shortCutChanged()), this, SLOT(refreshShortcuts())); refreshShortcuts(); QTimer::singleShot(0, this, SLOT(loadLayout())); diff --git a/cockatrice/src/tab_game.cpp b/cockatrice/src/tab_game.cpp index 33be857f..9fdc79b1 100644 --- a/cockatrice/src/tab_game.cpp +++ b/cockatrice/src/tab_game.cpp @@ -130,7 +130,7 @@ DeckViewContainer::DeckViewContainer(int _playerId, TabGame *parent) setLayout(deckViewLayout); retranslateUi(); - connect(&settingsCache->shortcuts(), SIGNAL(shortCutchanged()), this, SLOT(refreshShortcuts())); + connect(&settingsCache->shortcuts(), SIGNAL(shortCutChanged()), this, SLOT(refreshShortcuts())); refreshShortcuts(); } @@ -375,7 +375,7 @@ TabGame::TabGame(TabSupervisor *_tabSupervisor, GameReplay *_replay) createReplayMenuItems(); createViewMenuItems(); retranslateUi(); - connect(&settingsCache->shortcuts(), SIGNAL(shortCutchanged()), this, SLOT(refreshShortcuts())); + connect(&settingsCache->shortcuts(), SIGNAL(shortCutChanged()), this, SLOT(refreshShortcuts())); refreshShortcuts(); messageLog->logReplayStarted(gameInfo.game_id()); @@ -414,7 +414,7 @@ TabGame::TabGame(TabSupervisor *_tabSupervisor, createMenuItems(); createViewMenuItems(); retranslateUi(); - connect(&settingsCache->shortcuts(), SIGNAL(shortCutchanged()), this, SLOT(refreshShortcuts())); + connect(&settingsCache->shortcuts(), SIGNAL(shortCutChanged()), this, SLOT(refreshShortcuts())); refreshShortcuts(); // append game to rooms game list for others to see diff --git a/cockatrice/src/window_main.cpp b/cockatrice/src/window_main.cpp index 603c4472..bdca76c9 100644 --- a/cockatrice/src/window_main.cpp +++ b/cockatrice/src/window_main.cpp @@ -811,7 +811,7 @@ MainWindow::MainWindow(QWidget *parent) createTrayIcon(); } - connect(&settingsCache->shortcuts(), SIGNAL(shortCutchanged()), this, SLOT(refreshShortcuts())); + connect(&settingsCache->shortcuts(), SIGNAL(shortCutChanged()), this, SLOT(refreshShortcuts())); refreshShortcuts(); connect(db, SIGNAL(cardDatabaseLoadingFailed()), this, SLOT(cardDatabaseLoadingFailed()));