Fix forum userpic button if no userpic is set.
This commit is contained in:
parent
b561705528
commit
1c44121db7
|
@ -395,31 +395,16 @@ void UserpicButton::paintEvent(QPaintEvent *e) {
|
||||||
paintUserpicFrame(p, photoPosition);
|
paintUserpicFrame(p, photoPosition);
|
||||||
}
|
}
|
||||||
|
|
||||||
const auto fillShape = [&](const style::color &color) {
|
const auto fillTranslatedShape = [&](const style::color &color) {
|
||||||
PainterHighQualityEnabler hq(p);
|
p.translate(photoLeft, photoTop);
|
||||||
p.setPen(Qt::NoPen);
|
fillShape(p, color);
|
||||||
p.setBrush(color);
|
p.translate(-photoLeft, -photoTop);
|
||||||
if (_peer && _peer->isForum()) {
|
|
||||||
p.drawRoundedRect(
|
|
||||||
photoLeft,
|
|
||||||
photoTop,
|
|
||||||
_st.photoSize,
|
|
||||||
_st.photoSize,
|
|
||||||
st::roundRadiusLarge,
|
|
||||||
st::roundRadiusLarge);
|
|
||||||
} else {
|
|
||||||
p.drawEllipse(
|
|
||||||
photoLeft,
|
|
||||||
photoTop,
|
|
||||||
_st.photoSize,
|
|
||||||
_st.photoSize);
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
if (_role == Role::ChangePhoto || _role == Role::ChoosePhoto) {
|
if (_role == Role::ChangePhoto || _role == Role::ChoosePhoto) {
|
||||||
auto over = isOver() || isDown();
|
auto over = isOver() || isDown();
|
||||||
if (over) {
|
if (over) {
|
||||||
fillShape(_userpicHasImage
|
fillTranslatedShape(_userpicHasImage
|
||||||
? st::msgDateImgBg
|
? st::msgDateImgBg
|
||||||
: _st.changeButton.textBgOver);
|
: _st.changeButton.textBgOver);
|
||||||
}
|
}
|
||||||
|
@ -459,7 +444,7 @@ void UserpicButton::paintEvent(QPaintEvent *e) {
|
||||||
_st.photoSize,
|
_st.photoSize,
|
||||||
barHeight);
|
barHeight);
|
||||||
p.setClipRect(rect);
|
p.setClipRect(rect);
|
||||||
fillShape(_st.uploadBg);
|
fillTranslatedShape(_st.uploadBg);
|
||||||
auto iconLeft = (_st.uploadIconPosition.x() < 0)
|
auto iconLeft = (_st.uploadIconPosition.x() < 0)
|
||||||
? (_st.photoSize - _st.uploadIcon.width()) / 2
|
? (_st.photoSize - _st.uploadIcon.width()) / 2
|
||||||
: _st.uploadIconPosition.x();
|
: _st.uploadIconPosition.x();
|
||||||
|
@ -807,17 +792,24 @@ void UserpicButton::setImage(QImage &&image) {
|
||||||
startNewPhotoShowing();
|
startNewPhotoShowing();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void UserpicButton::fillShape(QPainter &p, const style::color &color) const {
|
||||||
|
PainterHighQualityEnabler hq(p);
|
||||||
|
p.setPen(Qt::NoPen);
|
||||||
|
p.setBrush(color);
|
||||||
|
const auto size = _st.photoSize;
|
||||||
|
if (_peer && _peer->isForum()) {
|
||||||
|
const auto radius = st::roundRadiusLarge;
|
||||||
|
p.drawRoundedRect(0, 0, size, size, radius, radius);
|
||||||
|
} else {
|
||||||
|
p.drawEllipse(0, 0, size, size);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void UserpicButton::prepareUserpicPixmap() {
|
void UserpicButton::prepareUserpicPixmap() {
|
||||||
if (_userpicCustom) {
|
if (_userpicCustom) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
auto size = _st.photoSize;
|
auto size = _st.photoSize;
|
||||||
auto paintButton = [&](QPainter &p, const style::color &color) {
|
|
||||||
PainterHighQualityEnabler hq(p);
|
|
||||||
p.setBrush(color);
|
|
||||||
p.setPen(Qt::NoPen);
|
|
||||||
p.drawEllipse(0, 0, size, size);
|
|
||||||
};
|
|
||||||
_userpicHasImage = _peer
|
_userpicHasImage = _peer
|
||||||
? (_peer->currentUserpic(_userpicView) || _role != Role::ChangePhoto)
|
? (_peer->currentUserpic(_userpicView) || _role != Role::ChangePhoto)
|
||||||
: false;
|
: false;
|
||||||
|
@ -825,7 +817,7 @@ void UserpicButton::prepareUserpicPixmap() {
|
||||||
if (_userpicHasImage) {
|
if (_userpicHasImage) {
|
||||||
_peer->paintUserpic(p, _userpicView, 0, 0, _st.photoSize);
|
_peer->paintUserpic(p, _userpicView, 0, 0, _st.photoSize);
|
||||||
} else {
|
} else {
|
||||||
paintButton(p, _st.changeButton.textBg);
|
fillShape(p, _st.changeButton.textBg);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
_userpicUniqueKey = _userpicHasImage
|
_userpicUniqueKey = _userpicHasImage
|
||||||
|
|
|
@ -132,7 +132,8 @@ private:
|
||||||
void processNewPeerPhoto();
|
void processNewPeerPhoto();
|
||||||
void startNewPhotoShowing();
|
void startNewPhotoShowing();
|
||||||
void prepareUserpicPixmap();
|
void prepareUserpicPixmap();
|
||||||
QPoint countPhotoPosition() const;
|
void fillShape(QPainter &p, const style::color &color) const;
|
||||||
|
[[nodiscard]] QPoint countPhotoPosition() const;
|
||||||
void startChangeOverlayAnimation();
|
void startChangeOverlayAnimation();
|
||||||
void updateCursorInChangeOverlay(QPoint localPos);
|
void updateCursorInChangeOverlay(QPoint localPos);
|
||||||
void setCursorInChangeOverlay(bool inOverlay);
|
void setCursorInChangeOverlay(bool inOverlay);
|
||||||
|
|
Loading…
Reference in New Issue