From 5f8b00b9567d41d1f4681e2240528b9fce2d7b3b Mon Sep 17 00:00:00 2001 From: Timothy Pearson Date: Sun, 23 Jun 2013 02:17:48 -0500 Subject: [PATCH] Use the largest possible font for the unread display in kmail and akregator if the tray icon size is less than 22 pixels This resolves Bug 1251 --- akregator/src/trayicon.cpp | 35 +++++++++++++++++++++++++++++------ akregator/src/trayicon.h | 16 +++++++++++----- kmail/kmsystemtray.cpp | 14 +++++++++++++- kmail/kmsystemtray.h | 1 + 4 files changed, 54 insertions(+), 12 deletions(-) diff --git a/akregator/src/trayicon.cpp b/akregator/src/trayicon.cpp index fc26cade..240e2d5b 100644 --- a/akregator/src/trayicon.cpp +++ b/akregator/src/trayicon.cpp @@ -123,22 +123,34 @@ TQPixmap TrayIcon::takeScreenshot() const return shot; // not finalShot?? -fo } +void TrayIcon::resizeEvent(TQResizeEvent *) +{ + setUnread(m_unread, true); +} + void TrayIcon::slotSetUnread(int unread) { - if (unread==m_unread) + setUnread(unread, false); +} + +void TrayIcon::setUnread(int unread, bool force) +{ + if ((unread==m_unread) && (!force)) + { return; - + } + m_unread=unread; - + TQToolTip::remove(this); TQToolTip::add(this, i18n("Akregator - 1 unread article", "Akregator - %n unread articles", unread > 0 ? unread : 0)); - + if (unread <= 0) - { + { setPixmap(m_defaultIcon); } else - { + { // from KMSystemTray int oldW = pixmap()->size().width(); int oldH = pixmap()->size().height(); @@ -146,6 +158,17 @@ void TrayIcon::slotSetUnread(int unread) TQString uStr=TQString::number( unread ); TQFont f=TDEGlobalSettings::generalFont(); f.setBold(true); + + // increase the size of the font for the number of unread messages if the + // icon size is less than 22 pixels + // see bug 1251 + int realIconHeight = height(); + if (realIconHeight < 22) { + f.setPointSizeFloat( f.pointSizeFloat() * 2.0 ); + } + + // decrease the size of the font for the number of unread articles if the + // number doesn't fit into the available space float pointSize=f.pointSizeFloat(); TQFontMetrics fm(f); int w=fm.width(uStr); diff --git a/akregator/src/trayicon.h b/akregator/src/trayicon.h index e491fdac..7c854666 100644 --- a/akregator/src/trayicon.h +++ b/akregator/src/trayicon.h @@ -35,27 +35,33 @@ namespace Akregator class TrayIcon : public KSystemTray { Q_OBJECT - + public: static TrayIcon* getInstance(); static void setInstance(TrayIcon* trayIcon); - + TrayIcon(TQWidget *parent = 0, const char *name = 0); ~TrayIcon(); - + TQPixmap takeScreenshot() const; virtual void mousePressEvent(TQMouseEvent *); + public slots: void settingsChanged(); void slotSetUnread(int unread); void viewButtonClicked(); - + + protected: + void resizeEvent(TQResizeEvent *); + signals: void showPart(); private: + void setUnread(int unread, bool force); + static TrayIcon* m_instance; - + TQPixmap m_defaultIcon; TQImage m_lightIconImage; int m_unread; diff --git a/kmail/kmsystemtray.cpp b/kmail/kmsystemtray.cpp index 7cb2fb43..dc5cd04f 100644 --- a/kmail/kmsystemtray.cpp +++ b/kmail/kmsystemtray.cpp @@ -133,7 +133,6 @@ void KMSystemTray::buildPopupMenu() action->plug( mPopupMenu ); mPopupMenu->insertSeparator(); - TDEMainWindow *mainWin = ::tqqt_cast(kmkernel->getKMMainWidget()->topLevelWidget()); mPopupMenu->insertItem( SmallIcon("exit"), i18n("&Quit"), this, TQT_SLOT(maybeQuit()) ); } @@ -180,6 +179,11 @@ int KMSystemTray::mode() const return mMode; } +void KMSystemTray::resizeEvent(TQResizeEvent *) +{ + updateCount(); +} + /** * Update the count of unread messages. If there are unread messages, * overlay the count on top of a transparent version of the KMail icon. @@ -196,6 +200,14 @@ void KMSystemTray::updateCount() TQFont countFont = TDEGlobalSettings::generalFont(); countFont.setBold(true); + // increase the size of the font for the number of unread messages if the + // icon size is less than 22 pixels + // see bug 1251 + int realIconHeight = height(); + if (realIconHeight < 22) { + countFont.setPointSizeFloat( countFont.pointSizeFloat() * 2.0 ); + } + // decrease the size of the font for the number of unread messages if the // number doesn't fit into the available space float countFontSize = countFont.pointSizeFloat(); diff --git a/kmail/kmsystemtray.h b/kmail/kmsystemtray.h index c63fdd1d..b689def5 100644 --- a/kmail/kmsystemtray.h +++ b/kmail/kmsystemtray.h @@ -69,6 +69,7 @@ protected: void showKMail(); void buildPopupMenu(); void updateCount(); + void resizeEvent(TQResizeEvent *); TQString prettyName(KMFolder *);