From aeec56f8001d30c9fe949ba6ad9356a650529090 Mon Sep 17 00:00:00 2001 From: BruebachL <44814898+BruebachL@users.noreply.github.com> Date: Sun, 9 Nov 2025 01:18:31 +0100 Subject: [PATCH] Sync up Visual Deck Editor group by combo box to Deck Editor Dock Widget combo box. (#6291) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Took 21 minutes Co-authored-by: Lukas BrĂ¼bach --- .../deck_editor_deck_dock_widget.h | 4 +++ .../widgets/tabs/abstract_tab_deck_editor.h | 5 +++ .../visual_deck_editor_widget.cpp | 33 +++++++++++++++---- 3 files changed, 35 insertions(+), 7 deletions(-) diff --git a/cockatrice/src/interface/widgets/deck_editor/deck_editor_deck_dock_widget.h b/cockatrice/src/interface/widgets/deck_editor/deck_editor_deck_dock_widget.h index c6c3181b8..62810e7eb 100644 --- a/cockatrice/src/interface/widgets/deck_editor/deck_editor_deck_dock_widget.h +++ b/cockatrice/src/interface/widgets/deck_editor/deck_editor_deck_dock_widget.h @@ -41,6 +41,10 @@ public: { return nameEdit->text().simplified(); } + QComboBox *getGroupByComboBox() + { + return activeGroupCriteriaComboBox; + } public slots: void cleanDeck(); diff --git a/cockatrice/src/interface/widgets/tabs/abstract_tab_deck_editor.h b/cockatrice/src/interface/widgets/tabs/abstract_tab_deck_editor.h index c28f15b52..26fc78832 100644 --- a/cockatrice/src/interface/widgets/tabs/abstract_tab_deck_editor.h +++ b/cockatrice/src/interface/widgets/tabs/abstract_tab_deck_editor.h @@ -124,6 +124,11 @@ public: */ void setModified(bool _windowModified); + DeckEditorDeckDockWidget *getDeckDockWidget() const + { + return deckDockWidget; + } + // UI Elements DeckEditorMenu *deckMenu; ///< Menu for deck operations DeckEditorDatabaseDisplayWidget *databaseDisplayDockWidget; ///< Database dock diff --git a/cockatrice/src/interface/widgets/visual_deck_editor/visual_deck_editor_widget.cpp b/cockatrice/src/interface/widgets/visual_deck_editor/visual_deck_editor_widget.cpp index d0f1bf034..d9acfce5d 100644 --- a/cockatrice/src/interface/widgets/visual_deck_editor/visual_deck_editor_widget.cpp +++ b/cockatrice/src/interface/widgets/visual_deck_editor/visual_deck_editor_widget.cpp @@ -6,6 +6,8 @@ #include "../cards/deck_card_zone_display_widget.h" #include "../general/layout_containers/flow_widget.h" #include "../general/layout_containers/overlap_control_widget.h" +#include "../tabs/visual_deck_editor/tab_deck_editor_visual.h" +#include "../tabs/visual_deck_editor/tab_deck_editor_visual_tab_widget.h" #include #include @@ -119,13 +121,30 @@ VisualDeckEditorWidget::VisualDeckEditorWidget(QWidget *parent, DeckListModel *_ groupAndSortLayout->setAlignment(Qt::AlignLeft); groupAndSortContainer->setLayout(groupAndSortLayout); - groupByComboBox = new QComboBox(); - QStringList groupProperties = {"maintype", "colors", "cmc", "name"}; - groupByComboBox->addItems(groupProperties); - groupByComboBox->setMinimumWidth(300); - connect(groupByComboBox, QOverload::of(&QComboBox::currentTextChanged), this, - &VisualDeckEditorWidget::actChangeActiveGroupCriteria); - actChangeActiveGroupCriteria(); + groupByComboBox = new QComboBox(this); + if (auto tabWidget = qobject_cast(parent)) { + // Inside a central widget QWidget container inside TabDeckEditorVisual + if (auto tab = qobject_cast(tabWidget->parent()->parent())) { + auto originalBox = tab->getDeckDockWidget()->getGroupByComboBox(); + groupByComboBox->setModel(originalBox->model()); + groupByComboBox->setModelColumn(originalBox->modelColumn()); + + // Original -> clone + connect(originalBox, QOverload::of(&QComboBox::currentIndexChanged), + [this](int index) { groupByComboBox->setCurrentIndex(index); }); + + // Clone -> original + connect(groupByComboBox, QOverload::of(&QComboBox::currentIndexChanged), + [originalBox](int index) { originalBox->setCurrentIndex(index); }); + } + } else { + QStringList groupProperties = {"maintype", "colors", "cmc", "name"}; + groupByComboBox->addItems(groupProperties); + groupByComboBox->setMinimumWidth(300); + connect(groupByComboBox, QOverload::of(&QComboBox::currentTextChanged), this, + &VisualDeckEditorWidget::actChangeActiveGroupCriteria); + actChangeActiveGroupCriteria(); + } sortCriteriaButton = new SettingsButtonWidget(this);