mirror of
https://github.com/AyuGram/AyuGramDesktop.git
synced 2025-04-16 14:17:12 +02:00
Added ability to provide custom gradient to star in premium top bar.
This commit is contained in:
parent
53d97b4146
commit
4a0bffe618
3 changed files with 12 additions and 7 deletions
|
@ -30,6 +30,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
|||
#include "core/application.h"
|
||||
#include "core/core_settings.h"
|
||||
#include "ui/chat/chat_style.h"
|
||||
#include "ui/effects/premium_graphics.h"
|
||||
#include "ui/effects/premium_top_bar.h"
|
||||
#include "ui/text/format_values.h"
|
||||
#include "ui/text/text_utilities.h"
|
||||
|
@ -79,7 +80,8 @@ using Privacy = Api::UserPrivacy;
|
|||
image.fill(Qt::transparent);
|
||||
{
|
||||
auto p = QPainter(&image);
|
||||
auto star = QSvgRenderer(Ui::Premium::ColorizedSvg());
|
||||
auto star = QSvgRenderer(
|
||||
Ui::Premium::ColorizedSvg(Ui::Premium::ButtonGradientStops()));
|
||||
star.render(&p, Rect(size));
|
||||
}
|
||||
return image;
|
||||
|
|
|
@ -46,15 +46,15 @@ QString Svg() {
|
|||
return u":/gui/icons/settings/star.svg"_q;
|
||||
}
|
||||
|
||||
QByteArray ColorizedSvg() {
|
||||
QByteArray ColorizedSvg(const QGradientStops &gradientStops) {
|
||||
auto f = QFile(Svg());
|
||||
if (!f.open(QIODevice::ReadOnly)) {
|
||||
return QByteArray();
|
||||
}
|
||||
auto content = QString::fromUtf8(f.readAll());
|
||||
auto stops = [] {
|
||||
auto stops = [&] {
|
||||
auto s = QString();
|
||||
for (const auto &stop : Ui::Premium::ButtonGradientStops()) {
|
||||
for (const auto &stop : gradientStops) {
|
||||
s += QString("<stop offset='%1' stop-color='%2'/>")
|
||||
.arg(QString::number(stop.first), stop.second.name());
|
||||
}
|
||||
|
@ -209,8 +209,10 @@ TopBar::TopBar(
|
|||
_ministars.setColorOverride(
|
||||
QGradientStops{{ 0, st::premiumButtonFg->c }});
|
||||
} else {
|
||||
_star.load(ColorizedSvg());
|
||||
_ministars.setColorOverride(std::nullopt);
|
||||
_star.load(ColorizedSvg(descriptor.gradientStops
|
||||
? (*descriptor.gradientStops)
|
||||
: Ui::Premium::ButtonGradientStops()));
|
||||
_ministars.setColorOverride(descriptor.gradientStops);
|
||||
}
|
||||
auto event = QResizeEvent(size(), size());
|
||||
resizeEvent(&event);
|
||||
|
|
|
@ -26,7 +26,7 @@ class FlatLabel;
|
|||
namespace Ui::Premium {
|
||||
|
||||
[[nodiscard]] QString Svg();
|
||||
[[nodiscard]] QByteArray ColorizedSvg();
|
||||
[[nodiscard]] QByteArray ColorizedSvg(const QGradientStops &gradientStops);
|
||||
[[nodiscard]] QImage GenerateStarForLightTopBar(QRectF rect);
|
||||
|
||||
class TopBarAbstract : public RpWidget {
|
||||
|
@ -71,6 +71,7 @@ struct TopBarDescriptor {
|
|||
rpl::producer<TextWithEntities> about;
|
||||
bool light = false;
|
||||
bool optimizeMinistars = true;
|
||||
std::optional<QGradientStops> gradientStops;
|
||||
};
|
||||
|
||||
class TopBar final : public TopBarAbstract {
|
||||
|
|
Loading…
Add table
Reference in a new issue