From 2bd97cd745bc7f08c1443c8917fde4e5ef25e7f1 Mon Sep 17 00:00:00 2001 From: Peter Penz Date: Thu, 13 Nov 2008 22:37:02 +0000 Subject: [PATCH] * get rid of magic values like QSize(20 + 5, 5) * coding style cleanups svn path=/trunk/KDE/kdebase/apps/; revision=883974 --- src/kformattedballoontipdelegate.cpp | 67 +++++++++++++++------------- src/kformattedballoontipdelegate.h | 14 +++--- 2 files changed, 45 insertions(+), 36 deletions(-) diff --git a/src/kformattedballoontipdelegate.cpp b/src/kformattedballoontipdelegate.cpp index dbcf52f8f..d221f6786 100644 --- a/src/kformattedballoontipdelegate.cpp +++ b/src/kformattedballoontipdelegate.cpp @@ -23,28 +23,35 @@ #include #include #include -#include + +KFormattedBalloonTipDelegate::KFormattedBalloonTipDelegate() +{ +} + +KFormattedBalloonTipDelegate::~KFormattedBalloonTipDelegate() +{ +} QSize KFormattedBalloonTipDelegate::sizeHint(const KStyleOptionToolTip *option, const KToolTipItem *item) const { QTextDocument doc; doc.setHtml(item->text()); - QIcon icon = item->icon(); + const QIcon icon = item->icon(); - QSize iconSize = (icon.isNull()) ? QSize(0,0) : icon.actualSize(option->decorationSize); - QSize docSize = doc.size().toSize(); + const QSize iconSize = icon.isNull() ? QSize(0, 0) : icon.actualSize(option->decorationSize); + const QSize docSize = doc.size().toSize(); QSize contentSize = iconSize + docSize; - // Re-adjust contentSize's height so that it is the maximum of the icon - // and doc sizes. - contentSize.setHeight( iconSize.height() > doc.size().height() ? iconSize.height() : doc.size().height()); - return contentSize + QSize(20+5,20+1); + // assure that the content height is large enough for the icon and the document + contentSize.setHeight(iconSize.height() > doc.size().height() ? iconSize.height() : doc.size().height()); + return contentSize + QSize(Border * 3, Border * 2); } -void KFormattedBalloonTipDelegate::paint(QPainter *painter, const KStyleOptionToolTip *option, const KToolTipItem *item) const +void KFormattedBalloonTipDelegate::paint(QPainter *painter, + const KStyleOptionToolTip *option, + const KToolTipItem *item) const { - QRect contents; - QPainterPath path = createPath(option, &contents); + QPainterPath path = createPath(*option); if (haveAlphaChannel()) { painter->setRenderHint(QPainter::Antialiasing); painter->translate(.5, .5); @@ -65,11 +72,14 @@ void KFormattedBalloonTipDelegate::paint(QPainter *painter, const KStyleOptionTo painter->drawPath(path); - QIcon icon = item->icon(); + const QIcon icon = item->icon(); + int x = Border; + const int y = Border; if (!icon.isNull()) { const QSize iconSize = icon.actualSize(option->decorationSize); - painter->drawPixmap(contents.topLeft(), icon.pixmap(iconSize)); - contents.adjust(iconSize.width() + 4, 0, 0, 0); + const QPoint pos(x + option->rect.x(), y + option->rect.y()); + painter->drawPixmap(pos, icon.pixmap(iconSize)); + x += iconSize.width() + Border; } QTextDocument doc; @@ -78,22 +88,20 @@ void KFormattedBalloonTipDelegate::paint(QPainter *painter, const KStyleOptionTo bitmap.fill(Qt::transparent); QPainter p(&bitmap); doc.drawContents(&p); - - // Ensure doc text is not stretched when icon is larger. - contents.setSize(doc.size().toSize()); - - painter->drawPixmap(contents, bitmap); + + const QRect docRect(QPoint(x, y), doc.size().toSize()); + painter->drawPixmap(docRect, bitmap); } QRegion KFormattedBalloonTipDelegate::inputShape(const KStyleOptionToolTip *option) const { - QBitmap bitmap(option->rect.size()+QSize(20,20)); + QBitmap bitmap(option->rect.size()); bitmap.fill(Qt::color0); QPainter p(&bitmap); p.setPen(QPen(Qt::color1, 1)); p.setBrush(Qt::color1); - p.drawPath(createPath(option, 0)); + p.drawPath(createPath(*option)); return QRegion(bitmap); } @@ -108,21 +116,18 @@ static inline void arc(QPainterPath &path, qreal cx, qreal cy, qreal radius, qre path.arcTo(cx-radius, cy-radius, radius * 2, radius * 2, angle, sweeplength); } -QPainterPath KFormattedBalloonTipDelegate::createPath(const KStyleOptionToolTip *option, QRect *contents) const +QPainterPath KFormattedBalloonTipDelegate::createPath(const KStyleOptionToolTip& option) const { - QPainterPath path; - QRect rect = option->rect; + const QRect rect = option.rect; const qreal radius = 5; + QPainterPath path; path.moveTo(rect.left(), rect.top() + radius); - arc(path, rect.left() + radius, rect.top() + radius, radius, 180, -90); - arc(path, rect.right() - radius, rect.top() + radius, radius, 90, -90); - arc(path, rect.right() - radius, rect.bottom() - radius, radius, 0, -90); - arc(path, rect.left() + radius, rect.bottom() - radius, radius, 270, -90); + arc(path, rect.left() + radius, rect.top() + radius, radius, 180, -90); + arc(path, rect.right() - radius, rect.top() + radius, radius, 90, -90); + arc(path, rect.right() - radius, rect.bottom() - radius, radius, 0, -90); + arc(path, rect.left() + radius, rect.bottom() - radius, radius, 270, -90); path.closeSubpath(); - if (contents) - *contents = rect.adjusted(radius, radius, -radius, -radius); - return path; } diff --git a/src/kformattedballoontipdelegate.h b/src/kformattedballoontipdelegate.h index 362a69095..64f823a41 100644 --- a/src/kformattedballoontipdelegate.h +++ b/src/kformattedballoontipdelegate.h @@ -27,15 +27,19 @@ class KFormattedBalloonTipDelegate : public KToolTipDelegate { public: - KFormattedBalloonTipDelegate() {} - virtual ~KFormattedBalloonTipDelegate() {} + KFormattedBalloonTipDelegate(); + virtual ~KFormattedBalloonTipDelegate(); virtual QSize sizeHint(const KStyleOptionToolTip *option, const KToolTipItem *item) const; virtual void paint(QPainter *painter, const KStyleOptionToolTip *option, const KToolTipItem *item) const; - QRegion inputShape(const KStyleOptionToolTip *option) const; - QRegion shapeMask(const KStyleOptionToolTip *option) const; + virtual QRegion inputShape(const KStyleOptionToolTip *option) const; + virtual QRegion shapeMask(const KStyleOptionToolTip *option) const; - QPainterPath createPath(const KStyleOptionToolTip *option, QRect *contents) const; +private: + QPainterPath createPath(const KStyleOptionToolTip& option) const; + +private: + enum { Border = 8 }; }; #endif -- 2.47.3