Add right click menu to add cards to open deck editor tabs from CardInfoPictureWidget.

This commit is contained in:
Lukas Brübach 2025-01-22 11:05:01 +01:00
parent 002f83cbb9
commit 276a8fa335
5 changed files with 39 additions and 5 deletions

View file

@ -1387,9 +1387,8 @@ QModelIndexList TabDeckEditor::getSelectedCardNodes() const
return selectedRows; return selectedRows;
} }
void TabDeckEditor::addCardHelper(QString zoneName) void TabDeckEditor::addCardHelper(const CardInfoPtr info, QString zoneName)
{ {
const CardInfoPtr info = currentCardInfo();
if (!info) if (!info)
return; return;
if (info->getIsToken()) if (info->getIsToken())
@ -1465,13 +1464,13 @@ void TabDeckEditor::actAddCard()
if (QApplication::keyboardModifiers() & Qt::ControlModifier) if (QApplication::keyboardModifiers() & Qt::ControlModifier)
actAddCardToSideboard(); actAddCardToSideboard();
else else
addCardHelper(DECK_ZONE_MAIN); addCardHelper(currentCardInfo(), DECK_ZONE_MAIN);
setSaveStatus(true); setSaveStatus(true);
} }
void TabDeckEditor::actAddCardToSideboard() void TabDeckEditor::actAddCardToSideboard()
{ {
addCardHelper(DECK_ZONE_SIDE); addCardHelper(currentCardInfo(), DECK_ZONE_SIDE);
setSaveStatus(true); setSaveStatus(true);
} }

View file

@ -110,7 +110,6 @@ private:
bool isBlankNewDeck() const; bool isBlankNewDeck() const;
CardInfoPtr currentCardInfo() const; CardInfoPtr currentCardInfo() const;
void addCardHelper(QString zoneName);
void offsetCountAtIndex(const QModelIndex &idx, int offset); void offsetCountAtIndex(const QModelIndex &idx, int offset);
void decrementCardHelper(QString zoneName); void decrementCardHelper(QString zoneName);
bool swapCard(const QModelIndex &idx); bool swapCard(const QModelIndex &idx);
@ -179,6 +178,7 @@ public:
void createMenus(); void createMenus();
void createCentralFrame(); void createCentralFrame();
void updateCardInfo(CardInfoPtr _card); void updateCardInfo(CardInfoPtr _card);
void addCardHelper(CardInfoPtr info, QString zoneName);
public slots: public slots:
void closeRequest(bool forced = false) override; void closeRequest(bool forced = false) override;

View file

@ -132,6 +132,10 @@ public:
{ {
return roomTabs; return roomTabs;
} }
QList<TabDeckEditor *> getDeckEditorTabs() const
{
return deckEditorTabs;
}
bool getAdminLocked() const; bool getAdminLocked() const;
bool closeRequest(); bool closeRequest();
bool switchToGameTabIfAlreadyExists(const int gameId); bool switchToGameTabIfAlreadyExists(const int gameId);

View file

@ -151,6 +151,9 @@ void CardInfoFrameWidget::setCard(CardInfoPtr card)
disconnect(info.data(), nullptr, this, nullptr); disconnect(info.data(), nullptr, this, nullptr);
} }
if (viewTransformationButton) {
viewTransformationButton->setVisible(false);
}
info = std::move(card); info = std::move(card);
if (info) { if (info) {

View file

@ -3,7 +3,10 @@
#include "../../../../game/cards/card_database_manager.h" #include "../../../../game/cards/card_database_manager.h"
#include "../../../../game/cards/card_item.h" #include "../../../../game/cards/card_item.h"
#include "../../../../settings/cache_settings.h" #include "../../../../settings/cache_settings.h"
#include "../../../tabs/tab_deck_editor.h"
#include "../../../tabs/tab_supervisor.h"
#include "../../picture_loader/picture_loader.h" #include "../../picture_loader/picture_loader.h"
#include "../../window_main.h"
#include <QMenu> #include <QMenu>
#include <QMouseEvent> #include <QMouseEvent>
@ -254,7 +257,32 @@ QMenu *CardInfoPictureWidget::createRightClickMenu()
} }
auto viewRelatedCards = new QMenu(tr("View related cards")); auto viewRelatedCards = new QMenu(tr("View related cards"));
auto addToOpenDeckMenu = new QMenu(tr("Add card to deck"));
cardMenu->addMenu(viewRelatedCards); cardMenu->addMenu(viewRelatedCards);
cardMenu->addMenu(addToOpenDeckMenu);
QWidget *topLevel = window();
auto *mainWindow = qobject_cast<MainWindow *>(topLevel);
QList<TabDeckEditor *> deckEditorTabs = mainWindow->getTabSupervisor()->getDeckEditorTabs();
for (auto &deckEditorTab : deckEditorTabs) {
auto *addCardMenu = new QMenu("Add card to " + deckEditorTab->getTabText());
QAction *addCard = new QAction(this);
addCard->setText(tr("Mainboard"));
connect(addCard, &QAction::triggered, this, [this, deckEditorTab] {
deckEditorTab->updateCardInfo(info);
deckEditorTab->addCardHelper(info, DECK_ZONE_MAIN);
});
QAction *addCardSideboard = new QAction(this);
addCardSideboard->setText(tr("Sideboard"));
connect(addCardSideboard, &QAction::triggered, this, [this, deckEditorTab] {
deckEditorTab->updateCardInfo(info);
deckEditorTab->addCardHelper(info, DECK_ZONE_SIDE);
});
addCardMenu->addAction(addCard);
addCardMenu->addAction(addCardSideboard);
addToOpenDeckMenu->addMenu(addCardMenu);
}
bool atLeastOneGoodRelationFound = false; bool atLeastOneGoodRelationFound = false;
QList<CardRelation *> relatedCards = info->getAllRelatedCards(); QList<CardRelation *> relatedCards = info->getAllRelatedCards();