diff --git a/cockatrice/src/interface/widgets/cards/additional_info/color_identity_widget.cpp b/cockatrice/src/interface/widgets/cards/additional_info/color_identity_widget.cpp index e8beae61e..0eea7854c 100644 --- a/cockatrice/src/interface/widgets/cards/additional_info/color_identity_widget.cpp +++ b/cockatrice/src/interface/widgets/cards/additional_info/color_identity_widget.cpp @@ -9,29 +9,8 @@ #include #include -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()) { + 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) { diff --git a/cockatrice/src/interface/widgets/cards/additional_info/color_identity_widget.h b/cockatrice/src/interface/widgets/cards/additional_info/color_identity_widget.h index 60d69af06..181e532aa 100644 --- a/cockatrice/src/interface/widgets/cards/additional_info/color_identity_widget.h +++ b/cockatrice/src/interface/widgets/cards/additional_info/color_identity_widget.h @@ -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; };