From fdeb3658d10dd8bc205231ea23da9a32d16d96b9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lukas=20Br=C3=BCbach?= Date: Fri, 5 Sep 2025 03:21:07 +0200 Subject: [PATCH] Use modelReset from new grouping in deck_list_model in VDE Took 18 minutes Took 58 seconds --- .../visual_deck_editor_widget.cpp | 17 +++++++++++++++++ .../visual_deck_editor_widget.h | 2 ++ 2 files changed, 19 insertions(+) diff --git a/cockatrice/src/client/ui/widgets/visual_deck_editor/visual_deck_editor_widget.cpp b/cockatrice/src/client/ui/widgets/visual_deck_editor/visual_deck_editor_widget.cpp index bf8d8f023..74ae820ec 100644 --- a/cockatrice/src/client/ui/widgets/visual_deck_editor/visual_deck_editor_widget.cpp +++ b/cockatrice/src/client/ui/widgets/visual_deck_editor/visual_deck_editor_widget.cpp @@ -179,6 +179,7 @@ VisualDeckEditorWidget::VisualDeckEditorWidget(QWidget *parent, DeckListModel *_ mainLayout->addWidget(scrollArea); mainLayout->addWidget(cardSizeWidget); + connect(deckListModel, &DeckListModel::modelReset, this, &VisualDeckEditorWidget::decklistModelReset); connect(deckListModel, &DeckListModel::dataChanged, this, &VisualDeckEditorWidget::decklistDataChanged); connect(deckListModel, &QAbstractItemModel::rowsInserted, this, &VisualDeckEditorWidget::onCardAddition); connect(deckListModel, &QAbstractItemModel::rowsRemoved, this, &VisualDeckEditorWidget::onCardRemoval); @@ -199,6 +200,16 @@ void VisualDeckEditorWidget::retranslateUi() tr("Change how cards are displayed within zones (i.e. overlapped or fully visible.)")); } +void VisualDeckEditorWidget::clearAllDisplayWidgets() +{ + for (auto idx : indexToWidgetMap.keys()) { + auto displayWidget = indexToWidgetMap.value(idx); + zoneContainerLayout->removeWidget(displayWidget); + indexToWidgetMap.remove(idx); + delete displayWidget; + } +} + void VisualDeckEditorWidget::cleanupInvalidZones(DeckCardZoneDisplayWidget *displayWidget) { zoneContainerLayout->removeWidget(displayWidget); @@ -332,6 +343,12 @@ void VisualDeckEditorWidget::actChangeActiveSortCriteria() emit activeSortCriteriaChanged(selectedCriteria); } +void VisualDeckEditorWidget::decklistModelReset() +{ + clearAllDisplayWidgets(); + constructZoneWidgetsFromDeckListModel(); +} + void VisualDeckEditorWidget::decklistDataChanged(QModelIndex topLeft, QModelIndex bottomRight) { // Might use these at some point. diff --git a/cockatrice/src/client/ui/widgets/visual_deck_editor/visual_deck_editor_widget.h b/cockatrice/src/client/ui/widgets/visual_deck_editor/visual_deck_editor_widget.h index 01e810eef..6f114dc63 100644 --- a/cockatrice/src/client/ui/widgets/visual_deck_editor/visual_deck_editor_widget.h +++ b/cockatrice/src/client/ui/widgets/visual_deck_editor/visual_deck_editor_widget.h @@ -31,6 +31,7 @@ class VisualDeckEditorWidget : public QWidget public: explicit VisualDeckEditorWidget(QWidget *parent, DeckListModel *deckListModel); void retranslateUi(); + void clearAllDisplayWidgets(); void resizeEvent(QResizeEvent *event) override; void setDeckList(const DeckList &_deckListModel); @@ -60,6 +61,7 @@ protected slots: void onCardClick(QMouseEvent *event, CardInfoPictureWithTextOverlayWidget *instance, QString zoneName); void actChangeActiveGroupCriteria(); void actChangeActiveSortCriteria(); + void decklistModelReset(); private: DeckListModel *deckListModel;