49 lines
1.0 KiB
C++
49 lines
1.0 KiB
C++
/*
|
|
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/unread_badge.h"
|
|
|
|
#include "dialogs/dialogs_layout.h"
|
|
|
|
namespace Ui {
|
|
|
|
void UnreadBadge::setText(const QString &text, bool active) {
|
|
_text = text;
|
|
_active = active;
|
|
const auto st = Dialogs::Layout::UnreadBadgeStyle();
|
|
resize(
|
|
std::max(st.font->width(text) + 2 * st.padding, st.size),
|
|
st.size);
|
|
update();
|
|
}
|
|
|
|
int UnreadBadge::textBaseline() const {
|
|
const auto st = Dialogs::Layout::UnreadBadgeStyle();
|
|
return ((st.size - st.font->height) / 2) + st.font->ascent;
|
|
}
|
|
|
|
void UnreadBadge::paintEvent(QPaintEvent *e) {
|
|
if (_text.isEmpty()) {
|
|
return;
|
|
}
|
|
|
|
Painter p(this);
|
|
|
|
Dialogs::Layout::UnreadBadgeStyle unreadSt;
|
|
unreadSt.muted = !_active;
|
|
auto unreadRight = width();
|
|
auto unreadTop = 0;
|
|
Dialogs::Layout::paintUnreadCount(
|
|
p,
|
|
_text,
|
|
unreadRight,
|
|
unreadTop,
|
|
unreadSt);
|
|
}
|
|
|
|
} // namespace Ui
|