From dbfefdee58f64141fcdcafeb9e699d8137ff5810 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lukas=20Br=C3=BCbach?= Date: Fri, 12 Sep 2025 17:45:29 +0200 Subject: [PATCH] Refactor sideboard menu. Took 26 minutes --- .../src/game/player/menu/player_menu.cpp | 36 ++++--------------- cockatrice/src/game/player/menu/player_menu.h | 7 ++-- .../src/game/player/menu/sideboard_menu.cpp | 35 ++++++++++++++++++ .../src/game/player/menu/sideboard_menu.h | 23 ++++++++++++ 4 files changed, 67 insertions(+), 34 deletions(-) create mode 100644 cockatrice/src/game/player/menu/sideboard_menu.cpp create mode 100644 cockatrice/src/game/player/menu/sideboard_menu.h diff --git a/cockatrice/src/game/player/menu/player_menu.cpp b/cockatrice/src/game/player/menu/player_menu.cpp index 9478d4c25..43e22297d 100644 --- a/cockatrice/src/game/player/menu/player_menu.cpp +++ b/cockatrice/src/game/player/menu/player_menu.cpp @@ -47,14 +47,11 @@ PlayerMenu::PlayerMenu(Player *_player) : player(_player) playerMenu->addMenu(rfgMenu); if (player->getPlayerInfo()->getLocalOrJudge()) { - sbMenu = playerMenu->addMenu(QString()); - - aViewSideboard = new QAction(this); - connect(aViewSideboard, &QAction::triggered, playerActions, &PlayerActions::actViewSideboard); - - sbMenu->addAction(aViewSideboard); + sideboardMenu = new SideboardMenu(player, playerMenu); + playerMenu->addMenu(sideboardMenu); customZonesMenu = new CustomZoneMenu(player); + playerMenu->addMenu(customZonesMenu); playerMenu->addSeparator(); countersMenu = playerMenu->addMenu(QString()); @@ -62,9 +59,8 @@ PlayerMenu::PlayerMenu(Player *_player) : player(_player) utilityMenu = new UtilityMenu(player, playerMenu); } else { countersMenu = nullptr; - sbMenu = nullptr; + sideboardMenu = nullptr; customZonesMenu = nullptr; - aViewSideboard = nullptr; utilityMenu = nullptr; } @@ -99,7 +95,7 @@ void PlayerMenu::setMenusForGraphicItems() if (player->getPlayerInfo()->getLocalOrJudge()) { player->getGraphicsItem()->getHandZoneGraphicsItem()->setMenu(handMenu); player->getGraphicsItem()->getDeckZoneGraphicsItem()->setMenu(libraryMenu, libraryMenu->aDrawCard); - player->getGraphicsItem()->getSideboardZoneGraphicsItem()->setMenu(sbMenu); + player->getGraphicsItem()->getSideboardZoneGraphicsItem()->setMenu(sideboardMenu); } } @@ -215,11 +211,9 @@ void PlayerMenu::retranslateUi() rfgMenu->retranslateUi(); if (player->getPlayerInfo()->getLocalOrJudge()) { - aViewSideboard->setText(tr("&View sideboard")); - handMenu->retranslateUi(); - sbMenu->setTitle(tr("&Sideboard")); libraryMenu->retranslateUi(); + sideboardMenu->retranslateUi(); utilityMenu->retranslateUi(); countersMenu->setTitle(tr("&Counters")); customZonesMenu->retranslateUi(); @@ -234,24 +228,9 @@ void PlayerMenu::retranslateUi() } } -void PlayerMenu::setShortcutIfItExists(QAction *action, ShortcutKey shortcut) -{ - if (action) { - action->setShortcuts(shortcut); - } -} - -void PlayerMenu::clearShortcutIfItExists(QAction *action) -{ - if (action) { - action->setShortcut(QKeySequence()); - } -} - void PlayerMenu::setShortcutsActive() { shortcutsActive = true; - ShortcutsSettings &shortcuts = SettingsCache::instance().shortcuts(); if (handMenu) { handMenu->setShortcutsActive(); @@ -269,15 +248,12 @@ void PlayerMenu::setShortcutsActive() counterIterator.next().value()->setShortcutsActive(); } - setShortcutIfItExists(aViewSideboard, shortcuts.getShortcut("Player/aViewSideboard")); } void PlayerMenu::setShortcutsInactive() { shortcutsActive = false; - clearShortcutIfItExists(aViewSideboard); - QMapIterator counterIterator(player->getCounters()); while (counterIterator.hasNext()) { counterIterator.next().value()->setShortcutsInactive(); diff --git a/cockatrice/src/game/player/menu/player_menu.h b/cockatrice/src/game/player/menu/player_menu.h index e191db92e..678a5a3e9 100644 --- a/cockatrice/src/game/player/menu/player_menu.h +++ b/cockatrice/src/game/player/menu/player_menu.h @@ -9,6 +9,7 @@ #include "library_menu.h" #include "rfg_menu.h" #include "say_menu.h" +#include "sideboard_menu.h" #include "utility_menu.h" #include @@ -66,16 +67,15 @@ public: } void setShortcutsActive(); - void setShortcutIfItExists(QAction *action, ShortcutKey shortcut); - void clearShortcutIfItExists(QAction *action); void setShortcutsInactive(); private: Player *player; TearOffMenu *playerMenu; - QMenu *sbMenu, *countersMenu; + QMenu *countersMenu; HandMenu *handMenu; LibraryMenu *libraryMenu; + SideboardMenu *sideboardMenu; GraveyardMenu *graveMenu; RfgMenu *rfgMenu; UtilityMenu *utilityMenu; @@ -83,7 +83,6 @@ private: CustomZoneMenu *customZonesMenu; QList playerLists; QList allPlayersActions; - QAction *aViewSideboard; bool shortcutsActive; diff --git a/cockatrice/src/game/player/menu/sideboard_menu.cpp b/cockatrice/src/game/player/menu/sideboard_menu.cpp new file mode 100644 index 000000000..af5f24640 --- /dev/null +++ b/cockatrice/src/game/player/menu/sideboard_menu.cpp @@ -0,0 +1,35 @@ +#include "sideboard_menu.h" + +#include "../player.h" + +SideboardMenu::SideboardMenu(Player *player, QMenu *playerMenu) +{ + aViewSideboard = new QAction(this); + connect(aViewSideboard, &QAction::triggered, player->getPlayerActions(), &PlayerActions::actViewSideboard); + + if (player->getPlayerInfo()->getLocalOrJudge()) { + addAction(aViewSideboard); + } + + retranslateUi(); +} + +void SideboardMenu::retranslateUi() +{ + setTitle(tr("&Sideboard")); + aViewSideboard->setText(tr("&View sideboard")); +} + +void SideboardMenu::setShortcutsActive() +{ + ShortcutsSettings &shortcuts = SettingsCache::instance().shortcuts(); + + if (player->getPlayerInfo()->getLocalOrJudge()) { + aViewSideboard->setShortcuts(shortcuts.getShortcut("Player/aViewSideboard")); + } +} + +void SideboardMenu::setShortcutsInactive() +{ + aViewSideboard->setShortcut(QKeySequence()); +} \ No newline at end of file diff --git a/cockatrice/src/game/player/menu/sideboard_menu.h b/cockatrice/src/game/player/menu/sideboard_menu.h new file mode 100644 index 000000000..a2e85776e --- /dev/null +++ b/cockatrice/src/game/player/menu/sideboard_menu.h @@ -0,0 +1,23 @@ +#ifndef COCKATRICE_SIDEBOARD_MENU_H +#define COCKATRICE_SIDEBOARD_MENU_H + +#include + +class Player; +class SideboardMenu : public QMenu +{ + Q_OBJECT + +public: + explicit SideboardMenu(Player *player, QMenu *playerMenu); + void retranslateUi(); + void setShortcutsActive(); + void setShortcutsInactive(); + +private: + Player *player; + + QAction *aViewSideboard; +}; + +#endif // COCKATRICE_SIDEBOARD_MENU_H