[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    KDE/kdebase/workspace/libs/plasma/widgets
From:       Matt Broadstone <mbroadst () gmail ! com>
Date:       2007-08-01 1:25:02
Message-ID: 1185931502.445160.3677.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 694895 by mbroadst:

More refactoring in preparation for text layout code

 M  +41 -32    icon.cpp  


--- trunk/KDE/kdebase/workspace/libs/plasma/widgets/icon.cpp #694894:694895
@@ -110,8 +110,9 @@
 
         void drawBackground(QPainter *painter);
         void drawForeground(QPainter *painter);
+        void drawIcon(QPainter *painter);
+        void drawText(QPainter *painter);
 
-
         void checkSvgElements()
         {
             if (svg.elementExists("background")) {
@@ -526,6 +527,43 @@
     }
 }
 
+void Icon::Private::drawIcon(QPainter *painter)
+{
+    if (!icon.isNull()) {
+        qreal iw = iconSize.width();
+        qreal ih = iconSize.height();
+        qreal deltaX = (size.width() - iw) / 2;
+        qreal deltaY = (size.height() - ih) / 2 ;
+        if (state == Private::PressedState) {
+            painter->save();
+            painter->setRenderHint(QPainter::SmoothPixmapTransform);
+            painter->scale(0.95, 0.95);
+            deltaY *= 0.95;
+            deltaX *= 0.95;
+            painter->drawPixmap((int)(deltaX + (iw * .025)), (int)(deltaY + (ih * .025)),
+                                icon.pixmap(iconSize.toSize()));
+            painter->restore();
+        } else {
+            painter->drawPixmap((int)deltaX, (int)deltaY, icon.pixmap(iconSize.toSize()));
+        }
+    }
+}
+
+void Icon::Private::drawText(QPainter *painter)
+{
+    if (!text.isEmpty()) {
+        qreal offset = (iconSize.height() + 12);     // TODO this shouldn't be hardcoded?
+        QRectF textRect(0, offset, size.width(), size.height() - offset);
+
+        QTextOption textOpt;
+        textOpt.setAlignment(Qt::AlignHCenter | Qt::AlignTop);
+        textOpt.setWrapMode(QTextOption::WordWrap);
+
+        painter->setPen(Qt::white);
+        painter->drawText(textRect, text, textOpt);
+    }
+}
+
 void Icon::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
 {
     Q_UNUSED(option)
@@ -549,26 +587,8 @@
 
     d->svg.resize(d->size);
     d->drawBackground(painter);
+    d->drawIcon(painter);
 
-    if (!d->icon.isNull()) {
-        qreal iw = d->iconSize.width();
-        qreal ih = d->iconSize.height();
-        qreal deltaX = (d->size.width() - iw) / 2;
-        qreal deltaY = (d->size.height() - ih) / 2 ;
-        if (d->state == Private::PressedState) {
-            painter->save();
-            painter->setRenderHint(QPainter::SmoothPixmapTransform);
-            painter->scale(0.95, 0.95);
-            deltaY *= 0.95;
-            deltaX *= 0.95;
-            painter->drawPixmap((int)(deltaX + (iw * .025)), (int)(deltaY + (ih * .025)),
-                                d->icon.pixmap(d->iconSize.toSize()));
-            painter->restore();
-        } else {
-            painter->drawPixmap((int)deltaX, (int)deltaY, d->icon.pixmap(d->iconSize.toSize()));
-        }
-    }
-
     d->drawForeground(painter);
 
     // Draw corner actions
@@ -579,18 +599,7 @@
     }
 
     // Draw text last because its overlayed
-    if (!d->text.isEmpty()) {
-        qreal offset = (d->iconSize.height() + 12);     // TODO this shouldn't be hardcoded?
-        QRectF textRect(0, offset, d->size.width(), d->size.height() - offset);
-
-        QTextOption textOpt;
-        textOpt.setAlignment(Qt::AlignHCenter | Qt::AlignTop);
-        textOpt.setWrapMode(QTextOption::WordWrap);
-
-        painter->setPen(Qt::white);
-        painter->drawText(textRect, d->text, textOpt);
-    }
-
+    d->drawText(painter);
 }
 
 void Icon::drawActionButtonBase(QPainter* painter, const QSize &size, int element)
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic