Refactor sideboard menu.

Took 26 minutes
This commit is contained in:
Lukas Brübach 2025-09-12 17:45:29 +02:00
parent 33dfbdb50f
commit dbfefdee58
4 changed files with 67 additions and 34 deletions

View file

@ -47,14 +47,11 @@ PlayerMenu::PlayerMenu(Player *_player) : player(_player)
playerMenu->addMenu(rfgMenu); playerMenu->addMenu(rfgMenu);
if (player->getPlayerInfo()->getLocalOrJudge()) { if (player->getPlayerInfo()->getLocalOrJudge()) {
sbMenu = playerMenu->addMenu(QString()); sideboardMenu = new SideboardMenu(player, playerMenu);
playerMenu->addMenu(sideboardMenu);
aViewSideboard = new QAction(this);
connect(aViewSideboard, &QAction::triggered, playerActions, &PlayerActions::actViewSideboard);
sbMenu->addAction(aViewSideboard);
customZonesMenu = new CustomZoneMenu(player); customZonesMenu = new CustomZoneMenu(player);
playerMenu->addMenu(customZonesMenu);
playerMenu->addSeparator(); playerMenu->addSeparator();
countersMenu = playerMenu->addMenu(QString()); countersMenu = playerMenu->addMenu(QString());
@ -62,9 +59,8 @@ PlayerMenu::PlayerMenu(Player *_player) : player(_player)
utilityMenu = new UtilityMenu(player, playerMenu); utilityMenu = new UtilityMenu(player, playerMenu);
} else { } else {
countersMenu = nullptr; countersMenu = nullptr;
sbMenu = nullptr; sideboardMenu = nullptr;
customZonesMenu = nullptr; customZonesMenu = nullptr;
aViewSideboard = nullptr;
utilityMenu = nullptr; utilityMenu = nullptr;
} }
@ -99,7 +95,7 @@ void PlayerMenu::setMenusForGraphicItems()
if (player->getPlayerInfo()->getLocalOrJudge()) { if (player->getPlayerInfo()->getLocalOrJudge()) {
player->getGraphicsItem()->getHandZoneGraphicsItem()->setMenu(handMenu); player->getGraphicsItem()->getHandZoneGraphicsItem()->setMenu(handMenu);
player->getGraphicsItem()->getDeckZoneGraphicsItem()->setMenu(libraryMenu, libraryMenu->aDrawCard); 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(); rfgMenu->retranslateUi();
if (player->getPlayerInfo()->getLocalOrJudge()) { if (player->getPlayerInfo()->getLocalOrJudge()) {
aViewSideboard->setText(tr("&View sideboard"));
handMenu->retranslateUi(); handMenu->retranslateUi();
sbMenu->setTitle(tr("&Sideboard"));
libraryMenu->retranslateUi(); libraryMenu->retranslateUi();
sideboardMenu->retranslateUi();
utilityMenu->retranslateUi(); utilityMenu->retranslateUi();
countersMenu->setTitle(tr("&Counters")); countersMenu->setTitle(tr("&Counters"));
customZonesMenu->retranslateUi(); 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() void PlayerMenu::setShortcutsActive()
{ {
shortcutsActive = true; shortcutsActive = true;
ShortcutsSettings &shortcuts = SettingsCache::instance().shortcuts();
if (handMenu) { if (handMenu) {
handMenu->setShortcutsActive(); handMenu->setShortcutsActive();
@ -269,15 +248,12 @@ void PlayerMenu::setShortcutsActive()
counterIterator.next().value()->setShortcutsActive(); counterIterator.next().value()->setShortcutsActive();
} }
setShortcutIfItExists(aViewSideboard, shortcuts.getShortcut("Player/aViewSideboard"));
} }
void PlayerMenu::setShortcutsInactive() void PlayerMenu::setShortcutsInactive()
{ {
shortcutsActive = false; shortcutsActive = false;
clearShortcutIfItExists(aViewSideboard);
QMapIterator<int, AbstractCounter *> counterIterator(player->getCounters()); QMapIterator<int, AbstractCounter *> counterIterator(player->getCounters());
while (counterIterator.hasNext()) { while (counterIterator.hasNext()) {
counterIterator.next().value()->setShortcutsInactive(); counterIterator.next().value()->setShortcutsInactive();

View file

@ -9,6 +9,7 @@
#include "library_menu.h" #include "library_menu.h"
#include "rfg_menu.h" #include "rfg_menu.h"
#include "say_menu.h" #include "say_menu.h"
#include "sideboard_menu.h"
#include "utility_menu.h" #include "utility_menu.h"
#include <QMenu> #include <QMenu>
@ -66,16 +67,15 @@ public:
} }
void setShortcutsActive(); void setShortcutsActive();
void setShortcutIfItExists(QAction *action, ShortcutKey shortcut);
void clearShortcutIfItExists(QAction *action);
void setShortcutsInactive(); void setShortcutsInactive();
private: private:
Player *player; Player *player;
TearOffMenu *playerMenu; TearOffMenu *playerMenu;
QMenu *sbMenu, *countersMenu; QMenu *countersMenu;
HandMenu *handMenu; HandMenu *handMenu;
LibraryMenu *libraryMenu; LibraryMenu *libraryMenu;
SideboardMenu *sideboardMenu;
GraveyardMenu *graveMenu; GraveyardMenu *graveMenu;
RfgMenu *rfgMenu; RfgMenu *rfgMenu;
UtilityMenu *utilityMenu; UtilityMenu *utilityMenu;
@ -83,7 +83,6 @@ private:
CustomZoneMenu *customZonesMenu; CustomZoneMenu *customZonesMenu;
QList<QMenu *> playerLists; QList<QMenu *> playerLists;
QList<QAction *> allPlayersActions; QList<QAction *> allPlayersActions;
QAction *aViewSideboard;
bool shortcutsActive; bool shortcutsActive;

View file

@ -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());
}

View file

@ -0,0 +1,23 @@
#ifndef COCKATRICE_SIDEBOARD_MENU_H
#define COCKATRICE_SIDEBOARD_MENU_H
#include <QMenu>
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