From 0cd705753e7734584816458896cfc264a0efa366 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lukas=20Br=C3=BCbach?= Date: Wed, 27 May 2026 00:00:23 +0200 Subject: [PATCH] Get dialogParent dynamically Took 8 minutes Took 17 seconds --- cockatrice/src/game/player/player_dialogs.cpp | 38 +++++++++---------- cockatrice/src/game/player/player_dialogs.h | 14 ++++++- .../src/game/player/player_graphics_item.cpp | 7 +--- 3 files changed, 32 insertions(+), 27 deletions(-) diff --git a/cockatrice/src/game/player/player_dialogs.cpp b/cockatrice/src/game/player/player_dialogs.cpp index 336c9fbf1..ba2753aaa 100644 --- a/cockatrice/src/game/player/player_dialogs.cpp +++ b/cockatrice/src/game/player/player_dialogs.cpp @@ -9,8 +9,8 @@ #include #include -PlayerDialogs::PlayerDialogs(PlayerGraphicsItem *_player, QWidget *_dialogParent, PlayerActions *_playerActions) - : QObject(_player), player(_player), dialogParent(_dialogParent), playerActions(_playerActions) +PlayerDialogs::PlayerDialogs(PlayerGraphicsItem *_player, PlayerActions *_playerActions) + : QObject(_player), player(_player), playerActions(_playerActions) { connect(playerActions, &PlayerActions::requestViewTopCardsDialog, this, &PlayerDialogs::onViewTopCardsDialogRequested); @@ -62,7 +62,7 @@ PlayerDialogs::PlayerDialogs(PlayerGraphicsItem *_player, QWidget *_dialogParent void PlayerDialogs::onViewTopCardsDialogRequested(int defaultNumberTopCards, int deckSize) { bool ok; - int number = QInputDialog::getInt(dialogParent, tr("View top cards of library"), + int number = QInputDialog::getInt(dialogParent(), tr("View top cards of library"), tr("Number of cards: (max. %1)").arg(deckSize), defaultNumberTopCards, 1, deckSize, 1, &ok); if (ok) { @@ -73,7 +73,7 @@ void PlayerDialogs::onViewTopCardsDialogRequested(int defaultNumberTopCards, int void PlayerDialogs::onViewBottomCardsDialogRequested(int defaultNumberBottomCards, int deckSize) { bool ok; - int number = QInputDialog::getInt(dialogParent, tr("View bottom cards of library"), + int number = QInputDialog::getInt(dialogParent(), tr("View bottom cards of library"), tr("Number of cards: (max. %1)").arg(deckSize), defaultNumberBottomCards, 1, deckSize, 1, &ok); if (ok) { @@ -84,7 +84,7 @@ void PlayerDialogs::onViewBottomCardsDialogRequested(int defaultNumberBottomCard void PlayerDialogs::onShuffleTopDialogRequested(int defaultNumberTopCards, int maxCards) { bool ok; - int number = QInputDialog::getInt(dialogParent, tr("Shuffle top cards of library"), + int number = QInputDialog::getInt(dialogParent(), tr("Shuffle top cards of library"), tr("Number of cards: (max. %1)").arg(maxCards), defaultNumberTopCards, 1, maxCards, 1, &ok); if (ok) { @@ -95,7 +95,7 @@ void PlayerDialogs::onShuffleTopDialogRequested(int defaultNumberTopCards, int m void PlayerDialogs::onShuffleBottomDialogRequested(int defaultNumberBottomCards, int maxCards) { bool ok; - int number = QInputDialog::getInt(dialogParent, tr("Shuffle bottom cards of library"), + int number = QInputDialog::getInt(dialogParent(), tr("Shuffle bottom cards of library"), tr("Number of cards: (max. %1)").arg(maxCards), defaultNumberBottomCards, 1, maxCards, 1, &ok); if (ok) { @@ -106,7 +106,7 @@ void PlayerDialogs::onShuffleBottomDialogRequested(int defaultNumberBottomCards, void PlayerDialogs::onMulliganDialogRequested(int startSize, int handSize, int deckSize) { bool ok; - int number = QInputDialog::getInt(dialogParent, tr("Draw hand"), + int number = QInputDialog::getInt(dialogParent(), tr("Draw hand"), tr("Number of cards: (max. %1)").arg(deckSize) + '\n' + tr("0 and lower are in comparison to current hand size"), startSize, -handSize, deckSize, 1, &ok); @@ -119,7 +119,7 @@ void PlayerDialogs::onMulliganDialogRequested(int startSize, int handSize, int d void PlayerDialogs::onDrawCardsDialogRequested(int defaultNumberTopCards, int deckSize) { bool ok; - int number = QInputDialog::getInt(dialogParent, tr("Draw cards"), tr("Number of cards: (max. %1)").arg(deckSize), + int number = QInputDialog::getInt(dialogParent(), tr("Draw cards"), tr("Number of cards: (max. %1)").arg(deckSize), defaultNumberTopCards, 1, deckSize, 1, &ok); if (ok) { @@ -134,7 +134,7 @@ void PlayerDialogs::onMoveTopCardsToDialogRequested(int defaultNumberTopCards, bool faceDown) { bool ok; - int number = QInputDialog::getInt(dialogParent, tr("Move top cards to %1").arg(zoneDisplayName), + int number = QInputDialog::getInt(dialogParent(), tr("Move top cards to %1").arg(zoneDisplayName), tr("Number of cards: (max. %1)").arg(maxCards), defaultNumberTopCards, 1, maxCards, 1, &ok); if (ok) { @@ -144,7 +144,7 @@ void PlayerDialogs::onMoveTopCardsToDialogRequested(int defaultNumberTopCards, void PlayerDialogs::onMoveTopCardsUntilDialogRequested(MoveTopCardsUntilOptions options) { - DlgMoveTopCardsUntil dlg(dialogParent, options); + DlgMoveTopCardsUntil dlg(dialogParent(), options); if (!dlg.exec()) { return; } @@ -158,7 +158,7 @@ void PlayerDialogs::onMoveBottomCardsToDialogRequested(int defaultNumberBottomCa bool faceDown) { bool ok; - int number = QInputDialog::getInt(dialogParent, tr("Move bottom cards to %1").arg(zoneDisplayName), + int number = QInputDialog::getInt(dialogParent(), tr("Move bottom cards to %1").arg(zoneDisplayName), tr("Number of cards: (max. %1)").arg(maxCards), defaultNumberBottomCards, 1, maxCards, 1, &ok); if (ok) { @@ -170,7 +170,7 @@ void PlayerDialogs::onDrawBottomCardsDialogRequested(int defaultNumberBottomCard { bool ok; int number = - QInputDialog::getInt(dialogParent, tr("Draw bottom cards"), tr("Number of cards: (max. %1)").arg(maxCards), + QInputDialog::getInt(dialogParent(), tr("Draw bottom cards"), tr("Number of cards: (max. %1)").arg(maxCards), defaultNumberBottomCards, 1, maxCards, 1, &ok); if (ok) { playerActions->actDrawBottomCards(number); @@ -179,7 +179,7 @@ void PlayerDialogs::onDrawBottomCardsDialogRequested(int defaultNumberBottomCard void PlayerDialogs::onRollDieDialogRequested() { - DlgRollDice dlg(dialogParent); + DlgRollDice dlg(dialogParent()); if (!dlg.exec()) { return; } @@ -200,7 +200,7 @@ void PlayerDialogs::onCreateRelatedFromRelationDialogRequested(const CardItem *s emit requestDialogSemaphore(true); - variableCount = QInputDialog::getInt(dialogParent, tr("Create tokens"), tr("Number:"), + variableCount = QInputDialog::getInt(dialogParent(), tr("Create tokens"), tr("Number:"), cardRelation->getDefaultCount(), 1, MAX_TOKENS_PER_DIALOG, 1, &ok); emit requestDialogSemaphore(false); @@ -217,7 +217,7 @@ void PlayerDialogs::onCreateRelatedFromRelationDialogRequested(const CardItem *s void PlayerDialogs::onCreateTokenDialogRequested(const QStringList &predefinedTokens) { - DlgCreateToken dlg(predefinedTokens, dialogParent); + DlgCreateToken dlg(predefinedTokens, dialogParent()); if (!dlg.exec()) { return; } @@ -229,7 +229,7 @@ void PlayerDialogs::onMoveCardXCardsFromTopDialogRequested(int defaultNumberTopC { bool ok; int number = - QInputDialog::getInt(dialogParent, tr("Place card X cards from top of library"), + QInputDialog::getInt(dialogParent(), tr("Place card X cards from top of library"), tr("Which position should this card be placed:") + "\n" + tr("(max. %1)").arg(deckSize), defaultNumberTopCardsToPlaceBelow, 1, deckSize, 1, &ok); number -= 1; // indexes start at 0 @@ -243,7 +243,7 @@ void PlayerDialogs::onSetPTDialogRequested(const QString &oldPT) { bool ok; emit requestDialogSemaphore(true); - QString pt = getTextWithMax(dialogParent, tr("Change power/toughness"), tr("Change stats to:"), QLineEdit::Normal, + QString pt = getTextWithMax(dialogParent(), tr("Change power/toughness"), tr("Change stats to:"), QLineEdit::Normal, oldPT, &ok); emit requestDialogSemaphore(false); @@ -257,7 +257,7 @@ void PlayerDialogs::onSetPTDialogRequested(const QString &oldPT) void PlayerDialogs::onSetAnnotationDialogRequested(const QString &oldAnnotation) { emit requestDialogSemaphore(true); - AnnotationDialog *dialog = new AnnotationDialog(dialogParent); + AnnotationDialog *dialog = new AnnotationDialog(dialogParent()); dialog->setOptions(QInputDialog::UsePlainTextEditForTextInput); dialog->setWindowTitle(tr("Set annotation")); dialog->setLabelText(tr("Please enter the new annotation:")); @@ -278,7 +278,7 @@ void PlayerDialogs::onSetCardCounterDialogRequested(int counterId, const QString auto &cardCounterSettings = SettingsCache::instance().cardCounters(); QString counterName = cardCounterSettings.displayName(counterId); - AbstractCounterDialog dialog(counterName, oldValueForDlg, dialogParent); + AbstractCounterDialog dialog(counterName, oldValueForDlg, dialogParent()); int ok = dialog.exec(); emit requestDialogSemaphore(false); diff --git a/cockatrice/src/game/player/player_dialogs.h b/cockatrice/src/game/player/player_dialogs.h index 2d4316c25..3f6908aa8 100644 --- a/cockatrice/src/game/player/player_dialogs.h +++ b/cockatrice/src/game/player/player_dialogs.h @@ -2,6 +2,7 @@ #define COCKATRICE_PLAYER_DIALOGS_H #include "player_actions.h" +#include #include class PlayerDialogs : public QObject @@ -10,7 +11,7 @@ class PlayerDialogs : public QObject Q_OBJECT public: - explicit PlayerDialogs(PlayerGraphicsItem *player, QWidget *dialogParent, PlayerActions *playerActions); + explicit PlayerDialogs(PlayerGraphicsItem *player, PlayerActions *playerActions); signals: void requestDialogSemaphore(bool active); @@ -44,8 +45,17 @@ public slots: private: PlayerGraphicsItem *player; - QWidget *dialogParent; PlayerActions *playerActions; + + QWidget *dialogParent() const + { + if (auto *s = player->scene()) { + if (auto *v = s->views().value(0)) { + return v->window(); + } + } + return nullptr; + } }; #endif // COCKATRICE_PLAYER_DIALOGS_H diff --git a/cockatrice/src/game/player/player_graphics_item.cpp b/cockatrice/src/game/player/player_graphics_item.cpp index 866a0da55..fc8fe8a40 100644 --- a/cockatrice/src/game/player/player_graphics_item.cpp +++ b/cockatrice/src/game/player/player_graphics_item.cpp @@ -45,12 +45,7 @@ PlayerGraphicsItem::PlayerGraphicsItem(PlayerLogic *_player) : player(_player) } }); - QWidget *dialogParent = nullptr; - if (auto *view = scene() ? scene()->views().value(0) : nullptr) { - dialogParent = view->window(); - } - - playerDialogs = new PlayerDialogs(this, dialogParent, player->getPlayerActions()); + playerDialogs = new PlayerDialogs(this, player->getPlayerActions()); playerArea = new PlayerArea(this);