[ColorIdentityWidget] Refactor and add setter

This commit is contained in:
RickyRister 2026-01-10 01:59:42 -08:00
parent ed1115f4c0
commit 3e9d1e18a6
2 changed files with 17 additions and 27 deletions

View file

@ -9,29 +9,8 @@
#include <QResizeEvent>
#include <QSize>
ColorIdentityWidget::ColorIdentityWidget(QWidget *parent, CardInfoPtr _card) : QWidget(parent), card(_card)
{
layout = new QHBoxLayout(this);
layout->setSpacing(5); // Small spacing between icons
layout->setContentsMargins(0, 0, 0, 0);
layout->setAlignment(Qt::AlignCenter); // Ensure icons are centered
setLayout(layout);
// Define the full WUBRG set (White, Blue, Black, Red, Green)
QString fullColorIdentity = "WUBRG";
if (card) {
manaCost = card->getColors(); // Get mana cost string
QStringList symbols = parseColorIdentity(manaCost); // Parse mana cost string
populateManaSymbolWidgets();
}
connect(&SettingsCache::instance(), &SettingsCache::visualDeckStorageDrawUnusedColorIdentitiesChanged, this,
&ColorIdentityWidget::toggleUnusedVisibility);
}
ColorIdentityWidget::ColorIdentityWidget(QWidget *parent, QString _manaCost)
: QWidget(parent), card(nullptr), manaCost(_manaCost)
ColorIdentityWidget::ColorIdentityWidget(QWidget *parent, const QString &_manaCost)
: QWidget(parent), manaCost(_manaCost)
{
layout = new QHBoxLayout(this);
layout->setSpacing(5); // Small spacing between icons
@ -51,6 +30,12 @@ void ColorIdentityWidget::populateManaSymbolWidgets()
QString fullColorIdentity = "WUBRG";
QStringList symbols = parseColorIdentity(manaCost); // Parse mana cost string
// clear old layout
for (auto widgets : layout->findChildren<ManaSymbolWidget *>()) {
widgets->deleteLater();
}
// populate mana symbols
if (SettingsCache::instance().getVisualDeckStorageDrawUnusedColorIdentities()) {
for (const QString symbol : fullColorIdentity) {
auto *manaSymbol = new ManaSymbolWidget(this, symbol, symbols.contains(symbol));
@ -64,6 +49,12 @@ void ColorIdentityWidget::populateManaSymbolWidgets()
}
}
void ColorIdentityWidget::setColorIdentity(const QString &manaString)
{
manaCost = manaString;
populateManaSymbolWidgets();
}
void ColorIdentityWidget::toggleUnusedVisibility()
{
if (layout != nullptr) {

View file

@ -15,18 +15,17 @@ class ColorIdentityWidget : public QWidget
{
Q_OBJECT
public:
explicit ColorIdentityWidget(QWidget *parent, CardInfoPtr card);
explicit ColorIdentityWidget(QWidget *parent, QString manaCost);
explicit ColorIdentityWidget(QWidget *parent, const QString &manaCost = "");
void populateManaSymbolWidgets();
QStringList parseColorIdentity(const QString &manaString);
static QStringList parseColorIdentity(const QString &manaString);
public slots:
void setColorIdentity(const QString &manaString);
void resizeEvent(QResizeEvent *event) override;
void toggleUnusedVisibility();
private:
CardInfoPtr card;
QString manaCost;
QHBoxLayout *layout;
};