Support PeerData::isVerifyCodes() peer type.

This commit is contained in:
John Preston
2024-09-20 17:29:30 +04:00
parent 4803bd4b3f
commit 79b1c0edee
47 changed files with 391 additions and 85 deletions
@@ -157,6 +157,19 @@ private:
};
class VerifyCodesUserpic final : public DynamicImage {
public:
std::shared_ptr<DynamicImage> clone() override;
QImage image(int size) override;
void subscribeToUpdates(Fn<void()> callback) override;
private:
QImage _frame;
int _paletteVersion = 0;
};
class HiddenAuthorUserpic final : public DynamicImage {
public:
std::shared_ptr<DynamicImage> clone() override;
@@ -495,6 +508,37 @@ void RepliesUserpic::subscribeToUpdates(Fn<void()> callback) {
}
}
std::shared_ptr<DynamicImage> VerifyCodesUserpic::clone() {
return std::make_shared<VerifyCodesUserpic>();
}
QImage VerifyCodesUserpic::image(int size) {
const auto good = (_frame.width() == size * _frame.devicePixelRatio());
const auto paletteVersion = style::PaletteVersion();
if (!good || _paletteVersion != paletteVersion) {
_paletteVersion = paletteVersion;
const auto ratio = style::DevicePixelRatio();
if (!good) {
_frame = QImage(
QSize(size, size) * ratio,
QImage::Format_ARGB32_Premultiplied);
_frame.setDevicePixelRatio(ratio);
}
_frame.fill(Qt::transparent);
auto p = Painter(&_frame);
Ui::EmptyUserpic::PaintVerifyCodes(p, 0, 0, size, size);
}
return _frame;
}
void VerifyCodesUserpic::subscribeToUpdates(Fn<void()> callback) {
if (!callback) {
_frame = {};
}
}
std::shared_ptr<DynamicImage> HiddenAuthorUserpic::clone() {
return std::make_shared<HiddenAuthorUserpic>();
}
@@ -623,6 +667,10 @@ std::shared_ptr<DynamicImage> MakeRepliesThumbnail() {
return std::make_shared<RepliesUserpic>();
}
std::shared_ptr<DynamicImage> MakeVerifyCodesThumbnail() {
return std::make_shared<VerifyCodesUserpic>();
}
std::shared_ptr<DynamicImage> MakeHiddenAuthorThumbnail() {
return std::make_shared<HiddenAuthorUserpic>();
}