This commit is contained in:
Martin Rotter 2022-03-22 09:33:55 +01:00
parent 136ac3dce6
commit 96c9a8fe09
2 changed files with 34 additions and 22 deletions

View File

@ -117,34 +117,35 @@ void SystemTrayIcon::setNumber(int number, bool any_feed_has_new_unread_messages
tray_painter.setRenderHint(QPainter::RenderHint::SmoothPixmapTransform, true);
tray_painter.setRenderHint(QPainter::RenderHint::TextAntialiasing, true);
// Numbers with more than 2 digits won't be readable, display
// Numbers with more than 5 digits won't be readable, display
// infinity symbol in that case.
if (number > 999) {
QString num_txt;
if (number > 99999) {
num_txt = QChar(8734);
m_font.setPixelSize(background.width() * 0.78);
tray_painter.setFont(m_font);
tray_painter.drawText(background.rect(), Qt::AlignmentFlag::AlignCenter, QChar(8734));
}
else if (number > 999) {
num_txt = QSL("%1k").arg(int(number / 1000));
m_font.setPixelSize(background.width() * 0.43);
}
else if (number > 99) {
num_txt = QString::number(number);
m_font.setPixelSize(background.width() * 0.43);
}
else if (number > 9) {
num_txt = QString::number(number);
m_font.setPixelSize(background.width() * 0.56);
}
else {
// Smaller number if it has 3 digits.
if (number > 99) {
m_font.setPixelSize(background.width() * 0.43);
}
else if (number > 9) {
m_font.setPixelSize(background.width() * 0.56);
}
// Bigger number if it has just one digit.
else {
m_font.setPixelSize(background.width() * 0.78);
}
tray_painter.setFont(m_font);
tray_painter.drawText(background.rect(),
Qt::AlignmentFlag::AlignCenter,
QString::number(number));
num_txt = QString::number(number);
m_font.setPixelSize(background.width() * 0.78);
}
tray_painter.setFont(m_font);
tray_painter.drawText(background.rect(), Qt::AlignmentFlag::AlignCenter, num_txt);
tray_painter.end();
QSystemTrayIcon::setIcon(QIcon(background));
}
}

View File

@ -732,7 +732,18 @@ void Application::showMessagesNumber(int unread_messages, bool any_feed_has_new_
QImage Application::generateOverlayIcon(int number) const {
QImage img(128, 128, QImage::Format::Format_ARGB32);
QPainter p;
QString num_txt = number > 999 ? QChar(8734) : QString::number(number);
QString num_txt;
if (number < 1000) {
num_txt = QString::number(number);
}
else if (number < 100000) {
num_txt = QSL("%1k").arg(int(number / 1000));
}
else {
num_txt = QChar(8734);
}
QPainterPath rounded_rectangle; rounded_rectangle.addRoundedRect(QRectF(img.rect()), 15, 15);
QFont fon = font();