diff --git a/cockatrice/src/client/ui/widgets/printing_selector/printing_selector.cpp b/cockatrice/src/client/ui/widgets/printing_selector/printing_selector.cpp index c5a6aae6b..eb6084227 100644 --- a/cockatrice/src/client/ui/widgets/printing_selector/printing_selector.cpp +++ b/cockatrice/src/client/ui/widgets/printing_selector/printing_selector.cpp @@ -24,19 +24,22 @@ PrintingSelector::PrintingSelector(QWidget *parent, layout->addWidget(viewOptionsToolbar); sortToolBar = new PrintingSelectorCardSortingWidget(this); + sortToolBar->setVisible(SettingsCache::instance().getPrintingSelectorSortOptionsVisible()); layout->addWidget(sortToolBar); - // Add the search bar searchBar = new PrintingSelectorCardSearchWidget(this); + searchBar->setVisible(SettingsCache::instance().getPrintingSelectorSearchBarVisible()); layout->addWidget(searchBar); flowWidget = new FlowWidget(this, Qt::ScrollBarAlwaysOff, Qt::ScrollBarAsNeeded); layout->addWidget(flowWidget); cardSizeWidget = new CardSizeWidget(this, flowWidget, SettingsCache::instance().getPrintingSelectorCardSize()); + cardSizeWidget->setVisible(SettingsCache::instance().getPrintingSelectorCardSizeSliderVisible()); layout->addWidget(cardSizeWidget); cardSelectionBar = new PrintingSelectorCardSelectionWidget(this); + cardSelectionBar->setVisible(SettingsCache::instance().getPrintingSelectorNavigationButtonsVisible()); layout->addWidget(cardSelectionBar); connect(deckModel, &DeckListModel::dataChanged, this, [this]() { @@ -166,3 +169,23 @@ void PrintingSelector::getAllSetsForCurrentCard() currentIndex = 0; widgetLoadingBufferTimer->start(0); // Process as soon as possible } + +void PrintingSelector::toggleVisibilitySortOptions(bool _state) +{ + sortToolBar->setVisible(_state); +} + +void PrintingSelector::toggleVisibilitySearchBar(bool _state) +{ + searchBar->setVisible(_state); +} + +void PrintingSelector::toggleVisibilityCardSizeSlider(bool _state) +{ + cardSizeWidget->setVisible(_state); +} + +void PrintingSelector::toggleVisibilityNavigationButtons(bool _state) +{ + cardSelectionBar->setVisible(_state); +} diff --git a/cockatrice/src/client/ui/widgets/printing_selector/printing_selector.h b/cockatrice/src/client/ui/widgets/printing_selector/printing_selector.h index 5361443a1..d26d31e16 100644 --- a/cockatrice/src/client/ui/widgets/printing_selector/printing_selector.h +++ b/cockatrice/src/client/ui/widgets/printing_selector/printing_selector.h @@ -33,6 +33,10 @@ public slots: void updateDisplay(); void selectPreviousCard(); void selectNextCard(); + void toggleVisibilitySortOptions(bool _state); + void toggleVisibilitySearchBar(bool _state); + void toggleVisibilityCardSizeSlider(bool _state); + void toggleVisibilityNavigationButtons(bool _state); private: QVBoxLayout *layout; diff --git a/cockatrice/src/client/ui/widgets/printing_selector/printing_selector_view_options_toolbar_widget.cpp b/cockatrice/src/client/ui/widgets/printing_selector/printing_selector_view_options_toolbar_widget.cpp index 988f65420..9403d1d09 100644 --- a/cockatrice/src/client/ui/widgets/printing_selector/printing_selector_view_options_toolbar_widget.cpp +++ b/cockatrice/src/client/ui/widgets/printing_selector/printing_selector_view_options_toolbar_widget.cpp @@ -25,7 +25,7 @@ PrintingSelectorViewOptionsToolbarWidget::PrintingSelectorViewOptionsToolbarWidg connect(collapseButton, &QPushButton::clicked, this, &PrintingSelectorViewOptionsToolbarWidget::collapse); expandedLayout->addWidget(collapseButton, 0, Qt::AlignLeft); - viewOptions = new PrintingSelectorViewOptionsWidget(expandedWidget); + viewOptions = new PrintingSelectorViewOptionsWidget(expandedWidget, printingSelector); expandedLayout->addWidget(viewOptions); expandedWidget->setLayout(expandedLayout); diff --git a/cockatrice/src/client/ui/widgets/printing_selector/printing_selector_view_options_widget.cpp b/cockatrice/src/client/ui/widgets/printing_selector/printing_selector_view_options_widget.cpp index 3266b78d2..8f88c75e7 100644 --- a/cockatrice/src/client/ui/widgets/printing_selector/printing_selector_view_options_widget.cpp +++ b/cockatrice/src/client/ui/widgets/printing_selector/printing_selector_view_options_widget.cpp @@ -1,6 +1,10 @@ #include "printing_selector_view_options_widget.h" -PrintingSelectorViewOptionsWidget::PrintingSelectorViewOptionsWidget(QWidget *parent) : QWidget(parent) +#include "../../../../settings/cache_settings.h" + +PrintingSelectorViewOptionsWidget::PrintingSelectorViewOptionsWidget(QWidget *parent, + PrintingSelector *_printingSelector) + : QWidget(parent), printingSelector(_printingSelector) { layout = new QHBoxLayout(this); setLayout(layout); @@ -9,12 +13,32 @@ PrintingSelectorViewOptionsWidget::PrintingSelectorViewOptionsWidget(QWidget *pa sortCheckBox = new QCheckBox(flowWidget); sortCheckBox->setText(tr("Display Sorting Options")); + sortCheckBox->setChecked(SettingsCache::instance().getPrintingSelectorSortOptionsVisible()); + connect(sortCheckBox, &QCheckBox::QT_STATE_CHANGED, printingSelector, + &PrintingSelector::toggleVisibilitySortOptions); + connect(sortCheckBox, &QCheckBox::QT_STATE_CHANGED, &SettingsCache::instance(), + &SettingsCache::setPrintingSelectorSortOptionsVisible); searchCheckBox = new QCheckBox(flowWidget); searchCheckBox->setText(tr("Display Search Bar")); + searchCheckBox->setChecked(SettingsCache::instance().getPrintingSelectorSearchBarVisible()); + connect(searchCheckBox, &QCheckBox::QT_STATE_CHANGED, printingSelector, + &PrintingSelector::toggleVisibilitySearchBar); + connect(searchCheckBox, &QCheckBox::QT_STATE_CHANGED, &SettingsCache::instance(), + &SettingsCache::setPrintingSelectorSearchBarVisible); cardSizeCheckBox = new QCheckBox(flowWidget); cardSizeCheckBox->setText(tr("Display Card Size Slider")); + cardSizeCheckBox->setChecked(SettingsCache::instance().getPrintingSelectorCardSizeSliderVisible()); + connect(cardSizeCheckBox, &QCheckBox::QT_STATE_CHANGED, printingSelector, + &PrintingSelector::toggleVisibilityCardSizeSlider); + connect(cardSizeCheckBox, &QCheckBox::QT_STATE_CHANGED, &SettingsCache::instance(), + &SettingsCache::setPrintingSelectorCardSizeSliderVisible); navigationCheckBox = new QCheckBox(flowWidget); navigationCheckBox->setText(tr("Display Navigation Buttons")); + navigationCheckBox->setChecked(SettingsCache::instance().getPrintingSelectorNavigationButtonsVisible()); + connect(navigationCheckBox, &QCheckBox::QT_STATE_CHANGED, printingSelector, + &PrintingSelector::toggleVisibilityNavigationButtons); + connect(navigationCheckBox, &QCheckBox::QT_STATE_CHANGED, &SettingsCache::instance(), + &SettingsCache::setPrintingSelectorNavigationButtonsVisible); flowWidget->addWidget(sortCheckBox); flowWidget->addWidget(searchCheckBox); diff --git a/cockatrice/src/client/ui/widgets/printing_selector/printing_selector_view_options_widget.h b/cockatrice/src/client/ui/widgets/printing_selector/printing_selector_view_options_widget.h index 120456fcd..16d12d0b9 100644 --- a/cockatrice/src/client/ui/widgets/printing_selector/printing_selector_view_options_widget.h +++ b/cockatrice/src/client/ui/widgets/printing_selector/printing_selector_view_options_widget.h @@ -2,6 +2,7 @@ #define PRINTING_SELECTOR_VIEW_OPTIONS_WIDGET_H #include "../general/layout_containers/flow_widget.h" +#include "printing_selector.h" #include #include @@ -12,11 +13,12 @@ class PrintingSelectorViewOptionsWidget : public QWidget Q_OBJECT public: - explicit PrintingSelectorViewOptionsWidget(QWidget *parent); + explicit PrintingSelectorViewOptionsWidget(QWidget *parent, PrintingSelector *_printingSelector); private: QHBoxLayout *layout; FlowWidget *flowWidget; + PrintingSelector *printingSelector; QCheckBox *sortCheckBox; QCheckBox *searchCheckBox; QCheckBox *cardSizeCheckBox; diff --git a/cockatrice/src/settings/cache_settings.cpp b/cockatrice/src/settings/cache_settings.cpp index 0ae5f6255..a4067fe5f 100644 --- a/cockatrice/src/settings/cache_settings.cpp +++ b/cockatrice/src/settings/cache_settings.cpp @@ -247,6 +247,12 @@ SettingsCache::SettingsCache() bumpSetsWithCardsInDeckToTop = settings->value("cards/bumpsetswithcardsindecktotop", true).toBool(); printingSelectorSortOrder = settings->value("cards/printingselectorsortorder", 1).toInt(); printingSelectorCardSize = settings->value("cards/printingselectorcardsize", 100).toInt(); + printingSelectorSortOptionsVisible = settings->value("cards/printingselectorsortoptionsvisible", true).toBool(); + printingSelectorSearchBarVisible = settings->value("cards/printingselectorcardsearchbarvisible", true).toBool(); + printingSelectorCardSizeSliderVisible = + settings->value("cards/printingselectorcardsizeslidervisible", true).toBool(); + printingSelectorNavigationButtonsVisible = + settings->value("cards/printingselectornavigationbuttonsvisible", true).toBool(); horizontalHand = settings->value("hand/horizontal", true).toBool(); invertVerticalCoordinate = settings->value("table/invert_vertical", false).toBool(); minPlayersForMultiColumnLayout = settings->value("interface/min_players_multicolumn", 4).toInt(); @@ -560,6 +566,34 @@ void SettingsCache::setPrintingSelectorCardSize(int _printingSelectorCardSize) emit printingSelectorCardSizeChanged(); } +void SettingsCache::setPrintingSelectorSortOptionsVisible(QT_STATE_CHANGED_T _sortOptionsVisible) +{ + printingSelectorSortOptionsVisible = _sortOptionsVisible; + settings->setValue("cards/printingselectorsortoptionsvisible", printingSelectorSortOptionsVisible); + emit printingSelectorSortOptionsVisibleChanged(); +} + +void SettingsCache::setPrintingSelectorSearchBarVisible(QT_STATE_CHANGED_T _searchBarVisible) +{ + printingSelectorSearchBarVisible = _searchBarVisible; + settings->setValue("cards/printingselectorsearchbarvisible", printingSelectorSearchBarVisible); + emit printingSelectorSearchBarVisibleChanged(); +} + +void SettingsCache::setPrintingSelectorCardSizeSliderVisible(QT_STATE_CHANGED_T _cardSizeSliderVisible) +{ + printingSelectorCardSizeSliderVisible = _cardSizeSliderVisible; + settings->setValue("cards/printingselectorcardsizeslidervisible", printingSelectorCardSizeSliderVisible); + emit printingSelectorCardSizeSliderVisibleChanged(); +} + +void SettingsCache::setPrintingSelectorNavigationButtonsVisible(QT_STATE_CHANGED_T _navigationButtonsVisible) +{ + printingSelectorNavigationButtonsVisible = _navigationButtonsVisible; + settings->setValue("cards/printingselectornavigationbuttonsvisible", printingSelectorNavigationButtonsVisible); + emit printingSelectorNavigationButtonsVisibleChanged(); +} + 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 abe21824f..b100829ea 100644 --- a/cockatrice/src/settings/cache_settings.h +++ b/cockatrice/src/settings/cache_settings.h @@ -52,6 +52,10 @@ signals: void bumpSetsWithCardsInDeckToTopChanged(); void printingSelectorSortOrderChanged(); void printingSelectorCardSizeChanged(); + void printingSelectorSortOptionsVisibleChanged(); + void printingSelectorSearchBarVisibleChanged(); + void printingSelectorCardSizeSliderVisibleChanged(); + void printingSelectorNavigationButtonsVisibleChanged(); void horizontalHandChanged(); void handJustificationChanged(); void invertVerticalCoordinateChanged(); @@ -107,6 +111,10 @@ private: bool bumpSetsWithCardsInDeckToTop; int printingSelectorSortOrder; int printingSelectorCardSize; + bool printingSelectorSortOptionsVisible; + bool printingSelectorSearchBarVisible; + bool printingSelectorCardSizeSliderVisible; + bool printingSelectorNavigationButtonsVisible; bool horizontalHand; bool invertVerticalCoordinate; int minPlayersForMultiColumnLayout; @@ -323,6 +331,22 @@ public: { return printingSelectorCardSize; } + bool getPrintingSelectorSortOptionsVisible() const + { + return printingSelectorSortOptionsVisible; + } + bool getPrintingSelectorSearchBarVisible() const + { + return printingSelectorSearchBarVisible; + } + bool getPrintingSelectorCardSizeSliderVisible() const + { + return printingSelectorCardSizeSliderVisible; + } + bool getPrintingSelectorNavigationButtonsVisible() const + { + return printingSelectorNavigationButtonsVisible; + } bool getHorizontalHand() const { return horizontalHand; @@ -606,6 +630,10 @@ public slots: void setBumpSetsWithCardsInDeckToTop(QT_STATE_CHANGED_T _bumpSetsWithCardsInDeckToTop); void setPrintingSelectorSortOrder(int _printingSelectorSortOrder); void setPrintingSelectorCardSize(int _printingSelectorCardSize); + void setPrintingSelectorSortOptionsVisible(QT_STATE_CHANGED_T _sortOptionsVisible); + void setPrintingSelectorSearchBarVisible(QT_STATE_CHANGED_T _searchBarVisible); + void setPrintingSelectorCardSizeSliderVisible(QT_STATE_CHANGED_T _cardSizeSliderVisible); + void setPrintingSelectorNavigationButtonsVisible(QT_STATE_CHANGED_T _navigationButtonsVisible); 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 38f429af2..3bca38096 100644 --- a/dbconverter/src/mocks.cpp +++ b/dbconverter/src/mocks.cpp @@ -169,6 +169,18 @@ void SettingsCache::setPrintingSelectorSortOrder(int /* _printingSelectorSortOrd void SettingsCache::setPrintingSelectorCardSize(int /* _printingSelectorCardSize */) { } +void SettingsCache::setPrintingSelectorSortOptionsVisible(QT_STATE_CHANGED_T /* _sortOptionsVisible */) +{ +} +void SettingsCache::setPrintingSelectorSearchBarVisible(QT_STATE_CHANGED_T /* _searchBarVisible */) +{ +} +void SettingsCache::setPrintingSelectorCardSizeSliderVisible(QT_STATE_CHANGED_T /* _cardSizeSliderVisible */) +{ +} +void SettingsCache::setPrintingSelectorNavigationButtonsVisible(QT_STATE_CHANGED_T /* _navigationButtonsVisible */) +{ +} void SettingsCache::setHorizontalHand(QT_STATE_CHANGED_T /* _horizontalHand */) { } diff --git a/tests/carddatabase/mocks.cpp b/tests/carddatabase/mocks.cpp index 6d155b8f9..26c3ff9cb 100644 --- a/tests/carddatabase/mocks.cpp +++ b/tests/carddatabase/mocks.cpp @@ -173,6 +173,18 @@ void SettingsCache::setPrintingSelectorSortOrder(int /* _printingSelectorSortOrd void SettingsCache::setPrintingSelectorCardSize(int /* _printingSelectorCardSize */) { } +void SettingsCache::setPrintingSelectorSortOptionsVisible(QT_STATE_CHANGED_T /* _sortOptionsVisible */) +{ +} +void SettingsCache::setPrintingSelectorSearchBarVisible(QT_STATE_CHANGED_T /* _searchBarVisible */) +{ +} +void SettingsCache::setPrintingSelectorCardSizeSliderVisible(QT_STATE_CHANGED_T /* _cardSizeSliderVisible */) +{ +} +void SettingsCache::setPrintingSelectorNavigationButtonsVisible(QT_STATE_CHANGED_T /* _navigationButtonsVisible */) +{ +} void SettingsCache::setHorizontalHand(QT_STATE_CHANGED_T /* _horizontalHand */) { }