From 34400c7f60567710940bcebf7b27ec523a7dfc35 Mon Sep 17 00:00:00 2001 From: BruebachL <44814898+BruebachL@users.noreply.github.com> Date: Wed, 7 May 2025 03:28:03 +0200 Subject: [PATCH] [VDE] Sample Hand Improvements (#5917) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Actually call retranslateUi, add spinBox to change sample hand size, add card size slider. * Lint. * Fix include. * Fix include again. * Fix overloads. * Update visual_deck_editor_sample_hand_widget.cpp --------- Co-authored-by: Lukas BrĂ¼bach Co-authored-by: Zach H --- .../visual_deck_editor_sample_hand_widget.cpp | 34 ++++++++++++++++--- .../visual_deck_editor_sample_hand_widget.h | 6 ++++ cockatrice/src/settings/cache_settings.cpp | 8 +++++ cockatrice/src/settings/cache_settings.h | 7 ++++ dbconverter/src/mocks.cpp | 3 ++ tests/carddatabase/mocks.cpp | 3 ++ 6 files changed, 57 insertions(+), 4 deletions(-) diff --git a/cockatrice/src/client/ui/widgets/visual_deck_editor/visual_deck_editor_sample_hand_widget.cpp b/cockatrice/src/client/ui/widgets/visual_deck_editor/visual_deck_editor_sample_hand_widget.cpp index 7868627e2..8530a8233 100644 --- a/cockatrice/src/client/ui/widgets/visual_deck_editor/visual_deck_editor_sample_hand_widget.cpp +++ b/cockatrice/src/client/ui/widgets/visual_deck_editor/visual_deck_editor_sample_hand_widget.cpp @@ -2,6 +2,7 @@ #include "../../../../deck/deck_loader.h" #include "../../../../game/cards/card_database_manager.h" +#include "../../../../settings/cache_settings.h" #include "../cards/card_info_picture_widget.h" #include @@ -12,23 +13,45 @@ VisualDeckEditorSampleHandWidget::VisualDeckEditorSampleHandWidget(QWidget *pare layout = new QVBoxLayout(this); setLayout(layout); + resetAndHandSizeContainerWidget = new QWidget(this); + resetAndHandSizeLayout = new QHBoxLayout(resetAndHandSizeContainerWidget); + resetAndHandSizeContainerWidget->setLayout(resetAndHandSizeLayout); + resetButton = new QPushButton(this); connect(resetButton, SIGNAL(clicked()), this, SLOT(updateDisplay())); - layout->addWidget(resetButton); + resetAndHandSizeLayout->addWidget(resetButton); + + handSizeSpinBox = new QSpinBox(this); + handSizeSpinBox->setValue(SettingsCache::instance().getVisualDeckEditorSampleHandSize()); + handSizeSpinBox->setMinimum(1); + connect(handSizeSpinBox, QOverload::of(&QSpinBox::valueChanged), &SettingsCache::instance(), + &SettingsCache::setVisualDeckEditorSampleHandSize); + connect(handSizeSpinBox, QOverload::of(&QSpinBox::valueChanged), this, + &VisualDeckEditorSampleHandWidget::updateDisplay); + resetAndHandSizeLayout->addWidget(handSizeSpinBox); + + layout->addWidget(resetAndHandSizeContainerWidget); flowWidget = new FlowWidget(this, Qt::Horizontal, Qt::ScrollBarAlwaysOff, Qt::ScrollBarAsNeeded); layout->addWidget(flowWidget); - for (CardInfoPtr card : getRandomCards(7)) { + cardSizeWidget = new CardSizeWidget(this, flowWidget); + layout->addWidget(cardSizeWidget); + + for (CardInfoPtr card : getRandomCards(handSizeSpinBox->value())) { auto displayWidget = new CardInfoPictureWidget(this); displayWidget->setCard(card); + displayWidget->setScaleFactor(cardSizeWidget->getSlider()->value()); flowWidget->addWidget(displayWidget); } + + retranslateUi(); } void VisualDeckEditorSampleHandWidget::retranslateUi() { - resetButton->setText(tr("Reset")); + resetButton->setText(tr("Draw a new sample hand")); + handSizeSpinBox->setToolTip(tr("Sample hand size")); } void VisualDeckEditorSampleHandWidget::setDeckModel(DeckListModel *deckModel) @@ -41,9 +64,12 @@ void VisualDeckEditorSampleHandWidget::setDeckModel(DeckListModel *deckModel) void VisualDeckEditorSampleHandWidget::updateDisplay() { flowWidget->clearLayout(); - for (CardInfoPtr card : getRandomCards(7)) { + for (CardInfoPtr card : getRandomCards(handSizeSpinBox->value())) { auto displayWidget = new CardInfoPictureWidget(this); displayWidget->setCard(card); + displayWidget->setScaleFactor(cardSizeWidget->getSlider()->value()); + connect(cardSizeWidget->getSlider(), &QSlider::valueChanged, displayWidget, + &CardInfoPictureWidget::setScaleFactor); flowWidget->addWidget(displayWidget); } } diff --git a/cockatrice/src/client/ui/widgets/visual_deck_editor/visual_deck_editor_sample_hand_widget.h b/cockatrice/src/client/ui/widgets/visual_deck_editor/visual_deck_editor_sample_hand_widget.h index 44dc04cab..ba09a978e 100644 --- a/cockatrice/src/client/ui/widgets/visual_deck_editor/visual_deck_editor_sample_hand_widget.h +++ b/cockatrice/src/client/ui/widgets/visual_deck_editor/visual_deck_editor_sample_hand_widget.h @@ -1,10 +1,12 @@ #ifndef VISUAL_DECK_EDITOR_SAMPLE_HAND_WIDGET_H #define VISUAL_DECK_EDITOR_SAMPLE_HAND_WIDGET_H +#include "../../../../client/ui/widgets/cards/card_size_widget.h" #include "../../../../deck/deck_list_model.h" #include "../general/layout_containers/flow_widget.h" #include +#include #include class VisualDeckEditorSampleHandWidget : public QWidget @@ -22,8 +24,12 @@ public slots: private: DeckListModel *deckListModel; QVBoxLayout *layout; + QWidget *resetAndHandSizeContainerWidget; + QHBoxLayout *resetAndHandSizeLayout; QPushButton *resetButton; + QSpinBox *handSizeSpinBox; FlowWidget *flowWidget; + CardSizeWidget *cardSizeWidget; }; #endif // VISUAL_DECK_EDITOR_SAMPLE_HAND_WIDGET_H diff --git a/cockatrice/src/settings/cache_settings.cpp b/cockatrice/src/settings/cache_settings.cpp index 6507780fe..ef369641b 100644 --- a/cockatrice/src/settings/cache_settings.cpp +++ b/cockatrice/src/settings/cache_settings.cpp @@ -291,6 +291,7 @@ SettingsCache::SettingsCache() settings->value("interface/visualdatabasedisplayfiltertomostrecentsetsenabled", true).toBool(); visualDatabaseDisplayFilterToMostRecentSetsAmount = settings->value("interface/visualdatabasedisplayfiltertomostrecentsetsamount", 10).toInt(); + visualDeckEditorSampleHandSize = settings->value("interface/visualdeckeditorsamplehandsize", 7).toInt(); horizontalHand = settings->value("hand/horizontal", true).toBool(); invertVerticalCoordinate = settings->value("table/invert_vertical", false).toBool(); minPlayersForMultiColumnLayout = settings->value("interface/min_players_multicolumn", 4).toInt(); @@ -821,6 +822,13 @@ void SettingsCache::setVisualDatabaseDisplayFilterToMostRecentSetsAmount(int _am emit visualDatabaseDisplayFilterToMostRecentSetsAmountChanged(visualDatabaseDisplayFilterToMostRecentSetsAmount); } +void SettingsCache::setVisualDeckEditorSampleHandSize(int _amount) +{ + visualDeckEditorSampleHandSize = _amount; + settings->setValue("interface/visualdeckeditorsamplehandsize", visualDeckEditorSampleHandSize); + emit visualDeckEditorSampleHandSizeAmountChanged(visualDeckEditorSampleHandSize); +} + void SettingsCache::setHorizontalHand(QT_STATE_CHANGED_T _horizontalHand) { horizontalHand = static_cast(_horizontalHand); diff --git a/cockatrice/src/settings/cache_settings.h b/cockatrice/src/settings/cache_settings.h index bb4bed95f..94cb2ed6a 100644 --- a/cockatrice/src/settings/cache_settings.h +++ b/cockatrice/src/settings/cache_settings.h @@ -73,6 +73,7 @@ signals: void visualDeckStorageSelectionAnimationChanged(bool enabled); void visualDatabaseDisplayFilterToMostRecentSetsEnabledChanged(bool enabled); void visualDatabaseDisplayFilterToMostRecentSetsAmountChanged(int amount); + void visualDeckEditorSampleHandSizeAmountChanged(int amount); void horizontalHandChanged(); void handJustificationChanged(); void invertVerticalCoordinateChanged(); @@ -156,6 +157,7 @@ private: int defaultDeckEditorType; bool visualDatabaseDisplayFilterToMostRecentSetsEnabled; int visualDatabaseDisplayFilterToMostRecentSetsAmount; + int visualDeckEditorSampleHandSize; bool horizontalHand; bool invertVerticalCoordinate; int minPlayersForMultiColumnLayout; @@ -502,6 +504,10 @@ public: { return visualDatabaseDisplayFilterToMostRecentSetsAmount; } + int getVisualDeckEditorSampleHandSize() const + { + return visualDeckEditorSampleHandSize; + } bool getHorizontalHand() const { return horizontalHand; @@ -853,6 +859,7 @@ public slots: void setDefaultDeckEditorType(int value); void setVisualDatabaseDisplayFilterToMostRecentSetsEnabled(QT_STATE_CHANGED_T _enabled); void setVisualDatabaseDisplayFilterToMostRecentSetsAmount(int _amount); + void setVisualDeckEditorSampleHandSize(int _amount); void setHorizontalHand(QT_STATE_CHANGED_T _horizontalHand); void setInvertVerticalCoordinate(QT_STATE_CHANGED_T _invertVerticalCoordinate); void setMinPlayersForMultiColumnLayout(int _minPlayersForMultiColumnLayout); diff --git a/dbconverter/src/mocks.cpp b/dbconverter/src/mocks.cpp index 890294870..032cdc95e 100644 --- a/dbconverter/src/mocks.cpp +++ b/dbconverter/src/mocks.cpp @@ -268,6 +268,9 @@ void SettingsCache::setVisualDatabaseDisplayFilterToMostRecentSetsEnabled(QT_STA void SettingsCache::setVisualDatabaseDisplayFilterToMostRecentSetsAmount(int /* _amount */) { } +void SettingsCache::setVisualDeckEditorSampleHandSize(int /* _amount */) +{ +} void SettingsCache::setHorizontalHand(QT_STATE_CHANGED_T /* _horizontalHand */) { } diff --git a/tests/carddatabase/mocks.cpp b/tests/carddatabase/mocks.cpp index b34c28727..db7dd9353 100644 --- a/tests/carddatabase/mocks.cpp +++ b/tests/carddatabase/mocks.cpp @@ -272,6 +272,9 @@ void SettingsCache::setVisualDatabaseDisplayFilterToMostRecentSetsEnabled(QT_STA void SettingsCache::setVisualDatabaseDisplayFilterToMostRecentSetsAmount(int /* _amount */) { } +void SettingsCache::setVisualDeckEditorSampleHandSize(int /* _amount */) +{ +} void SettingsCache::setHorizontalHand(QT_STATE_CHANGED_T /* _horizontalHand */) { }