| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- /*
- This file is part of Telegram Desktop,
- the official desktop application for the Telegram messaging service.
- For license and copyright information please follow this link:
- https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
- */
- #include "ui/controls/jump_down_button.h"
- #include "ui/effects/ripple_animation.h"
- #include "ui/unread_badge_paint.h"
- #include "styles/style_chat_helpers.h"
- namespace Ui {
- JumpDownButton::JumpDownButton(
- QWidget *parent,
- const style::TwoIconButton &st)
- : RippleButton(parent, st.ripple)
- , _st(st) {
- resize(_st.width, _st.height);
- setCursor(style::cur_pointer);
- hide();
- }
- QImage JumpDownButton::prepareRippleMask() const {
- return Ui::RippleAnimation::EllipseMask(
- QSize(_st.rippleAreaSize, _st.rippleAreaSize));
- }
- QPoint JumpDownButton::prepareRippleStartPosition() const {
- return mapFromGlobal(QCursor::pos()) - _st.rippleAreaPosition;
- }
- void JumpDownButton::paintEvent(QPaintEvent *e) {
- auto p = QPainter(this);
- const auto over = isOver();
- const auto down = isDown();
- ((over || down)
- ? _st.iconBelowOver
- : _st.iconBelow).paint(p, _st.iconPosition, width());
- paintRipple(p, _st.rippleAreaPosition.x(), _st.rippleAreaPosition.y());
- ((over || down)
- ? _st.iconAboveOver
- : _st.iconAbove).paint(p, _st.iconPosition, width());
- if (_unreadCount > 0) {
- auto unreadString = QString::number(_unreadCount);
- Ui::UnreadBadgeStyle st;
- st.align = style::al_center;
- st.font = st::historyToDownBadgeFont;
- st.size = st::historyToDownBadgeSize;
- st.sizeId = Ui::UnreadBadgeSize::HistoryToDown;
- Ui::PaintUnreadBadge(p, unreadString, width(), 0, st, 4);
- }
- }
- void JumpDownButton::setUnreadCount(int unreadCount) {
- if (_unreadCount != unreadCount) {
- _unreadCount = unreadCount;
- update();
- }
- }
- } // namespace Ui
|