Pass correct FileOrigin for userpics.

This commit is contained in:
John Preston 2018-10-31 13:55:22 +04:00
parent e6c4c48261
commit 8850d974a2
4 changed files with 16 additions and 13 deletions

View File

@ -523,13 +523,13 @@ void Panel::refreshUserPhoto() {
if (isGoodUserPhoto(photo) && isNewPhoto(photo)) { if (isGoodUserPhoto(photo) && isNewPhoto(photo)) {
_userPhotoId = photo->id; _userPhotoId = photo->id;
_userPhotoFull = true; _userPhotoFull = true;
createUserpicCache(photo->full); createUserpicCache(photo->full, _user->userpicPhotoOrigin());
} else if (_userPhoto.isNull()) { } else if (_userPhoto.isNull()) {
createUserpicCache(_user->currentUserpic()); createUserpicCache(_user->currentUserpic(), _user->userpicOrigin());
} }
} }
void Panel::createUserpicCache(ImagePtr image) { void Panel::createUserpicCache(ImagePtr image, Data::FileOrigin origin) {
auto size = st::callWidth * cIntRetinaFactor(); auto size = st::callWidth * cIntRetinaFactor();
auto options = _useTransparency ? (Images::Option::RoundedLarge | Images::Option::RoundedTopLeft | Images::Option::RoundedTopRight | Images::Option::Smooth) : Images::Option::None; auto options = _useTransparency ? (Images::Option::RoundedLarge | Images::Option::RoundedTopLeft | Images::Option::RoundedTopRight | Images::Option::Smooth) : Images::Option::None;
if (image) { if (image) {
@ -543,7 +543,7 @@ void Panel::createUserpicCache(ImagePtr image) {
width = size; width = size;
} }
_userPhoto = image->pixNoCache( _userPhoto = image->pixNoCache(
_user->userpicPhotoOrigin(), origin,
width, width,
height, height,
options, options,

View File

@ -92,7 +92,7 @@ private:
void processUserPhoto(); void processUserPhoto();
void refreshUserPhoto(); void refreshUserPhoto();
bool isGoodUserPhoto(PhotoData *photo); bool isGoodUserPhoto(PhotoData *photo);
void createUserpicCache(ImagePtr image); void createUserpicCache(ImagePtr image, Data::FileOrigin origin);
QRect signalBarsRect() const; QRect signalBarsRect() const;
void paintSignalBarsBg(Painter &p); void paintSignalBarsBg(Painter &p);

View File

@ -187,7 +187,7 @@ void PeerData::setUserpicPhoto(const MTPPhoto &data) {
ImagePtr PeerData::currentUserpic() const { ImagePtr PeerData::currentUserpic() const {
if (_userpic) { if (_userpic) {
_userpic->load(userpicPhotoOrigin()); _userpic->load(userpicOrigin());
if (_userpic->loaded()) { if (_userpic->loaded()) {
if (!useEmptyUserpic()) { if (!useEmptyUserpic()) {
_userpicEmpty = nullptr; _userpicEmpty = nullptr;
@ -203,7 +203,7 @@ ImagePtr PeerData::currentUserpic() const {
void PeerData::paintUserpic(Painter &p, int x, int y, int size) const { void PeerData::paintUserpic(Painter &p, int x, int y, int size) const {
if (auto userpic = currentUserpic()) { if (auto userpic = currentUserpic()) {
p.drawPixmap(x, y, userpic->pixCircled(userpicPhotoOrigin(), size, size)); p.drawPixmap(x, y, userpic->pixCircled(userpicOrigin(), size, size));
} else { } else {
_userpicEmpty->paint(p, x, y, x + size + x, size); _userpicEmpty->paint(p, x, y, x + size + x, size);
} }
@ -211,7 +211,7 @@ void PeerData::paintUserpic(Painter &p, int x, int y, int size) const {
void PeerData::paintUserpicRounded(Painter &p, int x, int y, int size) const { void PeerData::paintUserpicRounded(Painter &p, int x, int y, int size) const {
if (auto userpic = currentUserpic()) { if (auto userpic = currentUserpic()) {
p.drawPixmap(x, y, userpic->pixRounded(userpicPhotoOrigin(), size, size, ImageRoundRadius::Small)); p.drawPixmap(x, y, userpic->pixRounded(userpicOrigin(), size, size, ImageRoundRadius::Small));
} else { } else {
_userpicEmpty->paintRounded(p, x, y, x + size + x, size); _userpicEmpty->paintRounded(p, x, y, x + size + x, size);
} }
@ -219,14 +219,14 @@ void PeerData::paintUserpicRounded(Painter &p, int x, int y, int size) const {
void PeerData::paintUserpicSquare(Painter &p, int x, int y, int size) const { void PeerData::paintUserpicSquare(Painter &p, int x, int y, int size) const {
if (auto userpic = currentUserpic()) { if (auto userpic = currentUserpic()) {
p.drawPixmap(x, y, userpic->pix(userpicPhotoOrigin(), size, size)); p.drawPixmap(x, y, userpic->pix(userpicOrigin(), size, size));
} else { } else {
_userpicEmpty->paintSquare(p, x, y, x + size + x, size); _userpicEmpty->paintSquare(p, x, y, x + size + x, size);
} }
} }
void PeerData::loadUserpic(bool loadFirst, bool prior) { void PeerData::loadUserpic(bool loadFirst, bool prior) {
_userpic->load(userpicPhotoOrigin(), loadFirst, prior); _userpic->load(userpicOrigin(), loadFirst, prior);
} }
bool PeerData::userpicLoaded() const { bool PeerData::userpicLoaded() const {
@ -256,7 +256,7 @@ void PeerData::saveUserpicRounded(const QString &path, int size) const {
QPixmap PeerData::genUserpic(int size) const { QPixmap PeerData::genUserpic(int size) const {
if (auto userpic = currentUserpic()) { if (auto userpic = currentUserpic()) {
return userpic->pixCircled(userpicPhotoOrigin(), size, size); return userpic->pixCircled(userpicOrigin(), size, size);
} }
auto result = QImage(QSize(size, size) * cIntRetinaFactor(), QImage::Format_ARGB32_Premultiplied); auto result = QImage(QSize(size, size) * cIntRetinaFactor(), QImage::Format_ARGB32_Premultiplied);
result.setDevicePixelRatio(cRetinaFactor()); result.setDevicePixelRatio(cRetinaFactor());
@ -270,7 +270,7 @@ QPixmap PeerData::genUserpic(int size) const {
QPixmap PeerData::genUserpicRounded(int size) const { QPixmap PeerData::genUserpicRounded(int size) const {
if (auto userpic = currentUserpic()) { if (auto userpic = currentUserpic()) {
return userpic->pixRounded(userpicPhotoOrigin(), size, size, ImageRoundRadius::Small); return userpic->pixRounded(userpicOrigin(), size, size, ImageRoundRadius::Small);
} }
auto result = QImage(QSize(size, size) * cIntRetinaFactor(), QImage::Format_ARGB32_Premultiplied); auto result = QImage(QSize(size, size) * cIntRetinaFactor(), QImage::Format_ARGB32_Premultiplied);
result.setDevicePixelRatio(cRetinaFactor()); result.setDevicePixelRatio(cRetinaFactor());

View File

@ -183,10 +183,13 @@ public:
PhotoId userpicPhotoId() const { PhotoId userpicPhotoId() const {
return userpicPhotoUnknown() ? 0 : _userpicPhotoId; return userpicPhotoUnknown() ? 0 : _userpicPhotoId;
} }
Data::FileOrigin userpicOrigin() const {
return Data::FileOrigin(Data::FileOriginPeerPhoto(id));
}
Data::FileOrigin userpicPhotoOrigin() const { Data::FileOrigin userpicPhotoOrigin() const {
return (isUser() && userpicPhotoId()) return (isUser() && userpicPhotoId())
? Data::FileOriginUserPhoto(bareId(), userpicPhotoId()) ? Data::FileOriginUserPhoto(bareId(), userpicPhotoId())
: Data::FileOrigin(Data::FileOriginPeerPhoto(id)); : Data::FileOrigin();
} }
int nameVersion = 1; int nameVersion = 1;