From 81a8a091f67eafc8ca42b04467d64c49572e5035 Mon Sep 17 00:00:00 2001 From: RickyRister Date: Sat, 28 Dec 2024 20:23:05 -0800 Subject: [PATCH] create right click menu --- .../cards/card_info_picture_widget.cpp | 40 ++++++++++++++++++- .../widgets/cards/card_info_picture_widget.h | 3 ++ 2 files changed, 42 insertions(+), 1 deletion(-) diff --git a/cockatrice/src/client/ui/widgets/cards/card_info_picture_widget.cpp b/cockatrice/src/client/ui/widgets/cards/card_info_picture_widget.cpp index c5e0b774d..6d3215f2e 100644 --- a/cockatrice/src/client/ui/widgets/cards/card_info_picture_widget.cpp +++ b/cockatrice/src/client/ui/widgets/cards/card_info_picture_widget.cpp @@ -1,9 +1,11 @@ #include "card_info_picture_widget.h" +#include "../../../../game/cards/card_database_manager.h" #include "../../../../game/cards/card_item.h" #include "../../../../settings/cache_settings.h" #include "../../picture_loader.h" +#include #include #include #include @@ -239,10 +241,46 @@ void CardInfoPictureWidget::mousePressEvent(QMouseEvent *event) { QWidget::mousePressEvent(event); if (event->button() == Qt::RightButton) { - qDebug() << "TRACK clicked!"; + createRightClickMenu()->popup(QCursor::pos()); } } +QMenu *CardInfoPictureWidget::createRightClickMenu() +{ + auto *cardMenu = new QMenu(this); + + if (!info) { + return cardMenu; + } + + bool atLeastOneGoodRelationFound = false; + QList relatedCards = info->getAllRelatedCards(); + for (const CardRelation *cardRelation : relatedCards) { + CardInfoPtr relatedCard = CardDatabaseManager::getInstance()->getCard(cardRelation->getName()); + if (relatedCard != nullptr) { + atLeastOneGoodRelationFound = true; + break; + } + } + + if (!atLeastOneGoodRelationFound) { + return cardMenu; + } + + const auto ¤tCardSet = CardDatabase::getSetInfoForCard(info); + + auto viewRelatedCards = new QMenu(tr("View related cards")); + cardMenu->addMenu(viewRelatedCards); + for (const CardRelation *relatedCard : relatedCards) { + QString relatedCardName = relatedCard->getName(); + // QAction *viewCard = viewRelatedCards->addAction(relatedCardName); + /*connect(viewCard, &QAction::triggered, game, [this, relatedCardName, currentCardSet] { + game->viewCardInfo(relatedCardName, currentCardSet.getProperty("uuid")); + });*/ + } + return cardMenu; +} + /** * @brief Displays the enlarged version of the card's pixmap near the cursor. * diff --git a/cockatrice/src/client/ui/widgets/cards/card_info_picture_widget.h b/cockatrice/src/client/ui/widgets/cards/card_info_picture_widget.h index 9ac49e118..7a98c468e 100644 --- a/cockatrice/src/client/ui/widgets/cards/card_info_picture_widget.h +++ b/cockatrice/src/client/ui/widgets/cards/card_info_picture_widget.h @@ -8,6 +8,7 @@ #include class AbstractCardItem; +class QMenu; class CardInfoPictureWidget : public QWidget { @@ -64,6 +65,8 @@ private: CardInfoPictureEnlargedWidget *enlargedPixmapWidget; int enlargedPixmapOffset = 10; QTimer *hoverTimer; + + QMenu *createRightClickMenu(); }; #endif