Include settings for unused color identities display.

This commit is contained in:
Lukas Brübach 2025-01-12 00:45:49 +01:00
parent bbfa971dfd
commit 94f6fa5ec4
7 changed files with 109 additions and 28 deletions

View file

@ -1,7 +1,10 @@
#include "deck_preview_color_identity_widget.h" #include "deck_preview_color_identity_widget.h"
#include "../../../../settings/cache_settings.h"
#include <QPainter> #include <QPainter>
#include <QResizeEvent> #include <QResizeEvent>
#include <QSet>
DeckPreviewColorCircleWidget::DeckPreviewColorCircleWidget(QChar color, QWidget *parent) DeckPreviewColorCircleWidget::DeckPreviewColorCircleWidget(QChar color, QWidget *parent)
: QWidget(parent), colorChar(color), circleDiameter(0), isActive(false) : QWidget(parent), colorChar(color), circleDiameter(0), isActive(false)
@ -52,7 +55,6 @@ void DeckPreviewColorCircleWidget::paintEvent(QPaintEvent *event)
// Map color characters to their respective colors // Map color characters to their respective colors
QColor circleColor; QColor circleColor;
if (isActive) {
switch (colorChar.unicode()) { switch (colorChar.unicode()) {
case 'W': case 'W':
circleColor = Qt::white; circleColor = Qt::white;
@ -73,14 +75,18 @@ void DeckPreviewColorCircleWidget::paintEvent(QPaintEvent *event)
circleColor = Qt::transparent; circleColor = Qt::transparent;
break; // Fallback break; // Fallback
} }
} else {
circleColor = Qt::gray; // Grey out unused colors if (SettingsCache::instance().getVisualDeckStorageDrawUnusedColorIdentities() || isActive) {
// Make the circle faint if it is not active
if (!isActive) {
circleColor.setAlpha(SettingsCache::instance().getVisualDeckStorageUnusedColorIdentitiesOpacity());
} }
// Draw the circle // Draw the circle
painter.setBrush(circleColor); painter.setBrush(circleColor);
painter.setPen(Qt::black); painter.setPen(Qt::black);
painter.drawEllipse(circleRect); painter.drawEllipse(circleRect);
}
// Draw the color character only if the circle is active // Draw the color character only if the circle is active
if (isActive) { if (isActive) {
@ -88,13 +94,19 @@ void DeckPreviewColorCircleWidget::paintEvent(QPaintEvent *event)
font.setBold(true); font.setBold(true);
font.setPointSize(circleDiameter * 0.4); // Adjust font size relative to circle diameter font.setPointSize(circleDiameter * 0.4); // Adjust font size relative to circle diameter
painter.setFont(font); painter.setFont(font);
if (colorChar.unicode() == 'B') {
painter.setPen(Qt::white);
} else {
painter.setPen(Qt::black); painter.setPen(Qt::black);
}
// Center the text within the circle // Center the text within the circle
painter.drawText(circleRect, Qt::AlignCenter, colorChar); painter.drawText(circleRect, Qt::AlignCenter, colorChar);
} }
} }
void DeckPreviewColorCircleWidget::setColorActive(bool active) void DeckPreviewColorCircleWidget::setColorActive(bool active)
{ {
isActive = active; isActive = active;

View file

@ -350,9 +350,26 @@ AppearanceSettingsPage::AppearanceSettingsPage()
connect(&showVisualDeckStorageOnLoadCheckBox, &QCheckBox::QT_STATE_CHANGED, &settings, connect(&showVisualDeckStorageOnLoadCheckBox, &QCheckBox::QT_STATE_CHANGED, &settings,
&SettingsCache::setVisualDeckStorageShowOnLoad); &SettingsCache::setVisualDeckStorageShowOnLoad);
visualDeckStorageDrawUnusedColorIdentitiesCheckBox.setChecked(
settings.getVisualDeckStorageDrawUnusedColorIdentities());
connect(&visualDeckStorageDrawUnusedColorIdentitiesCheckBox, &QCheckBox::QT_STATE_CHANGED, &settings,
&SettingsCache::setVisualDeckStorageDrawUnusedColorIdentities);
visualDeckStorageUnusedColorIdentitiesOpacitySpinBox.setMinimum(0);
visualDeckStorageUnusedColorIdentitiesOpacitySpinBox.setMaximum(255);
visualDeckStorageUnusedColorIdentitiesOpacitySpinBox.setValue(
settings.getVisualDeckStorageUnusedColorIdentitiesOpacity());
connect(&visualDeckStorageUnusedColorIdentitiesOpacitySpinBox, &QSpinBox::valueChanged, &settings,
&SettingsCache::setVisualDeckStorageUnusedColorIdentitiesOpacity);
visualDeckStorageUnusedColorIdentitiesOpacityLabel.setBuddy(&visualDeckStorageUnusedColorIdentitiesOpacitySpinBox);
auto *menuGrid = new QGridLayout; auto *menuGrid = new QGridLayout;
menuGrid->addWidget(&showShortcutsCheckBox, 0, 0); menuGrid->addWidget(&showShortcutsCheckBox, 0, 0);
menuGrid->addWidget(&showVisualDeckStorageOnLoadCheckBox, 1, 0); menuGrid->addWidget(&showVisualDeckStorageOnLoadCheckBox, 1, 0);
menuGrid->addWidget(&visualDeckStorageDrawUnusedColorIdentitiesCheckBox, 2, 0);
menuGrid->addWidget(&visualDeckStorageUnusedColorIdentitiesOpacityLabel, 3, 0);
menuGrid->addWidget(&visualDeckStorageUnusedColorIdentitiesOpacitySpinBox, 3, 1);
menuGroupBox = new QGroupBox; menuGroupBox = new QGroupBox;
menuGroupBox->setLayout(menuGrid); menuGroupBox->setLayout(menuGrid);
@ -488,6 +505,9 @@ void AppearanceSettingsPage::retranslateUi()
menuGroupBox->setTitle(tr("Menu settings")); menuGroupBox->setTitle(tr("Menu settings"));
showShortcutsCheckBox.setText(tr("Show keyboard shortcuts in right-click menus")); showShortcutsCheckBox.setText(tr("Show keyboard shortcuts in right-click menus"));
showVisualDeckStorageOnLoadCheckBox.setText(tr("Show visual deck storage on database load")); showVisualDeckStorageOnLoadCheckBox.setText(tr("Show visual deck storage on database load"));
visualDeckStorageDrawUnusedColorIdentitiesCheckBox.setText(
tr("Draw missing color identities in visual deck storage without color label"));
visualDeckStorageUnusedColorIdentitiesOpacityLabel.setText((tr("Missing color identity opacity")));
cardsGroupBox->setTitle(tr("Card rendering")); cardsGroupBox->setTitle(tr("Card rendering"));
displayCardNamesCheckBox.setText(tr("Display card names on cards having a picture")); displayCardNamesCheckBox.setText(tr("Display card names on cards having a picture"));

View file

@ -96,6 +96,9 @@ private:
QLabel maxFontSizeForCardsLabel; QLabel maxFontSizeForCardsLabel;
QCheckBox showShortcutsCheckBox; QCheckBox showShortcutsCheckBox;
QCheckBox showVisualDeckStorageOnLoadCheckBox; QCheckBox showVisualDeckStorageOnLoadCheckBox;
QCheckBox visualDeckStorageDrawUnusedColorIdentitiesCheckBox;
QLabel visualDeckStorageUnusedColorIdentitiesOpacityLabel;
QSpinBox visualDeckStorageUnusedColorIdentitiesOpacitySpinBox;
QCheckBox displayCardNamesCheckBox; QCheckBox displayCardNamesCheckBox;
QCheckBox autoRotateSidewaysLayoutCardsCheckBox; QCheckBox autoRotateSidewaysLayoutCardsCheckBox;
QCheckBox overrideAllCardArtWithPersonalPreferenceCheckBox; QCheckBox overrideAllCardArtWithPersonalPreferenceCheckBox;

View file

@ -262,6 +262,10 @@ SettingsCache::SettingsCache()
visualDeckStorageCardSize = settings->value("cards/visualdeckstoragecardsize", 100).toInt(); visualDeckStorageCardSize = settings->value("cards/visualdeckstoragecardsize", 100).toInt();
visualDeckStorageShowOnLoad = settings->value("interface/visualdeckstorageshowonload", true).toBool(); visualDeckStorageShowOnLoad = settings->value("interface/visualdeckstorageshowonload", true).toBool();
visualDeckStorageSortingOrder = settings->value("interface/visualdeckstoragesortingorder", 0).toInt(); visualDeckStorageSortingOrder = settings->value("interface/visualdeckstoragesortingorder", 0).toInt();
visualDeckStorageDrawUnusedColorIdentities =
settings->value("interface/visualdeckstoragedrawunusedcoloridentities", true).toBool();
visualDeckStorageUnusedColorIdentitiesOpacity =
settings->value("interface/visualdeckstorageunusedcoloridentitiesopacity", 80).toInt();
horizontalHand = settings->value("hand/horizontal", true).toBool(); horizontalHand = settings->value("hand/horizontal", true).toBool();
invertVerticalCoordinate = settings->value("table/invert_vertical", false).toBool(); invertVerticalCoordinate = settings->value("table/invert_vertical", false).toBool();
minPlayersForMultiColumnLayout = settings->value("interface/min_players_multicolumn", 4).toInt(); minPlayersForMultiColumnLayout = settings->value("interface/min_players_multicolumn", 4).toInt();
@ -631,6 +635,20 @@ void SettingsCache::setVisualDeckStorageShowOnLoad(QT_STATE_CHANGED_T _visualDec
settings->setValue("interface/visualdeckstorageshowonload", visualDeckStorageShowOnLoad); settings->setValue("interface/visualdeckstorageshowonload", visualDeckStorageShowOnLoad);
} }
void SettingsCache::setVisualDeckStorageDrawUnusedColorIdentities(
QT_STATE_CHANGED_T _visualDeckStorageDrawUnusedColorIdentities)
{
visualDeckStorageDrawUnusedColorIdentities = _visualDeckStorageDrawUnusedColorIdentities;
settings->setValue("cards/visualdeckstoragedrawunusedcoloridentities", visualDeckStorageDrawUnusedColorIdentities);
}
void SettingsCache::setVisualDeckStorageUnusedColorIdentitiesOpacity(int _visualDeckStorageUnusedColorIdentitiesOpacity)
{
visualDeckStorageUnusedColorIdentitiesOpacity = _visualDeckStorageUnusedColorIdentitiesOpacity;
settings->setValue("cards/visualdeckstorageunusedcoloridentitiesopacity",
visualDeckStorageUnusedColorIdentitiesOpacity);
}
void SettingsCache::setHorizontalHand(QT_STATE_CHANGED_T _horizontalHand) void SettingsCache::setHorizontalHand(QT_STATE_CHANGED_T _horizontalHand)
{ {
horizontalHand = static_cast<bool>(_horizontalHand); horizontalHand = static_cast<bool>(_horizontalHand);

View file

@ -126,6 +126,8 @@ private:
bool printingSelectorNavigationButtonsVisible; bool printingSelectorNavigationButtonsVisible;
int visualDeckStorageSortingOrder; int visualDeckStorageSortingOrder;
int visualDeckStorageCardSize; int visualDeckStorageCardSize;
bool visualDeckStorageDrawUnusedColorIdentities;
int visualDeckStorageUnusedColorIdentitiesOpacity;
bool visualDeckStorageShowOnLoad; bool visualDeckStorageShowOnLoad;
bool horizontalHand; bool horizontalHand;
bool invertVerticalCoordinate; bool invertVerticalCoordinate;
@ -381,6 +383,14 @@ public:
{ {
return visualDeckStorageCardSize; return visualDeckStorageCardSize;
} }
bool getVisualDeckStorageDrawUnusedColorIdentities() const
{
return visualDeckStorageDrawUnusedColorIdentities;
}
int getVisualDeckStorageUnusedColorIdentitiesOpacity() const
{
return visualDeckStorageUnusedColorIdentitiesOpacity;
}
bool getVisualDeckStorageShowOnLoad() const bool getVisualDeckStorageShowOnLoad() const
{ {
return visualDeckStorageShowOnLoad; return visualDeckStorageShowOnLoad;
@ -695,6 +705,8 @@ public slots:
void setPrintingSelectorNavigationButtonsVisible(QT_STATE_CHANGED_T _navigationButtonsVisible); void setPrintingSelectorNavigationButtonsVisible(QT_STATE_CHANGED_T _navigationButtonsVisible);
void setVisualDeckStorageSortingOrder(int _visualDeckStorageSortingOrder); void setVisualDeckStorageSortingOrder(int _visualDeckStorageSortingOrder);
void setVisualDeckStorageCardSize(int _visualDeckStorageCardSize); void setVisualDeckStorageCardSize(int _visualDeckStorageCardSize);
void setVisualDeckStorageDrawUnusedColorIdentities(QT_STATE_CHANGED_T _visualDeckStorageDrawUnusedColorIdentities);
void setVisualDeckStorageUnusedColorIdentitiesOpacity(int _visualDeckStorageUnusedColorIdentitiesOpacity);
void setVisualDeckStorageShowOnLoad(QT_STATE_CHANGED_T _visualDeckStorageShowOnLoad); void setVisualDeckStorageShowOnLoad(QT_STATE_CHANGED_T _visualDeckStorageShowOnLoad);
void setHorizontalHand(QT_STATE_CHANGED_T _horizontalHand); void setHorizontalHand(QT_STATE_CHANGED_T _horizontalHand);
void setInvertVerticalCoordinate(QT_STATE_CHANGED_T _invertVerticalCoordinate); void setInvertVerticalCoordinate(QT_STATE_CHANGED_T _invertVerticalCoordinate);

View file

@ -193,6 +193,14 @@ void SettingsCache::setVisualDeckStorageCardSize(int /* _visualDeckStorageCardSi
void SettingsCache::setVisualDeckStorageShowOnLoad(QT_STATE_CHANGED_T /* _visualDeckStorageShowOnLoad */) void SettingsCache::setVisualDeckStorageShowOnLoad(QT_STATE_CHANGED_T /* _visualDeckStorageShowOnLoad */)
{ {
} }
void SettingsCache::setVisualDeckStorageDrawUnusedColorIdentities(
QT_STATE_CHANGED_T /* _visualDeckStorageDrawUnusedColorIdentities */)
{
}
void SettingsCache::setVisualDeckStorageUnusedColorIdentitiesOpacity(
int /* _visualDeckStorageUnusedColorIdentitiesOpacity */)
{
}
void SettingsCache::setHorizontalHand(QT_STATE_CHANGED_T /* _horizontalHand */) void SettingsCache::setHorizontalHand(QT_STATE_CHANGED_T /* _horizontalHand */)
{ {
} }

View file

@ -197,6 +197,14 @@ void SettingsCache::setVisualDeckStorageCardSize(int /* _visualDeckStorageCardSi
void SettingsCache::setVisualDeckStorageShowOnLoad(QT_STATE_CHANGED_T /* _visualDeckStorageShowOnLoad */) void SettingsCache::setVisualDeckStorageShowOnLoad(QT_STATE_CHANGED_T /* _visualDeckStorageShowOnLoad */)
{ {
} }
void SettingsCache::setVisualDeckStorageDrawUnusedColorIdentities(
QT_STATE_CHANGED_T /* _visualDeckStorageDrawUnusedColorIdentities */)
{
}
void SettingsCache::setVisualDeckStorageUnusedColorIdentitiesOpacity(
int /* _visualDeckStorageUnusedColorIdentitiesOpacity */)
{
}
void SettingsCache::setHorizontalHand(QT_STATE_CHANGED_T /* _horizontalHand */) void SettingsCache::setHorizontalHand(QT_STATE_CHANGED_T /* _horizontalHand */)
{ {
} }