From kde-commits Fri Sep 30 21:52:09 2011 From: "R.F. Pels" Date: Fri, 30 Sep 2011 21:52:09 +0000 To: kde-commits Subject: [kontaminuti] src: show remaining time in icon Message-Id: <20110930215209.EBA66A60A6 () git ! kde ! org> X-MARC-Message: https://marc.info/?l=kde-commits&m=131741958802915 Git commit 44f7a9006c34b1df53bfaff17f63304bcfed338f by R.F. Pels. Committed on 30/09/2011 at 22:36. Pushed by ruurd into branch 'master'. show remaining time in icon M +39 -1 src/toplevel.cpp M +1 -0 src/toplevel.h http://commits.kde.org/kontaminuti/44f7a9006c34b1df53bfaff17f63304bcfed338f diff --git a/src/toplevel.cpp b/src/toplevel.cpp index 9875cda..e7db3cc 100644 --- a/src/toplevel.cpp +++ b/src/toplevel.cpp @@ -30,6 +30,7 @@ #include #include #include +#include #include #include #include @@ -37,6 +38,7 @@ TopLevel::TopLevel(const KAboutData *aboutData, const QString &icon, QWidget *parent) : KStatusNotifierItem(parent), + m_iconname(icon), m_popup(new KPassivePopup), m_runningTomatoTime(0), m_nextNotificationTime(0) @@ -240,7 +242,43 @@ void TopLevel::repaintTrayIcon() { if (m_runningTomatoTime != 0 && m_usevisualize) { - setOverlayIconByName(QLatin1String("task-ongoing")); + int oldWidth = 22; + + QString countStr = QString::number(m_runningTomatoTime / 60); + QFont f = KGlobalSettings::generalFont(); + f.setBold(true); + + float pointSize = f.pointSizeF(); + QFontMetrics fm(f); + int w = fm.width(countStr); + if (w > (oldWidth - 2) ) + { + pointSize *= float(oldWidth - 2) / float(w); + f.setPointSizeF(pointSize); + } + + // overlay + QPixmap overlayImg = KIcon(m_iconname).pixmap(22, 22); + QPainter p(&overlayImg); + p.setFont(f); + KColorScheme scheme(QPalette::Active, KColorScheme::View); + + fm = QFontMetrics(f); + QRect boundingRect = fm.tightBoundingRect(countStr); + boundingRect.adjust(0, 0, 0, 2); + boundingRect.setHeight(qMin(boundingRect.height(), oldWidth)); + boundingRect.moveTo((oldWidth - boundingRect.width()) / 2, ((oldWidth - boundingRect.height()) / 2) - 1); + p.setOpacity(0.7); + QBrush br(QColor(255, 255, 255), Qt::SolidPattern); + p.setBrush(br); + p.setPen(QColor(255, 255, 255)); + p.drawRoundedRect(boundingRect, 2.0, 2.0); + + p.setBrush(Qt::NoBrush); + p.setPen(QColor(0, 0, 0)); + p.setOpacity(1.0); + p.drawText(overlayImg.rect(), Qt::AlignCenter, countStr); + setIconByPixmap(overlayImg); } else { diff --git a/src/toplevel.h b/src/toplevel.h index 7324401..4412630 100644 --- a/src/toplevel.h +++ b/src/toplevel.h @@ -63,6 +63,7 @@ private: void setTooltipText(const QString& content); private: + QString m_iconname; QList m_tomatolist; QAction *m_stopAct, *m_confAct, *m_anonAct, *m_exitAct; QActionGroup *m_tomatoActionGroup;