[TabDeckEditor] Refactor to use signal instead of calling tab

This commit is contained in:
RickyRister 2026-06-03 01:54:24 -07:00
parent 46d3b820db
commit aa174d1942
5 changed files with 38 additions and 12 deletions

View file

@ -33,6 +33,12 @@ void DeckEditorCardDatabaseDockWidget::createDatabaseDisplayDock(AbstractTabDeck
&AbstractTabDeckEditor::addCard); &AbstractTabDeckEditor::addCard);
connect(databaseDisplayWidget, &DeckEditorDatabaseDisplayWidget::cardDecremented, deckEditor, connect(databaseDisplayWidget, &DeckEditorDatabaseDisplayWidget::cardDecremented, deckEditor,
&AbstractTabDeckEditor::decrementCard); &AbstractTabDeckEditor::decrementCard);
connect(databaseDisplayWidget, &DeckEditorDatabaseDisplayWidget::edhrecRequested, deckEditor,
&AbstractTabDeckEditor::openEdhrecTab);
connect(databaseDisplayWidget, &DeckEditorDatabaseDisplayWidget::printingSelectorRequested, deckEditor,
&AbstractTabDeckEditor::showPrintingSelector);
connect(databaseDisplayWidget, &DeckEditorDatabaseDisplayWidget::cardInfoRequested, deckEditor,
&AbstractTabDeckEditor::updateCardInfo);
} }
CardDatabase *DeckEditorCardDatabaseDockWidget::getDatabase() const CardDatabase *DeckEditorCardDatabaseDockWidget::getDatabase() const

View file

@ -200,18 +200,18 @@ void DeckEditorDatabaseDisplayWidget::databaseCustomMenu(QPoint point)
addToDeck = menu.addAction(tr("Add to Deck")); addToDeck = menu.addAction(tr("Add to Deck"));
addToSideboard = menu.addAction(tr("Add to Sideboard")); addToSideboard = menu.addAction(tr("Add to Sideboard"));
selectPrinting = menu.addAction(tr("Select Printing")); selectPrinting = menu.addAction(tr("Select Printing"));
connect(selectPrinting, &QAction::triggered, this, [this, card] { deckEditor->showPrintingSelector(); }); connect(selectPrinting, &QAction::triggered, this, &DeckEditorDatabaseDisplayWidget::printingSelectorRequested);
if (canBeCommander(card.getInfo())) { if (canBeCommander(card.getInfo())) {
edhRecCommander = menu.addAction(tr("Show on EDHRec (Commander)")); edhRecCommander = menu.addAction(tr("Show on EDHRec (Commander)"));
connect(edhRecCommander, &QAction::triggered, this, connect(edhRecCommander, &QAction::triggered, this,
[this, card] { deckEditor->getTabSupervisor()->addEdhrecTab(card.getCardPtr(), true); }); [this, card] { emit edhrecRequested(card.getCardPtr(), true); });
} }
edhRecCard = menu.addAction(tr("Show on EDHRec (Card)")); edhRecCard = menu.addAction(tr("Show on EDHRec (Card)"));
connect(addToDeck, &QAction::triggered, this, &DeckEditorDatabaseDisplayWidget::actAddCardToMainDeck); connect(addToDeck, &QAction::triggered, this, &DeckEditorDatabaseDisplayWidget::actAddCardToMainDeck);
connect(addToSideboard, &QAction::triggered, this, &DeckEditorDatabaseDisplayWidget::actAddCardToSideboard); connect(addToSideboard, &QAction::triggered, this, &DeckEditorDatabaseDisplayWidget::actAddCardToSideboard);
connect(edhRecCard, &QAction::triggered, this, connect(edhRecCard, &QAction::triggered, this,
[this, card] { deckEditor->getTabSupervisor()->addEdhrecTab(card.getCardPtr()); }); [this, card] { emit edhrecRequested(card.getCardPtr(), false); });
// filling out the related cards submenu // filling out the related cards submenu
auto *relatedMenu = new QMenu(tr("Show Related cards")); auto *relatedMenu = new QMenu(tr("Show Related cards"));
@ -222,10 +222,10 @@ void DeckEditorDatabaseDisplayWidget::databaseCustomMenu(QPoint point)
} else { } else {
for (const CardRelation *rel : relatedCards) { for (const CardRelation *rel : relatedCards) {
const QString &relatedCardName = rel->getName(); const QString &relatedCardName = rel->getName();
ExactCard exactCard = CardDatabaseManager::query()->getPreferredCard(relatedCardName);
QAction *relatedCard = relatedMenu->addAction(relatedCardName); QAction *relatedCard = relatedMenu->addAction(relatedCardName);
connect( connect(relatedCard, &QAction::triggered, this,
relatedCard, &QAction::triggered, deckEditor->cardInfoDockWidget->cardInfo, [this, exactCard] { emit cardInfoRequested(exactCard); });
[this, relatedCardName] { deckEditor->cardInfoDockWidget->cardInfo->setCard(relatedCardName); });
} }
} }
menu.exec(databaseView->mapToGlobal(point)); menu.exec(databaseView->mapToGlobal(point));

View file

@ -52,6 +52,10 @@ signals:
void cardDecremented(const ExactCard &card, const QString &zoneName); void cardDecremented(const ExactCard &card, const QString &zoneName);
void cardChanged(const ExactCard &_card); void cardChanged(const ExactCard &_card);
void edhrecRequested(const CardInfoPtr &cardInfo, bool isCommander);
void printingSelectorRequested();
void cardInfoRequested(const ExactCard &cardName);
private: private:
KeySignals searchKeySignals; KeySignals searchKeySignals;
QTreeView *databaseView; QTreeView *databaseView;

View file

@ -105,16 +105,17 @@ void AbstractTabDeckEditor::registerDockWidget(QMenu *_viewMenu, QDockWidget *wi
dockToActions.insert(widget, {menu, aVisible, aFloating, defaultSize}); dockToActions.insert(widget, {menu, aVisible, aFloating, defaultSize});
} }
/**
* @brief Updates the card info dock and printing selector.
* @param card The card to display.
*/
void AbstractTabDeckEditor::updateCard(const ExactCard &card) void AbstractTabDeckEditor::updateCard(const ExactCard &card)
{ {
cardInfoDockWidget->updateCard(card); cardInfoDockWidget->updateCard(card);
printingSelectorDockWidget->printingSelector->setCard(card.getCardPtr()); printingSelectorDockWidget->printingSelector->setCard(card.getCardPtr());
} }
void AbstractTabDeckEditor::updateCardInfo(const ExactCard &card)
{
cardInfoDockWidget->updateCard(card);
}
/** @brief Placeholder: called when the deck changes. */ /** @brief Placeholder: called when the deck changes. */
void AbstractTabDeckEditor::onDeckChanged() void AbstractTabDeckEditor::onDeckChanged()
{ {
@ -595,3 +596,8 @@ void AbstractTabDeckEditor::showPrintingSelector()
printingSelectorDockWidget->printingSelector->updateDisplay(); printingSelectorDockWidget->printingSelector->updateDisplay();
printingSelectorDockWidget->setVisible(true); printingSelectorDockWidget->setVisible(true);
} }
void AbstractTabDeckEditor::openEdhrecTab(const CardInfoPtr &info, bool isCommander)
{
getTabSupervisor()->addEdhrecTab(info, isCommander);
}

View file

@ -140,11 +140,18 @@ public slots:
/** @brief Called when the deck is modified. */ /** @brief Called when the deck is modified. */
virtual void onDeckModified(); virtual void onDeckModified();
/** @brief Updates the card info panel. /**
* @param card The card to display. * @brief Updates the card info dock and printing selector.
* @param card The card to display.
*/ */
void updateCard(const ExactCard &card); void updateCard(const ExactCard &card);
/**
* @brief Updates just the card info dock
* @param card The card to display
*/
void updateCardInfo(const ExactCard &card);
/** /**
* @brief Adds a card to the given zone * @brief Adds a card to the given zone
* @param card Card to add. * @param card Card to add.
@ -175,6 +182,9 @@ public slots:
/** @brief Shows the printing selector dock and updates it with the current card. */ /** @brief Shows the printing selector dock and updates it with the current card. */
void showPrintingSelector(); void showPrintingSelector();
/** @brief Opens the edhrec tab with the following values */
void openEdhrecTab(const CardInfoPtr &info, bool isCommander);
signals: signals:
/** @brief Emitted when a deck should be opened in a new editor tab. */ /** @brief Emitted when a deck should be opened in a new editor tab. */
void openDeckEditor(const LoadedDeck &deck); void openDeckEditor(const LoadedDeck &deck);