diff options
author | Javier S. Pedro <maemo@javispedro.com> | 2011-10-17 00:08:17 +0200 |
---|---|---|
committer | Javier S. Pedro <maemo@javispedro.com> | 2011-10-17 00:08:17 +0200 |
commit | 5db79919b3140673f66c9da5965b54671e8f4b6a (patch) | |
tree | 6ac03eba5721027e0a46182412b608236b070760 | |
parent | e86bf7a875ed3decda48fc146598a19685a4a27d (diff) | |
download | sowatch-5db79919b3140673f66c9da5965b54671e8f4b6a.tar.gz sowatch-5db79919b3140673f66c9da5965b54671e8f4b6a.zip |
Simplify notification rendering code usign QTextOption
-rw-r--r-- | metawatch/metawatchdigital.cpp | 44 |
1 files changed, 19 insertions, 25 deletions
diff --git a/metawatch/metawatchdigital.cpp b/metawatch/metawatchdigital.cpp index df7d015..8a81f97 100644 --- a/metawatch/metawatchdigital.cpp +++ b/metawatch/metawatchdigital.cpp @@ -260,7 +260,8 @@ void MetaWatchDigital::renderNotification(Notification *n) const int iconY = margin; const int titleY = margin*2 + iconH; const int dateX = x + iconW + margin; - int textFlags; + QTextOption option; + QRect rect, titleRect; QString text; p.begin(this); @@ -269,40 +270,33 @@ void MetaWatchDigital::renderNotification(Notification *n) p.drawImage(x, iconY, icon); p.setPen(Qt::black); + option.setWrapMode(QTextOption::WrapAtWordBoundaryOrAnywhere); + option.setAlignment(Qt::AlignRight | Qt::AlignVCenter); + // Render "N minutes ago" p.setFont(sf); - textFlags = Qt::AlignRight | Qt::AlignVCenter | Qt::TextWordWrap; + rect.setRect(dateX, iconY, (screenWidth - dateX) - margin, iconH); text = n->displayTime(); - QRect dateRect(dateX, iconY, (screenWidth - dateX) - margin, iconH); - p.drawText(dateRect, textFlags, text); + p.drawText(rect, text, option); + option.setAlignment(Qt::AlignLeft | Qt::AlignTop); + + // Render title p.setFont(lf); - textFlags = Qt::AlignLeft | Qt::AlignTop | Qt::TextWordWrap; + rect.setRect(x, titleY, screenWidth - x*2, screenHeight - titleY); text = n->title(); + titleRect = p.boundingRect(rect, text, option).toRect(); + p.drawText(rect, text, option); - QRect titleMaxRect(x, titleY, screenWidth - x*2, screenHeight - titleY); - QRect titleRect = p.boundingRect(titleMaxRect, textFlags, text); - if (titleRect.width() > titleMaxRect.width()) { - textFlags = Qt::AlignLeft | Qt::AlignTop | Qt::TextWrapAnywhere; - titleRect = p.boundingRect(titleMaxRect, textFlags, text); - } - - p.drawText(titleMaxRect, textFlags, text); - - p.setFont(mf); - textFlags = Qt::AlignLeft | Qt::AlignTop | Qt::TextWordWrap; - text = n->body(); - + // Do not try to draw body if title was large int bodyY = titleRect.y() + titleRect.height(); if (bodyY >= screenHeight) return; - QRect bodyMaxRect(x, bodyY, titleMaxRect.width(), screenHeight - bodyY); - QRect bodyRect = p.boundingRect(bodyMaxRect, textFlags, text); - if (bodyRect.width() > bodyMaxRect.width()) { - textFlags = Qt::AlignLeft | Qt::AlignTop | Qt::TextWrapAnywhere; - } - - p.drawText(bodyMaxRect, textFlags, text); + // Render body + p.setFont(mf); + rect.setRect(x, bodyY, screenWidth - x*2, screenHeight - bodyY); + text = n->body(); + p.drawText(rect, text, option); p.end(); _paintMode = _currentMode; |