mirror of
https://github.com/Nheko-Reborn/nheko.git
synced 2024-10-31 18:00:48 +03:00
57 lines
1.2 KiB
C++
57 lines
1.2 KiB
C++
|
#include <QDebug>
|
||
|
#include <QPainter>
|
||
|
#include <QPoint>
|
||
|
|
||
|
#include "Config.h"
|
||
|
#include "TypingDisplay.h"
|
||
|
|
||
|
TypingDisplay::TypingDisplay(QWidget *parent)
|
||
|
: QWidget(parent)
|
||
|
, leftPadding_{ 57 }
|
||
|
{
|
||
|
QFont font;
|
||
|
font.setPixelSize(conf::typingNotificationFontSize);
|
||
|
|
||
|
setFixedHeight(QFontMetrics(font).height() + 2);
|
||
|
}
|
||
|
|
||
|
void
|
||
|
TypingDisplay::setUsers(const QStringList &uid)
|
||
|
{
|
||
|
if (uid.isEmpty())
|
||
|
text_.clear();
|
||
|
else
|
||
|
text_ = uid.join(", ");
|
||
|
|
||
|
if (uid.size() == 1)
|
||
|
text_ += tr(" is typing ...");
|
||
|
else if (uid.size() > 1)
|
||
|
text_ += tr(" are typing ...");
|
||
|
|
||
|
update();
|
||
|
}
|
||
|
|
||
|
void
|
||
|
TypingDisplay::paintEvent(QPaintEvent *)
|
||
|
{
|
||
|
QPen pen(QColor("#333"));
|
||
|
|
||
|
QFont font;
|
||
|
font.setPixelSize(conf::typingNotificationFontSize);
|
||
|
font.setWeight(40);
|
||
|
font.setItalic(true);
|
||
|
|
||
|
QPainter p(this);
|
||
|
p.setRenderHint(QPainter::Antialiasing);
|
||
|
p.setFont(font);
|
||
|
p.setPen(pen);
|
||
|
|
||
|
QRect region = rect();
|
||
|
region.translate(leftPadding_, 0);
|
||
|
|
||
|
QFontMetrics fm(font);
|
||
|
text_ = fm.elidedText(text_, Qt::ElideRight, width() - 3 * leftPadding_);
|
||
|
|
||
|
p.drawText(region, Qt::AlignTop, text_);
|
||
|
}
|