diff --git a/src/librssguard/gui/systemtrayicon.cpp b/src/librssguard/gui/systemtrayicon.cpp index fdd28b63e..dd86db59a 100644 --- a/src/librssguard/gui/systemtrayicon.cpp +++ b/src/librssguard/gui/systemtrayicon.cpp @@ -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)); } } diff --git a/src/librssguard/miscellaneous/application.cpp b/src/librssguard/miscellaneous/application.cpp index 8fbf6a55a..4b79e21bc 100644 --- a/src/librssguard/miscellaneous/application.cpp +++ b/src/librssguard/miscellaneous/application.cpp @@ -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();