From 9cf979d154949e811f70d591db37f2460a09fab9 Mon Sep 17 00:00:00 2001 From: BruebachL <44814898+BruebachL@users.noreply.github.com> Date: Fri, 9 May 2025 03:32:00 +0200 Subject: [PATCH] [GDE/VDE] More granular modification signals. (#5927) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * More granular modification signals. * Bruh. --------- Co-authored-by: Lukas BrĂ¼bach --- .../client/tabs/abstract_tab_deck_editor.cpp | 5 +++++ .../client/tabs/abstract_tab_deck_editor.h | 1 + .../tab_deck_editor_visual.cpp | 2 +- .../deck_editor_deck_dock_widget.cpp | 21 ++++++++++++------- .../deck_editor_deck_dock_widget.h | 4 ++++ 5 files changed, 25 insertions(+), 8 deletions(-) diff --git a/cockatrice/src/client/tabs/abstract_tab_deck_editor.cpp b/cockatrice/src/client/tabs/abstract_tab_deck_editor.cpp index 1c599034b..eba0bfb0f 100644 --- a/cockatrice/src/client/tabs/abstract_tab_deck_editor.cpp +++ b/cockatrice/src/client/tabs/abstract_tab_deck_editor.cpp @@ -50,6 +50,7 @@ AbstractTabDeckEditor::AbstractTabDeckEditor(TabSupervisor *_tabSupervisor) : Ta printingSelectorDockWidget = new DeckEditorPrintingSelectorDockWidget(this); connect(deckDockWidget, &DeckEditorDeckDockWidget::deckChanged, this, &AbstractTabDeckEditor::onDeckChanged); + connect(deckDockWidget, &DeckEditorDeckDockWidget::deckModified, this, &AbstractTabDeckEditor::onDeckModified); connect(deckDockWidget, &DeckEditorDeckDockWidget::cardChanged, this, &AbstractTabDeckEditor::updateCard); connect(this, &AbstractTabDeckEditor::decrementCard, deckDockWidget, &DeckEditorDeckDockWidget::actDecrementCard); connect(databaseDisplayDockWidget, &DeckEditorDatabaseDisplayWidget::cardChanged, this, @@ -77,6 +78,10 @@ void AbstractTabDeckEditor::updateCard(CardInfoPtr _card) } void AbstractTabDeckEditor::onDeckChanged() +{ +} + +void AbstractTabDeckEditor::onDeckModified() { setModified(!isBlankNewDeck()); deckMenu->setSaveStatus(!isBlankNewDeck()); diff --git a/cockatrice/src/client/tabs/abstract_tab_deck_editor.h b/cockatrice/src/client/tabs/abstract_tab_deck_editor.h index 796213d27..1642ac107 100644 --- a/cockatrice/src/client/tabs/abstract_tab_deck_editor.h +++ b/cockatrice/src/client/tabs/abstract_tab_deck_editor.h @@ -70,6 +70,7 @@ public: public slots: virtual void onDeckChanged(); + virtual void onDeckModified(); void updateCard(CardInfoPtr _card); void actAddCard(CardInfoPtr info); void actAddCardToSideboard(CardInfoPtr info); diff --git a/cockatrice/src/client/tabs/visual_deck_editor/tab_deck_editor_visual.cpp b/cockatrice/src/client/tabs/visual_deck_editor/tab_deck_editor_visual.cpp index 224c4db15..68f1eee17 100644 --- a/cockatrice/src/client/tabs/visual_deck_editor/tab_deck_editor_visual.cpp +++ b/cockatrice/src/client/tabs/visual_deck_editor/tab_deck_editor_visual.cpp @@ -80,7 +80,7 @@ void TabDeckEditorVisual::createCentralFrame() void TabDeckEditorVisual::onDeckChanged() { - AbstractTabDeckEditor::onDeckChanged(); + AbstractTabDeckEditor::onDeckModified(); tabContainer->visualDeckView->decklistDataChanged(QModelIndex(), QModelIndex()); tabContainer->deckAnalytics->refreshDisplays(deckDockWidget->deckModel); tabContainer->sampleHandWidget->setDeckModel(deckDockWidget->deckModel); diff --git a/cockatrice/src/client/ui/widgets/deck_editor/deck_editor_deck_dock_widget.cpp b/cockatrice/src/client/ui/widgets/deck_editor/deck_editor_deck_dock_widget.cpp index af717fa36..3683666a2 100644 --- a/cockatrice/src/client/ui/widgets/deck_editor/deck_editor_deck_dock_widget.cpp +++ b/cockatrice/src/client/ui/widgets/deck_editor/deck_editor_deck_dock_widget.cpp @@ -228,19 +228,22 @@ void DeckEditorDeckDockWidget::updateCard(const QModelIndex /*¤t*/, const void DeckEditorDeckDockWidget::updateName(const QString &name) { deckModel->getDeckList()->setName(name); - emit deckChanged(); + emit nameChanged(); + emit deckModified(); } void DeckEditorDeckDockWidget::updateComments() { deckModel->getDeckList()->setComments(commentsEdit->toPlainText()); - emit deckChanged(); + emit commentsChanged(); + emit deckModified(); } void DeckEditorDeckDockWidget::updateHash() { hashLabel->setText(deckModel->getDeckList()->getDeckHash()); - emit deckChanged(); + emit hashChanged(); + emit deckModified(); } void DeckEditorDeckDockWidget::updateBannerCardComboBox() @@ -318,7 +321,7 @@ void DeckEditorDeckDockWidget::setBannerCard(int /* changedIndex */) QVariantMap itemData = bannerCardComboBox->itemData(bannerCardComboBox->currentIndex()).toMap(); deckModel->getDeckList()->setBannerCard( QPair(itemData["name"].toString(), itemData["uuid"].toString())); - emit deckChanged(); + emit deckModified(); } void DeckEditorDeckDockWidget::updateShowBannerCardComboBox(const bool visible) @@ -366,8 +369,12 @@ void DeckEditorDeckDockWidget::cleanDeck() { deckModel->cleanList(); nameEdit->setText(QString()); + emit nameChanged(); commentsEdit->setText(QString()); + emit commentsChanged(); hashLabel->setText(QString()); + emit hashChanged(); + emit deckModified(); emit deckChanged(); updateBannerCardComboBox(); deckTagsDisplayWidget->connectDeckList(deckModel->getDeckList()); @@ -426,7 +433,7 @@ void DeckEditorDeckDockWidget::actSwapCard() deckView->setSelectionMode(QAbstractItemView::ExtendedSelection); if (isModified) { - emit deckChanged(); + emit deckModified(); } update(); @@ -521,7 +528,7 @@ void DeckEditorDeckDockWidget::actRemoveCard() deckView->setSelectionMode(QAbstractItemView::ExtendedSelection); if (isModified) { - emit deckChanged(); + emit deckModified(); } } @@ -539,7 +546,7 @@ void DeckEditorDeckDockWidget::offsetCountAtIndex(const QModelIndex &idx, int of else deckModel->setData(numberIndex, new_count, Qt::EditRole); - emit deckChanged(); + emit deckModified(); } void DeckEditorDeckDockWidget::decklistCustomMenu(QPoint point) diff --git a/cockatrice/src/client/ui/widgets/deck_editor/deck_editor_deck_dock_widget.h b/cockatrice/src/client/ui/widgets/deck_editor/deck_editor_deck_dock_widget.h index 0a9ebcd65..c81b4a6fa 100644 --- a/cockatrice/src/client/ui/widgets/deck_editor/deck_editor_deck_dock_widget.h +++ b/cockatrice/src/client/ui/widgets/deck_editor/deck_editor_deck_dock_widget.h @@ -49,7 +49,11 @@ public slots: void offsetCountAtIndex(const QModelIndex &idx, int offset); signals: + void nameChanged(); + void commentsChanged(); + void hashChanged(); void deckChanged(); + void deckModified(); void cardChanged(CardInfoPtr _card); private: