mirror of
https://github.com/Cockatrice/Cockatrice.git
synced 2026-07-15 23:12:14 -07:00
Change database color filter to use new mana symbol widgets.
This commit is contained in:
parent
c90c453464
commit
7f8bd8d443
2 changed files with 9 additions and 95 deletions
|
|
@ -1,90 +1,6 @@
|
||||||
#include "visual_database_display_color_filter_widget.h"
|
#include "visual_database_display_color_filter_widget.h"
|
||||||
|
|
||||||
#include "../../../../game/filters/filter_card.h"
|
#include "../cards/additional_info/mana_symbol_widget.h"
|
||||||
#include "../../../../game/filters/filter_tree_model.h"
|
|
||||||
|
|
||||||
#include <QJsonObject>
|
|
||||||
#include <QMouseEvent>
|
|
||||||
#include <QPainter>
|
|
||||||
|
|
||||||
VisualDatabaseDisplayColorFilterCircleWidget::VisualDatabaseDisplayColorFilterCircleWidget(QChar color, QWidget *parent)
|
|
||||||
: QWidget(parent), colorChar(color), isActive(false), circleDiameter(30)
|
|
||||||
{
|
|
||||||
setFixedSize(circleDiameter, circleDiameter);
|
|
||||||
}
|
|
||||||
|
|
||||||
void VisualDatabaseDisplayColorFilterCircleWidget::setColorActive(bool active)
|
|
||||||
{
|
|
||||||
if (isActive != active) {
|
|
||||||
isActive = active;
|
|
||||||
update();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
bool VisualDatabaseDisplayColorFilterCircleWidget::isColorActive() const
|
|
||||||
{
|
|
||||||
return isActive;
|
|
||||||
}
|
|
||||||
|
|
||||||
QChar VisualDatabaseDisplayColorFilterCircleWidget::getColorChar() const
|
|
||||||
{
|
|
||||||
return colorChar;
|
|
||||||
}
|
|
||||||
|
|
||||||
void VisualDatabaseDisplayColorFilterCircleWidget::paintEvent(QPaintEvent *event)
|
|
||||||
{
|
|
||||||
Q_UNUSED(event);
|
|
||||||
|
|
||||||
QPainter painter(this);
|
|
||||||
painter.setRenderHint(QPainter::Antialiasing);
|
|
||||||
|
|
||||||
QColor circleColor;
|
|
||||||
switch (colorChar.unicode()) {
|
|
||||||
case 'W':
|
|
||||||
circleColor = Qt::white;
|
|
||||||
break;
|
|
||||||
case 'U':
|
|
||||||
circleColor = QColor(0, 115, 230);
|
|
||||||
break;
|
|
||||||
case 'B':
|
|
||||||
circleColor = QColor(50, 50, 50);
|
|
||||||
break;
|
|
||||||
case 'R':
|
|
||||||
circleColor = QColor(230, 30, 30);
|
|
||||||
break;
|
|
||||||
case 'G':
|
|
||||||
circleColor = QColor(30, 180, 30);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
circleColor = Qt::transparent;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!isActive) {
|
|
||||||
circleColor.setAlpha(100); // Dim inactive circles
|
|
||||||
}
|
|
||||||
|
|
||||||
painter.setBrush(circleColor);
|
|
||||||
painter.setPen(Qt::black);
|
|
||||||
painter.drawEllipse(rect());
|
|
||||||
|
|
||||||
if (isActive) {
|
|
||||||
QFont font = painter.font();
|
|
||||||
font.setBold(true);
|
|
||||||
font.setPointSize(circleDiameter / 3);
|
|
||||||
painter.setFont(font);
|
|
||||||
painter.setPen(colorChar.unicode() == 'B' ? Qt::white : Qt::black);
|
|
||||||
painter.drawText(rect(), Qt::AlignCenter, colorChar);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void VisualDatabaseDisplayColorFilterCircleWidget::mousePressEvent(QMouseEvent *event)
|
|
||||||
{
|
|
||||||
Q_UNUSED(event);
|
|
||||||
isActive = !isActive;
|
|
||||||
emit colorToggled(colorChar, isActive);
|
|
||||||
update();
|
|
||||||
}
|
|
||||||
|
|
||||||
VisualDatabaseDisplayColorFilterWidget::VisualDatabaseDisplayColorFilterWidget(QWidget *parent,
|
VisualDatabaseDisplayColorFilterWidget::VisualDatabaseDisplayColorFilterWidget(QWidget *parent,
|
||||||
FilterTreeModel *_filterModel)
|
FilterTreeModel *_filterModel)
|
||||||
|
|
@ -93,19 +9,22 @@ VisualDatabaseDisplayColorFilterWidget::VisualDatabaseDisplayColorFilterWidget(Q
|
||||||
setLayout(layout);
|
setLayout(layout);
|
||||||
layout->setSpacing(5);
|
layout->setSpacing(5);
|
||||||
layout->setContentsMargins(0, 0, 0, 0);
|
layout->setContentsMargins(0, 0, 0, 0);
|
||||||
|
setMaximumHeight(50);
|
||||||
|
setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Minimum);
|
||||||
|
|
||||||
QString fullColorIdentity = "WUBRG";
|
QString fullColorIdentity = "WUBRG";
|
||||||
for (const QChar &color : fullColorIdentity) {
|
for (const QChar &color : fullColorIdentity) {
|
||||||
auto *circle = new VisualDatabaseDisplayColorFilterCircleWidget(color, this);
|
auto *manaSymbol = new ManaSymbolWidget(this, color, false, true);
|
||||||
|
manaSymbol->setMaximumHeight(25);
|
||||||
|
manaSymbol->setMaximumWidth(25);
|
||||||
|
|
||||||
layout->addWidget(circle);
|
layout->addWidget(manaSymbol);
|
||||||
|
|
||||||
// Initialize the activeColors map
|
// Initialize the activeColors map
|
||||||
activeColors[color] = false;
|
activeColors[color] = false;
|
||||||
|
|
||||||
// Connect the color toggled signal
|
// Connect the color toggled signal
|
||||||
connect(circle, &VisualDatabaseDisplayColorFilterCircleWidget::colorToggled, this,
|
connect(manaSymbol, &ManaSymbolWidget::colorToggled, this, &VisualDatabaseDisplayColorFilterWidget::handleColorToggled);
|
||||||
&VisualDatabaseDisplayColorFilterWidget::handleColorToggled);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
toggleButton = new QPushButton(this);
|
toggleButton = new QPushButton(this);
|
||||||
|
|
@ -116,8 +35,7 @@ VisualDatabaseDisplayColorFilterWidget::VisualDatabaseDisplayColorFilterWidget(Q
|
||||||
connect(toggleButton, &QPushButton::toggled, this, &VisualDatabaseDisplayColorFilterWidget::updateFilterMode);
|
connect(toggleButton, &QPushButton::toggled, this, &VisualDatabaseDisplayColorFilterWidget::updateFilterMode);
|
||||||
connect(this, &VisualDatabaseDisplayColorFilterWidget::activeColorsChanged, this,
|
connect(this, &VisualDatabaseDisplayColorFilterWidget::activeColorsChanged, this,
|
||||||
&VisualDatabaseDisplayColorFilterWidget::updateColorFilter);
|
&VisualDatabaseDisplayColorFilterWidget::updateColorFilter);
|
||||||
connect(this, &VisualDatabaseDisplayColorFilterWidget::filterModeChanged, this,
|
connect(this, &VisualDatabaseDisplayColorFilterWidget::filterModeChanged, this, &VisualDatabaseDisplayColorFilterWidget::updateColorFilter);
|
||||||
&VisualDatabaseDisplayColorFilterWidget::updateColorFilter);
|
|
||||||
|
|
||||||
// Call retranslateUi to set the initial text
|
// Call retranslateUi to set the initial text
|
||||||
retranslateUi();
|
retranslateUi();
|
||||||
|
|
|
||||||
|
|
@ -17,10 +17,6 @@ public:
|
||||||
bool isColorActive() const;
|
bool isColorActive() const;
|
||||||
QChar getColorChar() const;
|
QChar getColorChar() const;
|
||||||
|
|
||||||
protected:
|
|
||||||
void paintEvent(QPaintEvent *event) override;
|
|
||||||
void mousePressEvent(QMouseEvent *event) override;
|
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void colorToggled(QChar color, bool active);
|
void colorToggled(QChar color, bool active);
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue