<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array">
    <added>
      <filename>view/blur.cpp</filename>
    </added>
  </added>
  <modified type="array">
    <modified>
      <diff>@@ -25,6 +25,7 @@ set(raptor_SRCS
     view/raptoritemdelegate.cpp
     view/raptorgraphicswidget.cpp
     view/raptorscrollbutton.cpp
+    view/blur.cpp
     engine/kickoff/applicationmodel.cpp
     engine/kickoff/kickoffabstractmodel.cpp
     engine/kickoff/models.cpp</diff>
      <filename>CMakeLists.txt</filename>
    </modified>
    <modified>
      <diff>@@ -20,8 +20,9 @@
 //KDE
 #include &lt;KDebug&gt;
 
+#include &quot;blur.cpp&quot; //TODO: make this a function in Plasma::PaintUtils
 
-const int ANIMATION_DURATION = 500; // ms
+const int ANIMATION_DURATION = 500; // ms FIXME make me shorter
 
 class RaptorItemDelegate::Private
 {
@@ -29,11 +30,11 @@ class RaptorItemDelegate::Private
         Private(RaptorItemDelegate *q):
                 q(q),
                 timeLine(new QTimeLine(ANIMATION_DURATION, q)),
-                textColor(QColor())
-
+                textColor(QColor()),
+				i(0)
                 {}
         ~Private()
-                {}
+                { delete i; }
 
     RaptorItemDelegate *q;
     QStyleOptionViewItemV4 optV4;
@@ -42,6 +43,7 @@ class RaptorItemDelegate::Private
     int frame;
     QModelIndex index;
     QColor textColor;
+	QImage *i;
 };
 
 RaptorItemDelegate::RaptorItemDelegate(QObject *parent) : QStyledItemDelegate(parent),
@@ -65,6 +67,7 @@ void RaptorItemDelegate::paint(QPainter *painter, const QStyleOptionViewItem &amp; o
     initStyleOption(&amp;d-&gt;optV4, index);
     d-&gt;view = qobject_cast&lt;const QAbstractItemView*&gt;(d-&gt;optV4.widget);
 
+    generateBgPixmap(); // TODO Bg --&gt; Background
 
     painter-&gt;setRenderHint(QPainter::Antialiasing);
     painter-&gt;setPen(Qt::NoPen);
@@ -85,32 +88,47 @@ void RaptorItemDelegate::paint(QPainter *painter, const QStyleOptionViewItem &amp; o
             d-&gt;timeLine-&gt;setFrameRange(0, 20);
             d-&gt;timeLine-&gt;start();
         }
-		QLinearGradient lg(0, d-&gt;optV4.rect.y(), 0, d-&gt;optV4.rect.height());
-		lg.setColorAt(0.0, Qt::red);
-		lg.setColorAt(1.0, Qt::green);
-        //d-&gt;optV4.decorationSize = QSize(d-&gt;animatedSize, d-&gt;animatedSize);
-		painter-&gt;save();
-		painter-&gt;setBrush(lg);
-		painter-&gt;setOpacity(qreal(d-&gt;frame)*5.0/100.0); //TODO: make me faster - QPixmap hack
-		painter-&gt;drawRect(d-&gt;optV4.rect);
-		painter-&gt;restore();
+
+        painter-&gt;save();
+        painter-&gt;setOpacity(qreal(d-&gt;frame)*5.0/100.0); //TODO: make me faster - QPixmap hack
+        painter-&gt;drawImage(d-&gt;optV4.rect, *d-&gt;i);
+        painter-&gt;restore();
 
     }
 
     if (d-&gt;optV4.state &amp; QStyle::State_Selected) {
-        d-&gt;optV4.decorationSize *= 2;
+        painter-&gt;drawImage(d-&gt;optV4.rect, *d-&gt;i);
     }
 
     if (d-&gt;textColor != QColor()) {
         d-&gt;optV4.palette.setColor(QPalette::Text, d-&gt;textColor);
     }
 
-//     kDebug()&lt;&lt;d-&gt;optV4.decorationSize;
     QStyledItemDelegate::paint(painter, d-&gt;optV4, index);
 
 
 }
 
+void RaptorItemDelegate::generateBgPixmap() const // TODO find a way to make this themable, preferrably via SVG.
+{
+    if (!d-&gt;i) { // it's an expensive operation, so let's keep a cached pixmap. TODO: profile and eventually share it across items. TODO cache QPixmap instead.
+//         d-&gt;pixmap = new QPixmap;
+        d-&gt;i = new QImage(d-&gt;optV4.decorationSize, QImage::Format_ARGB32_Premultiplied);
+        d-&gt;i-&gt;fill(0);
+        QPainter p(d-&gt;i);
+        p.setOpacity(0.41);
+        QLinearGradient lg(0, 0, 0,  d-&gt;optV4.decorationSize.height());
+        lg.setColorAt(0.0, QColor(255, 255, 255, 255));
+        lg.setColorAt(1.0, QColor(255, 255, 255, 39));
+        p.setBrush(lg);
+        p.drawRect(0, 0, d-&gt;optV4.decorationSize.width(),  d-&gt;optV4.decorationSize.height());
+
+        expblur&lt;16, 7&gt;(*d-&gt;i, 7);
+
+//         d-&gt;pixmap-&gt;fromImage(i); FIXME use the right conversion
+    }
+}
+
 void RaptorItemDelegate::animatePaint(int frame)
 {
     d-&gt;frame = frame;</diff>
      <filename>view/raptoritemdelegate.cpp</filename>
    </modified>
    <modified>
      <diff>@@ -28,6 +28,7 @@ class RaptorItemDelegate : public QStyledItemDelegate
         void animatePaint(int);
 
     private:
+    	void generateBgPixmap() const;
         class Private;
         Private *d;
 };</diff>
      <filename>view/raptoritemdelegate.h</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>1604a5fff346efa40d9bce568b2a0e44f51791d1</id>
    </parent>
  </parents>
  <author>
    <name>Riccardo Iaconelli</name>
    <email>riccardo@kde.org</email>
  </author>
  <url>http://github.com/ruphy/raptor/commit/ac0a0aa95390ac575258f2e37e99a621c2f5c1c9</url>
  <id>ac0a0aa95390ac575258f2e37e99a621c2f5c1c9</id>
  <committed-date>2008-09-20T11:45:15-07:00</committed-date>
  <authored-date>2008-09-20T11:44:51-07:00</authored-date>
  <message>paint nicer background, almost final.

Signed-off-by: Riccardo Iaconelli &lt;riccardo@kde.org&gt;</message>
  <tree>522d5feb47127d5c9bec6e288200553b1d998da8</tree>
  <committer>
    <name>Riccardo Iaconelli</name>
    <email>riccardo@kde.org</email>
  </committer>
</commit>
