Merge branch 'master' into refactor-CardInfoPictureWidget

This commit is contained in:
Zach H 2025-01-26 10:25:37 -05:00 committed by GitHub
commit a309addc78
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -258,7 +258,42 @@ QMenu *CardInfoPictureWidget::createRightClickMenu()
cardMenu->addMenu(createViewRelatedCardsMenu()); cardMenu->addMenu(createViewRelatedCardsMenu());
cardMenu->addMenu(createAddToOpenDeckMenu()); cardMenu->addMenu(createAddToOpenDeckMenu());
return cardMenu;
}
QMenu *CardInfoPictureWidget::createViewRelatedCardsMenu()
{
auto viewRelatedCards = new QMenu(tr("View related cards"));
QList<CardRelation *> relatedCards = info->getAllRelatedCards();
auto relatedCardExists = [](const CardRelation *cardRelation) {
return CardDatabaseManager::getInstance()->getCard(cardRelation->getName()) != nullptr;
};
bool atLeastOneGoodRelationFound = std::any_of(relatedCards.begin(), relatedCards.end(), relatedCardExists);
if (!atLeastOneGoodRelationFound) {
viewRelatedCards->setEnabled(false);
return viewRelatedCards;
}
for (const auto &relatedCard : relatedCards) {
const auto &relatedCardName = relatedCard->getName();
QAction *viewCard = viewRelatedCards->addAction(relatedCardName);
connect(viewCard, &QAction::triggered, this, [this, &relatedCardName] {
emit cardChanged(CardDatabaseManager::getInstance()->getCard(relatedCardName));
});
viewRelatedCards->addAction(viewCard);
}
return viewRelatedCards;
}
QMenu *CardInfoPictureWidget::createAddToOpenDeckMenu()
{
auto addToOpenDeckMenu = new QMenu(tr("Add card to deck"));
return cardMenu; return cardMenu;
} }
@ -298,25 +333,27 @@ QMenu *CardInfoPictureWidget::createAddToOpenDeckMenu()
auto *mainWindow = qobject_cast<MainWindow *>(window()); auto *mainWindow = qobject_cast<MainWindow *>(window());
QList<TabDeckEditor *> deckEditorTabs = mainWindow->getTabSupervisor()->getDeckEditorTabs(); QList<TabDeckEditor *> deckEditorTabs = mainWindow->getTabSupervisor()->getDeckEditorTabs();
if (deckEditorTabs.isEmpty()) {
addToOpenDeckMenu->setEnabled(false);
return addToOpenDeckMenu;
}
for (auto &deckEditorTab : deckEditorTabs) { for (auto &deckEditorTab : deckEditorTabs) {
auto *addCardMenu = new QMenu(tr("Add card to") + " " + deckEditorTab->getTabText()); auto *addCardMenu = addToOpenDeckMenu->addMenu(deckEditorTab->getTabText());
QAction *addCard = new QAction(this);
addCard->setText(tr("Mainboard")); QAction *addCard = addCardMenu->addAction(tr("Mainboard"));
connect(addCard, &QAction::triggered, this, [this, deckEditorTab] { connect(addCard, &QAction::triggered, this, [this, deckEditorTab] {
deckEditorTab->updateCardInfo(info); deckEditorTab->updateCardInfo(info);
deckEditorTab->addCardHelper(info, DECK_ZONE_MAIN); deckEditorTab->addCardHelper(info, DECK_ZONE_MAIN);
}); });
QAction *addCardSideboard = new QAction(this);
addCardSideboard->setText(tr("Sideboard")); QAction *addCardSideboard = addCardMenu->addAction(tr("Sideboard"));
connect(addCardSideboard, &QAction::triggered, this, [this, deckEditorTab] { connect(addCardSideboard, &QAction::triggered, this, [this, deckEditorTab] {
deckEditorTab->updateCardInfo(info); deckEditorTab->updateCardInfo(info);
deckEditorTab->addCardHelper(info, DECK_ZONE_SIDE); deckEditorTab->addCardHelper(info, DECK_ZONE_SIDE);
}); });
addCardMenu->addAction(addCard);
addCardMenu->addAction(addCardSideboard);
addToOpenDeckMenu->addMenu(addCardMenu);
} }
return addToOpenDeckMenu; return addToOpenDeckMenu;
} }