Show related cards from printing selector by right-clicking card image.

This commit is contained in:
Lukas Brübach 2024-11-26 00:53:43 +01:00 committed by ZeldaZach
parent b07fecb370
commit 37201ccc85
No known key found for this signature in database
3 changed files with 37 additions and 2 deletions

View file

@ -61,7 +61,6 @@ private slots:
void updateSearch(const QString &search);
void databaseCustomMenu(QPoint point);
void decklistCustomMenu(QPoint point);
void showPrintingSelector();
void actNewDeck();
void actLoadDeck();
@ -187,6 +186,7 @@ public:
public slots:
void closeRequest() override;
void showPrintingSelector();
signals:
void openDeckEditor(const DeckLoader *deckLoader);
void deckEditorClosing(TabDeckEditor *tab);

View file

@ -3,6 +3,8 @@
#include "../../../../game/cards/card_database_manager.h"
#include "printing_selector_card_display_widget.h"
#include <QMenu>
#include <QMouseEvent>
#include <QVBoxLayout>
PrintingSelectorCardOverlayWidget::PrintingSelectorCardOverlayWidget(QWidget *parent,
@ -46,6 +48,15 @@ PrintingSelectorCardOverlayWidget::PrintingSelectorCardOverlayWidget(QWidget *pa
connect(cardSizeSlider, &QSlider::valueChanged, cardInfoPicture, &CardInfoPictureWidget::setScaleFactor);
}
void PrintingSelectorCardOverlayWidget::mousePressEvent(QMouseEvent *event)
{
if (event->button() == Qt::RightButton) {
customMenu(event->pos());
} else {
QWidget::mousePressEvent(event); // Pass other events to the base class
}
}
void PrintingSelectorCardOverlayWidget::resizeEvent(QResizeEvent *event)
{
// Ensure the amount widget matches the parent size
@ -67,4 +78,26 @@ void PrintingSelectorCardOverlayWidget::leaveEvent(QEvent *event)
{
QWidget::leaveEvent(event);
allZonesCardAmountWidget->setVisible(false);
}
}
void PrintingSelectorCardOverlayWidget::customMenu(QPoint point)
{
QMenu menu;
// filling out the related cards submenu
auto *relatedMenu = new QMenu(tr("Show Related cards"));
menu.addMenu(relatedMenu);
auto relatedCards = rootCard->getAllRelatedCards();
if (relatedCards.isEmpty()) {
relatedMenu->setDisabled(true);
} else {
for (const CardRelation *rel : relatedCards) {
const QString &relatedCardName = rel->getName();
QAction *relatedCard = relatedMenu->addAction(relatedCardName);
connect(relatedCard, &QAction::triggered, deckEditor, [this, relatedCardName] {
deckEditor->updateCardInfo(CardDatabaseManager::getInstance()->getCard(relatedCardName));
deckEditor->showPrintingSelector();
});
}
}
menu.exec(this->mapToGlobal(point));
}

View file

@ -30,6 +30,8 @@ protected:
void resizeEvent(QResizeEvent *event) override;
void enterEvent(QEnterEvent *event) override;
void leaveEvent(QEvent *event) override;
void mousePressEvent(QMouseEvent *event) override;
void customMenu(QPoint point);
private:
CardInfoPictureWidget *cardInfoPicture;