mirror of
https://github.com/AyuGram/AyuGramDesktop.git
synced 2025-06-05 06:33:57 +02:00
Added ability to provide custom gradient to colored premium stars.
This commit is contained in:
parent
2a224c839e
commit
53d97b4146
3 changed files with 14 additions and 9 deletions
|
@ -35,11 +35,14 @@ void ColoredMiniStars::setSize(const QSize &size) {
|
||||||
_mask.fill(Qt::transparent);
|
_mask.fill(Qt::transparent);
|
||||||
{
|
{
|
||||||
auto p = QPainter(&_mask);
|
auto p = QPainter(&_mask);
|
||||||
if (_colorOverride) {
|
if (_stopsOverride && _stopsOverride->size() == 1) {
|
||||||
p.fillRect(0, 0, size.width(), size.height(), *_colorOverride);
|
const auto &color = _stopsOverride->front().second;
|
||||||
|
p.fillRect(0, 0, size.width(), size.height(), color);
|
||||||
} else {
|
} else {
|
||||||
auto gradient = QLinearGradient(0, 0, size.width(), 0);
|
auto gradient = QLinearGradient(0, 0, size.width(), 0);
|
||||||
gradient.setStops(Ui::Premium::GiftGradientStops());
|
gradient.setStops((_stopsOverride && _stopsOverride->size() > 1)
|
||||||
|
? (*_stopsOverride)
|
||||||
|
: Ui::Premium::GiftGradientStops());
|
||||||
p.setPen(Qt::NoPen);
|
p.setPen(Qt::NoPen);
|
||||||
p.setBrush(gradient);
|
p.setBrush(gradient);
|
||||||
p.drawRect(0, 0, size.width(), size.height());
|
p.drawRect(0, 0, size.width(), size.height());
|
||||||
|
@ -63,8 +66,8 @@ void ColoredMiniStars::setPosition(QPoint position) {
|
||||||
_position = std::move(position);
|
_position = std::move(position);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ColoredMiniStars::setColorOverride(std::optional<QColor> color) {
|
void ColoredMiniStars::setColorOverride(std::optional<QGradientStops> stops) {
|
||||||
_colorOverride = color;
|
_stopsOverride = stops;
|
||||||
}
|
}
|
||||||
|
|
||||||
void ColoredMiniStars::paint(QPainter &p) {
|
void ColoredMiniStars::paint(QPainter &p) {
|
||||||
|
|
|
@ -21,7 +21,7 @@ public:
|
||||||
|
|
||||||
void setSize(const QSize &size);
|
void setSize(const QSize &size);
|
||||||
void setPosition(QPoint position);
|
void setPosition(QPoint position);
|
||||||
void setColorOverride(std::optional<QColor> color);
|
void setColorOverride(std::optional<QGradientStops> stops);
|
||||||
void setCenter(const QRect &rect);
|
void setCenter(const QRect &rect);
|
||||||
void paint(QPainter &p);
|
void paint(QPainter &p);
|
||||||
|
|
||||||
|
@ -34,7 +34,7 @@ private:
|
||||||
QImage _mask;
|
QImage _mask;
|
||||||
QSize _size;
|
QSize _size;
|
||||||
QPoint _position;
|
QPoint _position;
|
||||||
std::optional<QColor> _colorOverride;
|
std::optional<QGradientStops> _stopsOverride;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -202,10 +202,12 @@ TopBar::TopBar(
|
||||||
|
|
||||||
if (_logo == u"dollar"_q) {
|
if (_logo == u"dollar"_q) {
|
||||||
_dollar = ScaleTo(QImage(u":/gui/art/business_logo.png"_q));
|
_dollar = ScaleTo(QImage(u":/gui/art/business_logo.png"_q));
|
||||||
_ministars.setColorOverride(st::premiumButtonFg->c);
|
_ministars.setColorOverride(
|
||||||
|
QGradientStops{{ 0, st::premiumButtonFg->c }});
|
||||||
} else if (!_light && !TopBarAbstract::isDark()) {
|
} else if (!_light && !TopBarAbstract::isDark()) {
|
||||||
_star.load(Svg());
|
_star.load(Svg());
|
||||||
_ministars.setColorOverride(st::premiumButtonFg->c);
|
_ministars.setColorOverride(
|
||||||
|
QGradientStops{{ 0, st::premiumButtonFg->c }});
|
||||||
} else {
|
} else {
|
||||||
_star.load(ColorizedSvg());
|
_star.load(ColorizedSvg());
|
||||||
_ministars.setColorOverride(std::nullopt);
|
_ministars.setColorOverride(std::nullopt);
|
||||||
|
|
Loading…
Add table
Reference in a new issue