diff --git a/cockatrice/CMakeLists.txt b/cockatrice/CMakeLists.txt
index 45ad94f34..b047b0ca6 100644
--- a/cockatrice/CMakeLists.txt
+++ b/cockatrice/CMakeLists.txt
@@ -110,9 +110,9 @@ set(cockatrice_SOURCES
src/client/ui/widgets/printing_selector/printing_selector_card_search_widget.cpp
src/client/ui/widgets/printing_selector/printing_selector_card_selection_widget.cpp
src/client/ui/widgets/printing_selector/printing_selector_card_sorting_widget.cpp
- src/client/ui/widgets/printing_selector/printing_selector_view_options_toolbar_widget.cpp
- src/client/ui/widgets/printing_selector/printing_selector_view_options_widget.cpp
src/client/ui/widgets/printing_selector/set_name_and_collectors_number_display_widget.cpp
+ src/client/ui/widgets/quick_settings/settings_button_widget.cpp
+ src/client/ui/widgets/quick_settings/settings_popup_widget.cpp
src/client/network/release_channel.cpp
src/client/network/client_update_checker.cpp
src/server/remote/remote_client.cpp
diff --git a/cockatrice/cockatrice.qrc b/cockatrice/cockatrice.qrc
index 32dbdd61c..5ad485618 100644
--- a/cockatrice/cockatrice.qrc
+++ b/cockatrice/cockatrice.qrc
@@ -13,6 +13,7 @@
resources/icons/arrow_top_green.svg
resources/icons/arrow_up_green.svg
resources/icons/clearsearch.svg
+ resources/icons/cogwheel.svg
resources/icons/conceded.svg
resources/icons/decrement.svg
resources/icons/delete.svg
diff --git a/cockatrice/resources/icons/cogwheel.svg b/cockatrice/resources/icons/cogwheel.svg
new file mode 100644
index 000000000..8c7aad617
--- /dev/null
+++ b/cockatrice/resources/icons/cogwheel.svg
@@ -0,0 +1,29 @@
+
+
+
\ No newline at end of file
diff --git a/cockatrice/src/client/ui/widgets/cards/card_size_widget.cpp b/cockatrice/src/client/ui/widgets/cards/card_size_widget.cpp
index d6ce09247..be231e67a 100644
--- a/cockatrice/src/client/ui/widgets/cards/card_size_widget.cpp
+++ b/cockatrice/src/client/ui/widgets/cards/card_size_widget.cpp
@@ -11,8 +11,8 @@
* This widget allows users to dynamically change the card size in a linked FlowWidget
* and updates the application's settings accordingly.
*/
-CardSizeWidget::CardSizeWidget(QWidget *parent, FlowWidget *flowWidget, int defaultValue)
- : parent(parent), flowWidget(flowWidget)
+CardSizeWidget::CardSizeWidget(QWidget *parent, FlowWidget *_flowWidget, int defaultValue)
+ : parent(parent), flowWidget(_flowWidget)
{
cardSizeLayout = new QHBoxLayout(this);
cardSizeLayout->setContentsMargins(9, 0, 9, 0);
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 4a3d9fe80..a5407a15d 100644
--- a/cockatrice/src/client/ui/widgets/printing_selector/printing_selector.cpp
+++ b/cockatrice/src/client/ui/widgets/printing_selector/printing_selector.cpp
@@ -5,7 +5,6 @@
#include "printing_selector_card_search_widget.h"
#include "printing_selector_card_selection_widget.h"
#include "printing_selector_card_sorting_widget.h"
-#include "printing_selector_view_options_toolbar_widget.h"
#include
@@ -29,29 +28,49 @@ PrintingSelector::PrintingSelector(QWidget *parent,
: QWidget(parent), deckEditor(deckEditor), deckModel(deckModel), deckView(deckView)
{
setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
- layout = new QVBoxLayout();
+ layout = new QVBoxLayout(this);
setLayout(layout);
+
widgetLoadingBufferTimer = new QTimer(this);
- // Initialize toolbar and widgets
- viewOptionsToolbar = new PrintingSelectorViewOptionsToolbarWidget(this, this);
- layout->addWidget(viewOptionsToolbar);
+ flowWidget = new FlowWidget(this, Qt::Horizontal, Qt::ScrollBarAlwaysOff, Qt::ScrollBarAsNeeded);
sortToolBar = new PrintingSelectorCardSortingWidget(this);
- sortToolBar->setVisible(SettingsCache::instance().getPrintingSelectorSortOptionsVisible());
- layout->addWidget(sortToolBar);
+ sortToolBar->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred);
+
+ displayOptionsWidget = new SettingsButtonWidget(this);
+ displayOptionsWidget->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Preferred);
+
+ // Create the checkbox for navigation buttons visibility
+ navigationCheckBox = new QCheckBox(this);
+ navigationCheckBox->setChecked(SettingsCache::instance().getPrintingSelectorNavigationButtonsVisible());
+ connect(navigationCheckBox, &QCheckBox::QT_STATE_CHANGED, this,
+ &PrintingSelector::toggleVisibilityNavigationButtons);
+ connect(navigationCheckBox, &QCheckBox::QT_STATE_CHANGED, &SettingsCache::instance(),
+ &SettingsCache::setPrintingSelectorNavigationButtonsVisible);
+
+ cardSizeWidget =
+ new CardSizeWidget(displayOptionsWidget, flowWidget, SettingsCache::instance().getPrintingSelectorCardSize());
+
+ displayOptionsWidget->addSettingsWidget(sortToolBar);
+ displayOptionsWidget->addSettingsWidget(navigationCheckBox);
+ displayOptionsWidget->addSettingsWidget(cardSizeWidget);
+
+ sortAndOptionsContainer = new QWidget(this);
+ sortAndOptionsLayout = new QHBoxLayout(sortAndOptionsContainer);
+ sortAndOptionsLayout->setSpacing(3);
+ sortAndOptionsLayout->setContentsMargins(0, 0, 0, 0);
+ sortAndOptionsContainer->setLayout(sortAndOptionsLayout);
searchBar = new PrintingSelectorCardSearchWidget(this);
- searchBar->setVisible(SettingsCache::instance().getPrintingSelectorSearchBarVisible());
- layout->addWidget(searchBar);
- flowWidget = new FlowWidget(this, Qt::Horizontal, Qt::ScrollBarAlwaysOff, Qt::ScrollBarAsNeeded);
+ sortAndOptionsLayout->addWidget(searchBar);
+ sortAndOptionsLayout->addWidget(displayOptionsWidget);
+
+ layout->addWidget(sortAndOptionsContainer);
+
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);
@@ -59,6 +78,13 @@ PrintingSelector::PrintingSelector(QWidget *parent,
// Connect deck model data change signal to update display
connect(deckModel, &DeckListModel::rowsInserted, this, &PrintingSelector::printingsInDeckChanged);
connect(deckModel, &DeckListModel::rowsRemoved, this, &PrintingSelector::printingsInDeckChanged);
+
+ retranslateUi();
+}
+
+void PrintingSelector::retranslateUi()
+{
+ navigationCheckBox->setText(tr("Display Navigation Buttons"));
}
void PrintingSelector::printingsInDeckChanged()
@@ -206,36 +232,6 @@ void PrintingSelector::getAllSetsForCurrentCard()
widgetLoadingBufferTimer->start(0); // Process as soon as possible
}
-/**
- * @brief Toggles the visibility of the sorting options toolbar.
- *
- * @param _state The visibility state to set.
- */
-void PrintingSelector::toggleVisibilitySortOptions(bool _state)
-{
- sortToolBar->setVisible(_state);
-}
-
-/**
- * @brief Toggles the visibility of the search bar.
- *
- * @param _state The visibility state to set.
- */
-void PrintingSelector::toggleVisibilitySearchBar(bool _state)
-{
- searchBar->setVisible(_state);
-}
-
-/**
- * @brief Toggles the visibility of the card size slider.
- *
- * @param _state The visibility state to set.
- */
-void PrintingSelector::toggleVisibilityCardSizeSlider(bool _state)
-{
- cardSizeWidget->setVisible(_state);
-}
-
/**
* @brief Toggles the visibility of the navigation buttons.
*
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 24020a7cc..ee66f3872 100644
--- a/cockatrice/src/client/ui/widgets/printing_selector/printing_selector.h
+++ b/cockatrice/src/client/ui/widgets/printing_selector/printing_selector.h
@@ -5,7 +5,9 @@
#include "../../../../game/cards/card_database.h"
#include "../cards/card_size_widget.h"
#include "../general/layout_containers/flow_widget.h"
+#include "../quick_settings/settings_button_widget.h"
+#include
#include
#include
#include
@@ -16,7 +18,7 @@
class PrintingSelectorCardSearchWidget;
class PrintingSelectorCardSelectionWidget;
class PrintingSelectorCardSortingWidget;
-class PrintingSelectorViewOptionsToolbarWidget;
+class PrintingSelectorViewOptionsWidget;
class TabDeckEditor;
class PrintingSelector : public QWidget
{
@@ -24,16 +26,15 @@ class PrintingSelector : public QWidget
public:
PrintingSelector(QWidget *parent, TabDeckEditor *deckEditor, DeckListModel *deckModel, QTreeView *deckView);
+
void setCard(const CardInfoPtr &newCard, const QString &_currentZone);
void getAllSetsForCurrentCard();
public slots:
+ void retranslateUi();
void updateDisplay();
void selectPreviousCard();
void selectNextCard();
- void toggleVisibilitySortOptions(bool _state);
- void toggleVisibilitySearchBar(bool _state);
- void toggleVisibilityCardSizeSlider(bool _state);
void toggleVisibilityNavigationButtons(bool _state);
private slots:
@@ -41,7 +42,10 @@ private slots:
private:
QVBoxLayout *layout;
- PrintingSelectorViewOptionsToolbarWidget *viewOptionsToolbar;
+ SettingsButtonWidget *displayOptionsWidget;
+ QWidget *sortAndOptionsContainer;
+ QHBoxLayout *sortAndOptionsLayout;
+ QCheckBox *navigationCheckBox;
PrintingSelectorCardSortingWidget *sortToolBar;
PrintingSelectorCardSearchWidget *searchBar;
FlowWidget *flowWidget;
diff --git a/cockatrice/src/client/ui/widgets/printing_selector/printing_selector_card_sorting_widget.cpp b/cockatrice/src/client/ui/widgets/printing_selector/printing_selector_card_sorting_widget.cpp
index 734c5cec7..919bdbf5f 100644
--- a/cockatrice/src/client/ui/widgets/printing_selector/printing_selector_card_sorting_widget.cpp
+++ b/cockatrice/src/client/ui/widgets/printing_selector/printing_selector_card_sorting_widget.cpp
@@ -18,8 +18,8 @@ const QStringList PrintingSelectorCardSortingWidget::SORT_OPTIONS = {SORT_OPTION
*/
PrintingSelectorCardSortingWidget::PrintingSelectorCardSortingWidget(PrintingSelector *parent) : parent(parent)
{
+ setMinimumWidth(300);
sortToolBar = new QHBoxLayout(this);
- sortToolBar->setContentsMargins(9, 0, 9, 0);
sortOptionsSelector = new QComboBox(this);
sortOptionsSelector->addItems(SORT_OPTIONS);
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
deleted file mode 100644
index cd03db466..000000000
--- a/cockatrice/src/client/ui/widgets/printing_selector/printing_selector_view_options_toolbar_widget.cpp
+++ /dev/null
@@ -1,140 +0,0 @@
-#include "printing_selector_view_options_toolbar_widget.h"
-
-#include
-#include
-#include
-
-/**
- * @class PrintingSelectorViewOptionsToolbarWidget
- * @brief A widget that provides a toolbar for view options with collapsible and expandable functionality.
- *
- * This widget allows the user to collapse or expand the view options for the PrintingSelector,
- * providing a more compact interface when collapsed and a full view of options when expanded.
- */
-PrintingSelectorViewOptionsToolbarWidget::PrintingSelectorViewOptionsToolbarWidget(QWidget *_parent,
- PrintingSelector *_printingSelector)
- : QWidget(_parent), printingSelector(_printingSelector)
-{
- // Set up layout for the widget
- layout = new QVBoxLayout();
- layout->setContentsMargins(9, 0, 9, 0);
- layout->setSpacing(0);
- setLayout(layout);
-
- // Set up the expanded widget with its layout
- expandedWidget = new QWidget(this);
- auto *expandedLayout = new QVBoxLayout(expandedWidget);
- expandedLayout->setContentsMargins(0, 0, 0, 0);
- expandedLayout->setSpacing(0);
-
- // Collapse button to toggle between expanded and collapsed states
- collapseButton = new QPushButton("▼", this);
- collapseButton->setFixedSize(20, 20);
- collapseButton->setToolTip("Collapse");
- collapseButton->setStyleSheet("border: none;");
- connect(collapseButton, &QPushButton::clicked, this, &PrintingSelectorViewOptionsToolbarWidget::collapse);
- expandedLayout->addWidget(collapseButton, 0, Qt::AlignLeft);
-
- // View options widget
- viewOptions = new PrintingSelectorViewOptionsWidget(expandedWidget, printingSelector);
- expandedLayout->addWidget(viewOptions);
-
- expandedWidget->setLayout(expandedLayout);
-
- // Set up the collapsed widget with its layout
- collapsedWidget = new QWidget(this);
- auto *collapsedLayout = new QHBoxLayout(collapsedWidget);
- collapsedLayout->setContentsMargins(5, 0, 5, 0);
- collapsedLayout->setSpacing(0);
-
- // Expand button to show full options
- expandButton = new QPushButton("▲", this);
- expandButton->setFixedSize(20, 20);
- expandButton->setToolTip("Expand");
- expandButton->setStyleSheet("border: none;");
- connect(expandButton, &QPushButton::clicked, this, &PrintingSelectorViewOptionsToolbarWidget::expand);
- collapsedLayout->addWidget(expandButton);
-
- // Label for collapsed state
- auto *collapsedLabel = new QLabel(tr("Display Options"), this);
- collapsedLayout->addWidget(collapsedLabel);
-
- collapsedWidget->setLayout(collapsedLayout);
-
- // Stack widget to switch between expanded and collapsed states
- stackedWidget = new QStackedWidget(this);
- stackedWidget->addWidget(expandedWidget);
- stackedWidget->addWidget(collapsedWidget);
-
- layout->addWidget(stackedWidget);
-
- setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Fixed);
-
- // Default to the expanded widget
- stackedWidget->setCurrentWidget(expandedWidget);
-
- // Connect the stacked widget to update the layout when it changes
- connect(stackedWidget, &QStackedWidget::currentChanged, this,
- &PrintingSelectorViewOptionsToolbarWidget::onWidgetChanged);
-}
-
-/**
- * @brief Toggles the widget to the collapsed state.
- */
-void PrintingSelectorViewOptionsToolbarWidget::collapse()
-{
- stackedWidget->setCurrentWidget(collapsedWidget);
- updateGeometry();
-}
-
-/**
- * @brief Toggles the widget to the expanded state.
- */
-void PrintingSelectorViewOptionsToolbarWidget::expand()
-{
- stackedWidget->setCurrentWidget(expandedWidget);
- updateGeometry();
-}
-
-/**
- * @brief Handles the geometry update when the stacked widget changes.
- *
- * This ensures that the parent layout is also updated when the widget's display state changes.
- */
-void PrintingSelectorViewOptionsToolbarWidget::onWidgetChanged(int)
-{
- updateGeometry();
- if (parentWidget() && parentWidget()->layout()) {
- parentWidget()->layout()->invalidate();
- }
-}
-
-/**
- * @brief Provides the recommended size for the widget based on the current view.
- *
- * @return QSize The suggested size for the widget.
- */
-QSize PrintingSelectorViewOptionsToolbarWidget::sizeHint() const
-{
- return stackedWidget->currentWidget()->sizeHint();
-}
-
-/**
- * @brief Provides the minimum size required for the widget based on the current view.
- *
- * @return QSize The minimum size required for the widget.
- */
-QSize PrintingSelectorViewOptionsToolbarWidget::minimumSizeHint() const
-{
- return stackedWidget->currentWidget()->minimumSizeHint();
-}
-
-/**
- * @brief Returns the view options widget contained within this toolbar.
- *
- * @return PrintingSelectorViewOptionsWidget* The view options widget.
- */
-PrintingSelectorViewOptionsWidget *PrintingSelectorViewOptionsToolbarWidget::getViewOptionsWidget() const
-{
- return viewOptions;
-}
diff --git a/cockatrice/src/client/ui/widgets/printing_selector/printing_selector_view_options_toolbar_widget.h b/cockatrice/src/client/ui/widgets/printing_selector/printing_selector_view_options_toolbar_widget.h
deleted file mode 100644
index 875f669f6..000000000
--- a/cockatrice/src/client/ui/widgets/printing_selector/printing_selector_view_options_toolbar_widget.h
+++ /dev/null
@@ -1,36 +0,0 @@
-#ifndef PRINTING_SELECTOR_SORT_AND_SEARCH_TOOLBAR_WIDGET_H
-#define PRINTING_SELECTOR_SORT_AND_SEARCH_TOOLBAR_WIDGET_H
-
-#include "printing_selector.h"
-#include "printing_selector_view_options_widget.h"
-
-#include
-#include
-#include
-#include
-
-class PrintingSelectorViewOptionsToolbarWidget : public QWidget
-{
- Q_OBJECT
-
-public:
- explicit PrintingSelectorViewOptionsToolbarWidget(QWidget *parent, PrintingSelector *printingSelector);
- void collapse();
- void expand();
- void onWidgetChanged(int);
- QSize sizeHint() const override;
- QSize minimumSizeHint() const override;
- PrintingSelectorViewOptionsWidget *getViewOptionsWidget() const;
-
-private:
- QVBoxLayout *layout;
- PrintingSelector *printingSelector;
- PrintingSelectorViewOptionsWidget *viewOptions;
- QWidget *expandedWidget;
- QPushButton *collapseButton;
- QWidget *collapsedWidget;
- QPushButton *expandButton;
- QStackedWidget *stackedWidget;
-};
-
-#endif // PRINTING_SELECTOR_SORT_AND_SEARCH_TOOLBAR_WIDGET_H
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
deleted file mode 100644
index fa173834f..000000000
--- a/cockatrice/src/client/ui/widgets/printing_selector/printing_selector_view_options_widget.cpp
+++ /dev/null
@@ -1,63 +0,0 @@
-#include "printing_selector_view_options_widget.h"
-
-#include "../../../../settings/cache_settings.h"
-
-/**
- * @class PrintingSelectorViewOptionsWidget
- * @brief A widget that provides the view options for the PrintingSelector, including checkboxes
- * for sorting, search bar, card size slider, and navigation buttons.
- *
- * This widget allows the user to toggle the visibility of various interface components of the
- * PrintingSelector through checkboxes. The state of the checkboxes is saved and restored using
- * the `SettingsCache`.
- */
-PrintingSelectorViewOptionsWidget::PrintingSelectorViewOptionsWidget(QWidget *parent,
- PrintingSelector *_printingSelector)
- : QWidget(parent), printingSelector(_printingSelector)
-{
- // Create the grid to hold the checkboxes
- gridLayout = new QGridLayout(this);
- setLayout(gridLayout);
-
- // Create the checkbox for sorting options visibility
- sortCheckBox = new QCheckBox(this);
- 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);
-
- // Create the checkbox for search bar visibility
- searchCheckBox = new QCheckBox(this);
- 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);
-
- // Create the checkbox for card size slider visibility
- cardSizeCheckBox = new QCheckBox(this);
- 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);
-
- // Create the checkbox for navigation buttons visibility
- navigationCheckBox = new QCheckBox(this);
- 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);
-
- // Add checkboxes to the grid
- gridLayout->addWidget(sortCheckBox, 0, 0);
- gridLayout->addWidget(searchCheckBox, 0, 1);
- gridLayout->addWidget(cardSizeCheckBox, 1, 0);
- gridLayout->addWidget(navigationCheckBox, 1, 1);
-}
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
deleted file mode 100644
index 3d0dec77e..000000000
--- a/cockatrice/src/client/ui/widgets/printing_selector/printing_selector_view_options_widget.h
+++ /dev/null
@@ -1,27 +0,0 @@
-#ifndef PRINTING_SELECTOR_VIEW_OPTIONS_WIDGET_H
-#define PRINTING_SELECTOR_VIEW_OPTIONS_WIDGET_H
-
-#include "../general/layout_containers/flow_widget.h"
-#include "printing_selector.h"
-
-#include
-#include
-#include
-
-class PrintingSelectorViewOptionsWidget : public QWidget
-{
- Q_OBJECT
-
-public:
- explicit PrintingSelectorViewOptionsWidget(QWidget *parent, PrintingSelector *_printingSelector);
-
-private:
- QGridLayout *gridLayout;
- PrintingSelector *printingSelector;
- QCheckBox *sortCheckBox;
- QCheckBox *searchCheckBox;
- QCheckBox *cardSizeCheckBox;
- QCheckBox *navigationCheckBox;
-};
-
-#endif // PRINTING_SELECTOR_VIEW_OPTIONS_WIDGET_H
diff --git a/cockatrice/src/client/ui/widgets/quick_settings/settings_button_widget.cpp b/cockatrice/src/client/ui/widgets/quick_settings/settings_button_widget.cpp
new file mode 100644
index 000000000..5d3307e52
--- /dev/null
+++ b/cockatrice/src/client/ui/widgets/quick_settings/settings_button_widget.cpp
@@ -0,0 +1,80 @@
+#include "settings_button_widget.h"
+
+#include
+#include
+#include
+#include
+
+SettingsButtonWidget::SettingsButtonWidget(QWidget *parent)
+ : QWidget(parent), button(new QToolButton(this)), popup(new SettingsPopupWidget(this))
+{
+
+ button->setIcon(QPixmap("theme:icons/cogwheel"));
+ button->setCheckable(true);
+ button->setFixedSize(32, 32);
+ connect(button, &QToolButton::clicked, this, &SettingsButtonWidget::togglePopup);
+ connect(popup, &SettingsPopupWidget::aboutToClose, this, &SettingsButtonWidget::onPopupClosed);
+
+ layout = new QHBoxLayout(this);
+ layout->addWidget(button);
+ layout->setContentsMargins(0, 0, 0, 0);
+ setLayout(layout);
+}
+
+void SettingsButtonWidget::addSettingsWidget(QWidget *toAdd) const
+{
+ popup->addSettingsWidget(toAdd);
+}
+
+void SettingsButtonWidget::togglePopup()
+{
+ if (popup->isVisible()) {
+ popup->close();
+ } else {
+ // Ensure popup size is known before positioning
+ popup->adjustSize();
+ QSize popupSize = popup->size();
+
+ // Get button position
+ QPoint buttonGlobalPos = button->mapToGlobal(QPoint(0, button->height()));
+
+ // Get screen geometry
+ QScreen *screen = QApplication::screenAt(buttonGlobalPos);
+ QRect screenGeom = screen ? screen->availableGeometry() : QApplication::primaryScreen()->availableGeometry();
+
+ int x = buttonGlobalPos.x();
+ int y = buttonGlobalPos.y();
+
+ // Adjust X position if popup overflows the right side of the screen
+ if (x + popupSize.width() > screenGeom.right()) {
+ x = buttonGlobalPos.x() - popupSize.width() + button->width(); // Move left
+ }
+
+ // Adjust Y position if popup overflows the bottom of the screen
+ if (y + popupSize.height() > screenGeom.bottom()) {
+ y = buttonGlobalPos.y() - popupSize.height() - button->height(); // Move up
+ }
+
+ popup->move(x, y);
+ popup->show();
+ popup->setFocus();
+ button->setChecked(true); // Ensure button is checked when popup is visible
+ }
+}
+
+void SettingsButtonWidget::onPopupClosed() const
+{
+ button->setChecked(false); // Ensure button unchecks when popup closes
+}
+
+void SettingsButtonWidget::mousePressEvent(QMouseEvent *event)
+{
+#if (QT_VERSION >= QT_VERSION_CHECK(6, 0, 0))
+ if (popup->isVisible() && !popup->geometry().contains(event->globalPosition().toPoint())) {
+#else
+ if (popup->isVisible() && !popup->geometry().contains(event->globalPos())) {
+#endif
+ popup->close();
+ }
+ QWidget::mousePressEvent(event);
+}
diff --git a/cockatrice/src/client/ui/widgets/quick_settings/settings_button_widget.h b/cockatrice/src/client/ui/widgets/quick_settings/settings_button_widget.h
new file mode 100644
index 000000000..7e07f573c
--- /dev/null
+++ b/cockatrice/src/client/ui/widgets/quick_settings/settings_button_widget.h
@@ -0,0 +1,30 @@
+#ifndef SETTINGS_BUTTON_WIDGET_H
+#define SETTINGS_BUTTON_WIDGET_H
+
+#include "settings_popup_widget.h"
+
+#include
+#include
+
+class SettingsButtonWidget : public QWidget
+{
+ Q_OBJECT
+
+public:
+ explicit SettingsButtonWidget(QWidget *parent = nullptr);
+ void addSettingsWidget(QWidget *toAdd) const;
+
+protected:
+ void mousePressEvent(QMouseEvent *event) override;
+
+private slots:
+ void togglePopup();
+ void onPopupClosed() const;
+
+private:
+ QHBoxLayout *layout;
+ QToolButton *button;
+ SettingsPopupWidget *popup;
+};
+
+#endif // SETTINGS_BUTTON_WIDGET_H
diff --git a/cockatrice/src/client/ui/widgets/quick_settings/settings_popup_widget.cpp b/cockatrice/src/client/ui/widgets/quick_settings/settings_popup_widget.cpp
new file mode 100644
index 000000000..10b2c327c
--- /dev/null
+++ b/cockatrice/src/client/ui/widgets/quick_settings/settings_popup_widget.cpp
@@ -0,0 +1,37 @@
+#include "settings_popup_widget.h"
+
+#include
+#include
+#include
+
+SettingsPopupWidget::SettingsPopupWidget(QWidget *parent) : QWidget(parent, Qt::Popup | Qt::FramelessWindowHint)
+{
+ layout = new QVBoxLayout(this);
+}
+
+void SettingsPopupWidget::addSettingsWidget(QWidget *toAdd) const
+{
+ layout->addWidget(toAdd);
+}
+
+void SettingsPopupWidget::focusOutEvent(QFocusEvent *event)
+{
+ if (!this->isAncestorOf(QApplication::focusWidget())) {
+ close();
+ }
+ QWidget::focusOutEvent(event);
+}
+
+void SettingsPopupWidget::closeEvent(QCloseEvent *event)
+{
+ emit aboutToClose();
+ QWidget::closeEvent(event);
+}
+
+void SettingsPopupWidget::paintEvent(QPaintEvent *event)
+{
+ QPainter painter(this);
+ painter.setPen(Qt::gray);
+ painter.drawRect(rect().adjusted(0, 0, -1, -1));
+ QWidget::paintEvent(event);
+}
\ No newline at end of file
diff --git a/cockatrice/src/client/ui/widgets/quick_settings/settings_popup_widget.h b/cockatrice/src/client/ui/widgets/quick_settings/settings_popup_widget.h
new file mode 100644
index 000000000..291063662
--- /dev/null
+++ b/cockatrice/src/client/ui/widgets/quick_settings/settings_popup_widget.h
@@ -0,0 +1,27 @@
+#ifndef SETTINGS_POPUP_WIDGET_H
+#define SETTINGS_POPUP_WIDGET_H
+
+#include
+#include
+#include
+
+class SettingsPopupWidget : public QWidget
+{
+ Q_OBJECT
+
+public:
+ explicit SettingsPopupWidget(QWidget *parent = nullptr);
+ void addSettingsWidget(QWidget *toAdd) const;
+
+signals:
+ void aboutToClose();
+
+protected:
+ void focusOutEvent(QFocusEvent *event) override;
+ void closeEvent(QCloseEvent *event) override;
+ void paintEvent(QPaintEvent *event) override;
+
+ QVBoxLayout *layout;
+};
+
+#endif // SETTINGSPOPUP_H
diff --git a/cockatrice/src/client/ui/widgets/visual_deck_storage/deck_preview/deck_preview_color_identity_widget.cpp b/cockatrice/src/client/ui/widgets/visual_deck_storage/deck_preview/deck_preview_color_identity_widget.cpp
index c28f1bb4a..684cef329 100644
--- a/cockatrice/src/client/ui/widgets/visual_deck_storage/deck_preview/deck_preview_color_identity_widget.cpp
+++ b/cockatrice/src/client/ui/widgets/visual_deck_storage/deck_preview/deck_preview_color_identity_widget.cpp
@@ -119,9 +119,10 @@ QChar DeckPreviewColorCircleWidget::getColorChar() const
DeckPreviewColorIdentityWidget::DeckPreviewColorIdentityWidget(QWidget *parent, const QString &colorIdentity)
: QWidget(parent)
{
- QHBoxLayout *layout = new QHBoxLayout(this);
+ layout = new QHBoxLayout(this);
layout->setSpacing(5);
layout->setContentsMargins(0, 0, 0, 0);
+ layout->setAlignment(Qt::AlignHCenter);
setLayout(layout);
setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum);
@@ -143,6 +144,25 @@ DeckPreviewColorIdentityWidget::DeckPreviewColorIdentityWidget(QWidget *parent,
}
}
}
+
+ connect(&SettingsCache::instance(), &SettingsCache::visualDeckStorageDrawUnusedColorIdentitiesChanged, this,
+ &DeckPreviewColorIdentityWidget::toggleUnusedVisibility);
+ toggleUnusedVisibility(SettingsCache::instance().getVisualDeckStorageDrawUnusedColorIdentities());
+}
+
+void DeckPreviewColorIdentityWidget::toggleUnusedVisibility(bool _visible) const
+{
+ if (_visible) {
+ for (DeckPreviewColorCircleWidget *circle : findChildren()) {
+ circle->setVisible(true);
+ }
+ } else {
+ for (DeckPreviewColorCircleWidget *circle : findChildren()) {
+ if (!circle->getIsActive()) {
+ circle->setHidden(true);
+ }
+ }
+ }
}
void DeckPreviewColorIdentityWidget::resizeEvent(QResizeEvent *event)
diff --git a/cockatrice/src/client/ui/widgets/visual_deck_storage/deck_preview/deck_preview_color_identity_widget.h b/cockatrice/src/client/ui/widgets/visual_deck_storage/deck_preview/deck_preview_color_identity_widget.h
index 3044793e6..bbbe2cd4e 100644
--- a/cockatrice/src/client/ui/widgets/visual_deck_storage/deck_preview/deck_preview_color_identity_widget.h
+++ b/cockatrice/src/client/ui/widgets/visual_deck_storage/deck_preview/deck_preview_color_identity_widget.h
@@ -15,6 +15,10 @@ public:
void setColorActive(bool active);
QChar getColorChar() const;
+ bool getIsActive() const
+ {
+ return isActive;
+ }
protected:
void resizeEvent(QResizeEvent *event) override;
@@ -35,8 +39,14 @@ class DeckPreviewColorIdentityWidget : public QWidget
public:
explicit DeckPreviewColorIdentityWidget(QWidget *parent, const QString &colorIdentity);
+public slots:
+ void toggleUnusedVisibility(bool _visible) const;
+
protected:
void resizeEvent(QResizeEvent *event) override;
+
+private:
+ QHBoxLayout *layout;
};
#endif // DECK_PREVIEW_COLOR_IDENTITY_WIDGET_H
diff --git a/cockatrice/src/client/ui/widgets/visual_deck_storage/deck_preview/deck_preview_widget.cpp b/cockatrice/src/client/ui/widgets/visual_deck_storage/deck_preview/deck_preview_widget.cpp
index ecd4f4a79..97af6d0ca 100644
--- a/cockatrice/src/client/ui/widgets/visual_deck_storage/deck_preview/deck_preview_widget.cpp
+++ b/cockatrice/src/client/ui/widgets/visual_deck_storage/deck_preview/deck_preview_widget.cpp
@@ -1,6 +1,7 @@
#include "deck_preview_widget.h"
#include "../../../../../game/cards/card_database_manager.h"
+#include "../../../../../settings/cache_settings.h"
#include "../../cards/deck_preview_card_picture_widget.h"
#include "deck_preview_deck_tags_display_widget.h"
@@ -30,6 +31,9 @@ DeckPreviewWidget::DeckPreviewWidget(QWidget *_parent,
connect(bannerCardDisplayWidget, &DeckPreviewCardPictureWidget::imageDoubleClicked, this,
&DeckPreviewWidget::imageDoubleClickedEvent);
+ connect(&SettingsCache::instance(), &SettingsCache::visualDeckStorageShowTagsOnDeckPreviewsChanged, this,
+ &DeckPreviewWidget::updateTagsVisibility);
+
layout->addWidget(bannerCardDisplayWidget);
}
@@ -51,6 +55,7 @@ void DeckPreviewWidget::initializeUi(const bool deckLoadSuccess)
colorIdentityWidget = new DeckPreviewColorIdentityWidget(this, getColorIdentity());
deckTagsDisplayWidget = new DeckPreviewDeckTagsDisplayWidget(this, deckLoader);
+ updateTagsVisibility(SettingsCache::instance().getVisualDeckStorageShowTagsOnDeckPreviews());
layout->addWidget(colorIdentityWidget);
layout->addWidget(deckTagsDisplayWidget);
@@ -72,6 +77,15 @@ bool DeckPreviewWidget::checkVisibility() const
return true;
}
+void DeckPreviewWidget::updateTagsVisibility(bool visible)
+{
+ if (visible) {
+ deckTagsDisplayWidget->setVisible(true);
+ } else {
+ deckTagsDisplayWidget->setHidden(true);
+ }
+}
+
QString DeckPreviewWidget::getColorIdentity()
{
QStringList cardList = deckLoader->getCardList();
diff --git a/cockatrice/src/client/ui/widgets/visual_deck_storage/deck_preview/deck_preview_widget.h b/cockatrice/src/client/ui/widgets/visual_deck_storage/deck_preview/deck_preview_widget.h
index 8be7d07ac..af5dd04b7 100644
--- a/cockatrice/src/client/ui/widgets/visual_deck_storage/deck_preview/deck_preview_widget.h
+++ b/cockatrice/src/client/ui/widgets/visual_deck_storage/deck_preview/deck_preview_widget.h
@@ -45,6 +45,7 @@ public slots:
void imageDoubleClickedEvent(QMouseEvent *event, DeckPreviewCardPictureWidget *instance);
void initializeUi(bool deckLoadSuccess);
void updateVisibility();
+ void updateTagsVisibility(bool visible);
};
#endif // DECK_PREVIEW_WIDGET_H
diff --git a/cockatrice/src/client/ui/widgets/visual_deck_storage/visual_deck_storage_folder_display_widget.cpp b/cockatrice/src/client/ui/widgets/visual_deck_storage/visual_deck_storage_folder_display_widget.cpp
index 1c8e0d37c..84981e071 100644
--- a/cockatrice/src/client/ui/widgets/visual_deck_storage/visual_deck_storage_folder_display_widget.cpp
+++ b/cockatrice/src/client/ui/widgets/visual_deck_storage/visual_deck_storage_folder_display_widget.cpp
@@ -172,7 +172,7 @@ void VisualDeckStorageFolderDisplayWidget::updateShowFolders(bool enabled)
if (!showFolders) {
flattenFolderStructure();
} else {
- // if setting was switched from disabled to enabled, we assume that there isn't any existing subfolders
+ // if setting was switched from disabled to enabled, we assume that there aren't any existing subfolders
createWidgetsForFiles();
createWidgetsForFolders();
}
diff --git a/cockatrice/src/client/ui/widgets/visual_deck_storage/visual_deck_storage_widget.cpp b/cockatrice/src/client/ui/widgets/visual_deck_storage/visual_deck_storage_widget.cpp
index af8a246f7..8e43f703e 100644
--- a/cockatrice/src/client/ui/widgets/visual_deck_storage/visual_deck_storage_widget.cpp
+++ b/cockatrice/src/client/ui/widgets/visual_deck_storage/visual_deck_storage_widget.cpp
@@ -2,6 +2,7 @@
#include "../../../../game/cards/card_database_manager.h"
#include "../../../../settings/cache_settings.h"
+#include "../quick_settings/settings_button_widget.h"
#include "deck_preview/deck_preview_widget.h"
#include "visual_deck_storage_folder_display_widget.h"
#include "visual_deck_storage_search_widget.h"
@@ -24,37 +25,59 @@ VisualDeckStorageWidget::VisualDeckStorageWidget(QWidget *parent) : QWidget(pare
setLayout(layout);
// search bar row
- searchAndSortLayout = new QHBoxLayout(this);
+ searchAndSortContainer = new QWidget(this);
+ searchAndSortLayout = new QHBoxLayout(searchAndSortContainer);
searchAndSortLayout->setSpacing(3);
searchAndSortLayout->setContentsMargins(9, 0, 9, 0);
+ searchAndSortContainer->setLayout(searchAndSortLayout);
deckPreviewColorIdentityFilterWidget = new DeckPreviewColorIdentityFilterWidget(this);
sortWidget = new VisualDeckStorageSortWidget(this);
searchWidget = new VisualDeckStorageSearchWidget(this);
- searchAndSortLayout->addWidget(deckPreviewColorIdentityFilterWidget);
- searchAndSortLayout->addWidget(sortWidget);
- searchAndSortLayout->addWidget(searchWidget);
-
- // checkbox row
- QHBoxLayout *checkBoxLayout = new QHBoxLayout(this);
- checkBoxLayout->setContentsMargins(9, 0, 9, 0);
-
showFoldersCheckBox = new QCheckBox(this);
showFoldersCheckBox->setChecked(SettingsCache::instance().getVisualDeckStorageShowFolders());
connect(showFoldersCheckBox, &QCheckBox::QT_STATE_CHANGED, this, &VisualDeckStorageWidget::updateShowFolders);
connect(showFoldersCheckBox, &QCheckBox::QT_STATE_CHANGED, &SettingsCache::instance(),
&SettingsCache::setVisualDeckStorageShowFolders);
- checkBoxLayout->addWidget(showFoldersCheckBox);
- checkBoxLayout->addStretch();
+ tagFilterVisibilityCheckBox = new QCheckBox(this);
+ tagFilterVisibilityCheckBox->setChecked(SettingsCache::instance().getVisualDeckStorageShowTagFilter());
+ connect(tagFilterVisibilityCheckBox, &QCheckBox::QT_STATE_CHANGED, this,
+ &VisualDeckStorageWidget::updateTagsVisibility);
+ connect(tagFilterVisibilityCheckBox, &QCheckBox::QT_STATE_CHANGED, &SettingsCache::instance(),
+ &SettingsCache::setVisualDeckStorageShowTagFilter);
- // tag filter box
- tagFilterWidget = new VisualDeckStorageTagFilterWidget(this);
+ tagsOnWidgetsVisibilityCheckBox = new QCheckBox(this);
+ tagsOnWidgetsVisibilityCheckBox->setChecked(SettingsCache::instance().getVisualDeckStorageShowTagsOnDeckPreviews());
+ connect(tagsOnWidgetsVisibilityCheckBox, &QCheckBox::QT_STATE_CHANGED, &SettingsCache::instance(),
+ &SettingsCache::setVisualDeckStorageShowTagsOnDeckPreviews);
+
+ drawUnusedColorIdentitiesCheckBox = new QCheckBox(this);
+ drawUnusedColorIdentitiesCheckBox->setChecked(
+ SettingsCache::instance().getVisualDeckStorageDrawUnusedColorIdentities());
+ connect(drawUnusedColorIdentitiesCheckBox, &QCheckBox::QT_STATE_CHANGED, &SettingsCache::instance(),
+ &SettingsCache::setVisualDeckStorageDrawUnusedColorIdentities);
// card size slider
cardSizeWidget = new CardSizeWidget(this, nullptr, SettingsCache::instance().getVisualDeckStorageCardSize());
+ quickSettingsWidget = new SettingsButtonWidget(this);
+ quickSettingsWidget->addSettingsWidget(showFoldersCheckBox);
+ quickSettingsWidget->addSettingsWidget(tagFilterVisibilityCheckBox);
+ quickSettingsWidget->addSettingsWidget(tagsOnWidgetsVisibilityCheckBox);
+ quickSettingsWidget->addSettingsWidget(drawUnusedColorIdentitiesCheckBox);
+ quickSettingsWidget->addSettingsWidget(cardSizeWidget);
+
+ searchAndSortLayout->addWidget(deckPreviewColorIdentityFilterWidget);
+ searchAndSortLayout->addWidget(sortWidget);
+ searchAndSortLayout->addWidget(searchWidget);
+ searchAndSortLayout->addWidget(quickSettingsWidget);
+
+ // tag filter box
+ tagFilterWidget = new VisualDeckStorageTagFilterWidget(this);
+ updateTagsVisibility(SettingsCache::instance().getVisualDeckStorageShowTagFilter());
+
// deck area
scrollArea = new QScrollArea(this);
scrollArea->setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded);
@@ -62,11 +85,9 @@ VisualDeckStorageWidget::VisualDeckStorageWidget(QWidget *parent) : QWidget(pare
scrollArea->setWidgetResizable(true);
// putting everything together
- layout->addLayout(searchAndSortLayout);
- layout->addLayout(checkBoxLayout);
+ layout->addWidget(searchAndSortContainer);
layout->addWidget(tagFilterWidget);
layout->addWidget(scrollArea);
- layout->addWidget(cardSizeWidget);
connect(CardDatabaseManager::getInstance(), &CardDatabase::cardDatabaseLoadingFinished, this,
&VisualDeckStorageWidget::createRootFolderWidget);
@@ -108,6 +129,9 @@ void VisualDeckStorageWidget::retranslateUi()
databaseLoadIndicator->setText(tr("Loading database ..."));
showFoldersCheckBox->setText(tr("Show Folders"));
+ tagFilterVisibilityCheckBox->setText(tr("Show Tag Filter"));
+ tagsOnWidgetsVisibilityCheckBox->setText(tr("Show Tags On Deck Previews"));
+ drawUnusedColorIdentitiesCheckBox->setText(tr("Draw not contained Color Identities"));
}
void VisualDeckStorageWidget::deckPreviewClickedEvent(QMouseEvent *event, DeckPreviewWidget *instance)
@@ -174,3 +198,13 @@ void VisualDeckStorageWidget::updateSearchFilter()
}
emit searchFilterUpdated();
}
+
+void VisualDeckStorageWidget::updateTagsVisibility(const bool visible)
+{
+ if (visible) {
+ tagFilterWidget->setVisible(true);
+
+ } else {
+ tagFilterWidget->setHidden(true);
+ }
+}
diff --git a/cockatrice/src/client/ui/widgets/visual_deck_storage/visual_deck_storage_widget.h b/cockatrice/src/client/ui/widgets/visual_deck_storage/visual_deck_storage_widget.h
index 01b4f53fa..b6ced6375 100644
--- a/cockatrice/src/client/ui/widgets/visual_deck_storage/visual_deck_storage_widget.h
+++ b/cockatrice/src/client/ui/widgets/visual_deck_storage/visual_deck_storage_widget.h
@@ -4,6 +4,7 @@
#include "../../../../deck/deck_list_model.h"
#include "../../../ui/widgets/general/layout_containers/flow_widget.h"
#include "../cards/card_size_widget.h"
+#include "../quick_settings/settings_button_widget.h"
#include "deck_preview/deck_preview_color_identity_filter_widget.h"
#include "deck_preview/deck_preview_widget.h"
#include "visual_deck_storage_folder_display_widget.h"
@@ -24,8 +25,8 @@ class VisualDeckStorageWidget final : public QWidget
Q_OBJECT
public:
explicit VisualDeckStorageWidget(QWidget *parent);
-
void retranslateUi();
+
CardSizeWidget *cardSizeWidget;
VisualDeckStorageTagFilterWidget *tagFilterWidget;
@@ -37,6 +38,7 @@ public slots:
void updateTagFilter();
void updateColorFilter();
void updateSearchFilter();
+ void updateTagsVisibility(bool visible);
void updateSortOrder();
void resizeEvent(QResizeEvent *event) override;
void showEvent(QShowEvent *event) override;
@@ -52,15 +54,18 @@ signals:
private:
QVBoxLayout *layout;
+ QWidget *searchAndSortContainer;
QHBoxLayout *searchAndSortLayout;
DeckListModel *deckListModel;
QLabel *databaseLoadIndicator;
VisualDeckStorageSortWidget *sortWidget;
VisualDeckStorageSearchWidget *searchWidget;
DeckPreviewColorIdentityFilterWidget *deckPreviewColorIdentityFilterWidget;
-
+ SettingsButtonWidget *quickSettingsWidget;
QCheckBox *showFoldersCheckBox;
-
+ QCheckBox *drawUnusedColorIdentitiesCheckBox;
+ QCheckBox *tagFilterVisibilityCheckBox;
+ QCheckBox *tagsOnWidgetsVisibilityCheckBox;
QScrollArea *scrollArea;
VisualDeckStorageFolderDisplayWidget *folderWidget;
};
diff --git a/cockatrice/src/settings/cache_settings.cpp b/cockatrice/src/settings/cache_settings.cpp
index bbe228c52..c8f2aa737 100644
--- a/cockatrice/src/settings/cache_settings.cpp
+++ b/cockatrice/src/settings/cache_settings.cpp
@@ -258,15 +258,14 @@ 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();
- visualDeckStorageCardSize = settings->value("cards/visualdeckstoragecardsize", 100).toInt();
+ visualDeckStorageCardSize = settings->value("interface/visualdeckstoragecardsize", 100).toInt();
visualDeckStorageSortingOrder = settings->value("interface/visualdeckstoragesortingorder", 0).toInt();
visualDeckStorageShowFolders = settings->value("interface/visualdeckstorageshowfolders", true).toBool();
+ visualDeckStorageShowTagFilter = settings->value("interface/visualdeckstorageshowtagfilter", true).toBool();
+ visualDeckStorageShowTagsOnDeckPreviews =
+ settings->value("interface/visualdeckstorageshowtagsondeckpreviews", true).toBool();
visualDeckStorageDrawUnusedColorIdentities =
settings->value("interface/visualdeckstoragedrawunusedcoloridentities", true).toBool();
visualDeckStorageUnusedColorIdentitiesOpacity =
@@ -645,27 +644,6 @@ 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;
@@ -685,10 +663,24 @@ void SettingsCache::setVisualDeckStorageShowFolders(QT_STATE_CHANGED_T value)
settings->setValue("interface/visualdeckstorageshowfolders", visualDeckStorageShowFolders);
}
+void SettingsCache::setVisualDeckStorageShowTagFilter(QT_STATE_CHANGED_T _showTags)
+{
+ visualDeckStorageShowTagFilter = _showTags;
+ settings->setValue("interface/visualdeckstorageshowtagfilter", visualDeckStorageShowTagFilter);
+ emit visualDeckStorageShowTagFilterChanged(visualDeckStorageShowTagFilter);
+}
+
+void SettingsCache::setVisualDeckStorageShowTagsOnDeckPreviews(QT_STATE_CHANGED_T _showTags)
+{
+ visualDeckStorageShowTagsOnDeckPreviews = _showTags;
+ settings->setValue("interface/visualdeckstorageshowtagsondeckpreviews", visualDeckStorageShowTagsOnDeckPreviews);
+ emit visualDeckStorageShowTagsOnDeckPreviewsChanged(visualDeckStorageShowTagsOnDeckPreviews);
+}
+
void SettingsCache::setVisualDeckStorageCardSize(int _visualDeckStorageCardSize)
{
visualDeckStorageCardSize = _visualDeckStorageCardSize;
- settings->setValue("cards/visualdeckstoragecardsize", visualDeckStorageCardSize);
+ settings->setValue("interface/visualdeckstoragecardsize", visualDeckStorageCardSize);
emit visualDeckStorageCardSizeChanged();
}
@@ -696,13 +688,15 @@ void SettingsCache::setVisualDeckStorageDrawUnusedColorIdentities(
QT_STATE_CHANGED_T _visualDeckStorageDrawUnusedColorIdentities)
{
visualDeckStorageDrawUnusedColorIdentities = _visualDeckStorageDrawUnusedColorIdentities;
- settings->setValue("cards/visualdeckstoragedrawunusedcoloridentities", visualDeckStorageDrawUnusedColorIdentities);
+ settings->setValue("interface/visualdeckstoragedrawunusedcoloridentities",
+ visualDeckStorageDrawUnusedColorIdentities);
+ emit visualDeckStorageDrawUnusedColorIdentitiesChanged(visualDeckStorageDrawUnusedColorIdentities);
}
void SettingsCache::setVisualDeckStorageUnusedColorIdentitiesOpacity(int _visualDeckStorageUnusedColorIdentitiesOpacity)
{
visualDeckStorageUnusedColorIdentitiesOpacity = _visualDeckStorageUnusedColorIdentitiesOpacity;
- settings->setValue("cards/visualdeckstorageunusedcoloridentitiesopacity",
+ settings->setValue("interface/visualdeckstorageunusedcoloridentitiesopacity",
visualDeckStorageUnusedColorIdentitiesOpacity);
}
diff --git a/cockatrice/src/settings/cache_settings.h b/cockatrice/src/settings/cache_settings.h
index b2800e9f5..ff89bb9e9 100644
--- a/cockatrice/src/settings/cache_settings.h
+++ b/cockatrice/src/settings/cache_settings.h
@@ -58,11 +58,11 @@ signals:
void bumpSetsWithCardsInDeckToTopChanged();
void printingSelectorSortOrderChanged();
void printingSelectorCardSizeChanged();
- void printingSelectorSortOptionsVisibleChanged();
- void printingSelectorSearchBarVisibleChanged();
- void printingSelectorCardSizeSliderVisibleChanged();
void printingSelectorNavigationButtonsVisibleChanged();
+ void visualDeckStorageShowTagFilterChanged(bool _visible);
+ void visualDeckStorageShowTagsOnDeckPreviewsChanged(bool _visible);
void visualDeckStorageCardSizeChanged();
+ void visualDeckStorageDrawUnusedColorIdentitiesChanged(bool _visible);
void visualDeckStorageInGameChanged(bool enabled);
void horizontalHandChanged();
void handJustificationChanged();
@@ -126,12 +126,11 @@ private:
bool bumpSetsWithCardsInDeckToTop;
int printingSelectorSortOrder;
int printingSelectorCardSize;
- bool printingSelectorSortOptionsVisible;
- bool printingSelectorSearchBarVisible;
- bool printingSelectorCardSizeSliderVisible;
bool printingSelectorNavigationButtonsVisible;
int visualDeckStorageSortingOrder;
bool visualDeckStorageShowFolders;
+ bool visualDeckStorageShowTagsOnDeckPreviews;
+ bool visualDeckStorageShowTagFilter;
int visualDeckStorageCardSize;
bool visualDeckStorageDrawUnusedColorIdentities;
int visualDeckStorageUnusedColorIdentitiesOpacity;
@@ -397,18 +396,6 @@ public:
{
return printingSelectorCardSize;
}
- bool getPrintingSelectorSortOptionsVisible() const
- {
- return printingSelectorSortOptionsVisible;
- }
- bool getPrintingSelectorSearchBarVisible() const
- {
- return printingSelectorSearchBarVisible;
- }
- bool getPrintingSelectorCardSizeSliderVisible() const
- {
- return printingSelectorCardSizeSliderVisible;
- }
bool getPrintingSelectorNavigationButtonsVisible() const
{
return printingSelectorNavigationButtonsVisible;
@@ -421,6 +408,14 @@ public:
{
return visualDeckStorageShowFolders;
}
+ bool getVisualDeckStorageShowTagFilter() const
+ {
+ return visualDeckStorageShowTagFilter;
+ }
+ bool getVisualDeckStorageShowTagsOnDeckPreviews() const
+ {
+ return visualDeckStorageShowTagsOnDeckPreviews;
+ }
int getVisualDeckStorageCardSize() const
{
return visualDeckStorageCardSize;
@@ -761,12 +756,11 @@ 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 setVisualDeckStorageSortingOrder(int _visualDeckStorageSortingOrder);
void setVisualDeckStorageShowFolders(QT_STATE_CHANGED_T value);
+ void setVisualDeckStorageShowTagFilter(QT_STATE_CHANGED_T _showTags);
+ void setVisualDeckStorageShowTagsOnDeckPreviews(QT_STATE_CHANGED_T _showTags);
void setVisualDeckStorageCardSize(int _visualDeckStorageCardSize);
void setVisualDeckStorageDrawUnusedColorIdentities(QT_STATE_CHANGED_T _visualDeckStorageDrawUnusedColorIdentities);
void setVisualDeckStorageUnusedColorIdentitiesOpacity(int _visualDeckStorageUnusedColorIdentitiesOpacity);
diff --git a/dbconverter/src/mocks.cpp b/dbconverter/src/mocks.cpp
index 7ed679f03..21769a5d4 100644
--- a/dbconverter/src/mocks.cpp
+++ b/dbconverter/src/mocks.cpp
@@ -196,15 +196,6 @@ 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 */)
{
}
@@ -214,6 +205,12 @@ void SettingsCache::setVisualDeckStorageSortingOrder(int /* _visualDeckStorageSo
void SettingsCache::setVisualDeckStorageShowFolders(QT_STATE_CHANGED_T /* value */)
{
}
+void SettingsCache::setVisualDeckStorageShowTagFilter(QT_STATE_CHANGED_T /* _showTags */)
+{
+}
+void SettingsCache::setVisualDeckStorageShowTagsOnDeckPreviews(QT_STATE_CHANGED_T /* _showTags */)
+{
+}
void SettingsCache::setVisualDeckStorageCardSize(int /* _visualDeckStorageCardSize */)
{
}
diff --git a/tests/carddatabase/mocks.cpp b/tests/carddatabase/mocks.cpp
index 66f451683..db813a8f1 100644
--- a/tests/carddatabase/mocks.cpp
+++ b/tests/carddatabase/mocks.cpp
@@ -200,15 +200,6 @@ 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 */)
{
}
@@ -218,6 +209,12 @@ void SettingsCache::setVisualDeckStorageSortingOrder(int /* _visualDeckStorageSo
void SettingsCache::setVisualDeckStorageShowFolders(QT_STATE_CHANGED_T /* value */)
{
}
+void SettingsCache::setVisualDeckStorageShowTagFilter(QT_STATE_CHANGED_T /* _showTags */)
+{
+}
+void SettingsCache::setVisualDeckStorageShowTagsOnDeckPreviews(QT_STATE_CHANGED_T /* _showTags */)
+{
+}
void SettingsCache::setVisualDeckStorageCardSize(int /* _visualDeckStorageCardSize */)
{
}