From a433ce308245e501c34b18a04a06e97d6be51316 Mon Sep 17 00:00:00 2001 From: RickyRister Date: Tue, 5 Aug 2025 09:24:35 -0300 Subject: [PATCH] move cardMenu saving to TabGame --- cockatrice/src/client/tabs/tab_game.cpp | 22 ++++++++++++++++++++++ cockatrice/src/client/tabs/tab_game.h | 2 ++ cockatrice/src/game/player/player.cpp | 19 +------------------ cockatrice/src/game/player/player.h | 3 +-- 4 files changed, 26 insertions(+), 20 deletions(-) diff --git a/cockatrice/src/client/tabs/tab_game.cpp b/cockatrice/src/client/tabs/tab_game.cpp index f96949074..7c112e3e0 100644 --- a/cockatrice/src/client/tabs/tab_game.cpp +++ b/cockatrice/src/client/tabs/tab_game.cpp @@ -261,6 +261,10 @@ void TabGame::retranslateUi() sayLabel->setText(tr("&Say:")); } + if (aCardMenu) { + aCardMenu->setText(tr("Selected cards")); + } + viewMenu->setTitle(tr("&View")); cardInfoDockMenu->setTitle(tr("Card Info")); messageLayoutDockMenu->setTitle(tr("Messages")); @@ -576,6 +580,7 @@ Player *TabGame::addPlayer(int playerId, const ServerInfo_User &info) scene->addPlayer(newPlayer); connect(newPlayer, &Player::newCardAdded, this, &TabGame::newCardAdded); + connect(newPlayer, &Player::cardMenuUpdated, this, &TabGame::setCardMenu); messageLog->connectToPlayer(newPlayer); if (local && !spectator) { @@ -1232,6 +1237,18 @@ void TabGame::updateCardMenu(AbstractCardItem *card) } } +/** + * @param menu The menu to set. Pass in nullptr to set the menu to empty. + */ +void TabGame::setCardMenu(QMenu *menu) +{ + if (menu) { + aCardMenu->setMenu(menu); + } else { + aCardMenu->setMenu(new QMenu); + } +} + void TabGame::createMenuItems() { aNextPhase = new QAction(this); @@ -1285,6 +1302,11 @@ void TabGame::createMenuItems() gameMenu->addAction(aConcede); gameMenu->addAction(aFocusChat); gameMenu->addAction(aLeaveGame); + + gameMenu->addSeparator(); + + aCardMenu = gameMenu->addMenu(new QMenu(this)); + addTabMenu(gameMenu); } diff --git a/cockatrice/src/client/tabs/tab_game.h b/cockatrice/src/client/tabs/tab_game.h index 7927d44a6..0172d1022 100644 --- a/cockatrice/src/client/tabs/tab_game.h +++ b/cockatrice/src/client/tabs/tab_game.h @@ -118,6 +118,7 @@ private: *aPlayerListDockVisible, *aPlayerListDockFloating, *aReplayDockVisible, *aReplayDockFloating; QAction *aFocusChat; QList phaseActions; + QAction *aCardMenu; Player *addPlayer(int playerId, const ServerInfo_User &info); @@ -172,6 +173,7 @@ private slots: void adminLockChanged(bool lock); void newCardAdded(AbstractCardItem *card); void updateCardMenu(AbstractCardItem *card); + void setCardMenu(QMenu *menu); void actGameInfo(); void actConcede(); diff --git a/cockatrice/src/game/player/player.cpp b/cockatrice/src/game/player/player.cpp index 4983ecc25..bdf109530 100644 --- a/cockatrice/src/game/player/player.cpp +++ b/cockatrice/src/game/player/player.cpp @@ -449,11 +449,6 @@ Player::Player(const ServerInfo_User &info, int _id, bool _local, bool _judge, T initSayMenu(); } - aCardMenu = new QAction(this); - aCardMenu->setEnabled(false); - playerMenu->addSeparator(); - playerMenu->addAction(aCardMenu); - if (local || judge) { for (auto &playerList : playerLists) { @@ -870,8 +865,6 @@ void Player::retranslateUi() } } - aCardMenu->setText(tr("Selec&ted cards")); - if (local) { sayMenu->setTitle(tr("S&ay")); } @@ -4233,23 +4226,13 @@ QMenu *Player::updateCardMenu(const CardItem *card) { QMenu *menu = createCardMenu(card); - aCardMenu->setEnabled(menu != nullptr); if (menu) { - aCardMenu->setMenu(menu); + emit cardMenuUpdated(menu); } return menu; } -QMenu *Player::getCardMenu() const -{ - if (aCardMenu != nullptr) { - return aCardMenu->menu(); - } else { - return nullptr; - } -} - QString Player::getName() const { return QString::fromStdString(userInfo->name()); diff --git a/cockatrice/src/game/player/player.h b/cockatrice/src/game/player/player.h index 7f85b0eff..b4f901329 100644 --- a/cockatrice/src/game/player/player.h +++ b/cockatrice/src/game/player/player.h @@ -156,6 +156,7 @@ signals: void sizeChanged(); void playerCountChanged(); + void cardMenuUpdated(QMenu *cardMenu); public slots: void actUntapAll(); void actRollDie(); @@ -271,7 +272,6 @@ private: *aMoveBottomToPlayFaceDown, *aMoveBottomCardToTop, *aMoveBottomCardToGraveyard, *aMoveBottomCardToExile, *aMoveBottomCardsToGraveyard, *aMoveBottomCardsToExile, *aDrawBottomCard, *aDrawBottomCards; - QAction *aCardMenu; QList aAddCounter, aSetCounter, aRemoveCounter; QAction *aPlay, *aPlayFacedown, *aHide, *aTap, *aDoesntUntap, *aAttach, *aUnattach, *aDrawArrow, *aSetPT, *aResetPT, *aIncP, *aDecP, *aIncT, *aDecT, *aIncPT, *aDecPT, *aFlowP, *aFlowT, *aSetAnnotation, *aFlip, *aPeek, *aClone, @@ -487,7 +487,6 @@ public: return arrows; } QMenu *updateCardMenu(const CardItem *card); - QMenu *getCardMenu() const; QMenu *createCardMenu(const CardItem *card); bool getActive() const {