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

List:       kde-commits
Subject:    KDE/kdebase/workspace/plasma/netbook/containments/newspaper
From:       Marco Martin <notmart () gmail ! com>
Date:       2010-02-10 18:29:31
Message-ID: 1265826571.668169.21960.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 1088399 by mart:

ll the animation creation code in the same function, besides being prettier now it \
actually works


 M  +46 -87    applettitlebar.cpp  
 M  +1 -0      applettitlebar.h  


--- trunk/KDE/kdebase/workspace/plasma/netbook/containments/newspaper/applettitlebar.cpp \
#1088398:1088399 @@ -87,6 +87,37 @@
     delete m_animations.data();
 }
 
+
+void AppletTitleBar::initAnimations()
+{
+    if (m_animations) {
+        return;
+    }
+
+    m_animations = new QParallelAnimationGroup(this);
+    QParallelAnimationGroup *group = m_animations.data();
+
+    if (m_applet->hasValidAssociatedApplication()) {
+        Plasma::Animation *maximizeAnim =
+        Plasma::Animator::create(Plasma::Animator::PixmapTransitionAnimation);
+        maximizeAnim->setProperty("startPixmap", m_icons->pixmap("maximize"));
+        maximizeAnim->setTargetWidget(this);
+        group->addAnimation(maximizeAnim);
+    }
+
+    Plasma::Animation *confAnim =
+        Plasma::Animator::create(Plasma::Animator::PixmapTransitionAnimation);
+    Plasma::Animation *closeAnim =
+        Plasma::Animator::create(Plasma::Animator::PixmapTransitionAnimation);
+    confAnim->setProperty("startPixmap", m_icons->pixmap("configure"));
+    confAnim->setTargetWidget(this);
+
+    closeAnim->setProperty("startPixmap", m_icons->pixmap("close"));
+    closeAnim->setTargetWidget(this);
+    group->addAnimation(confAnim);
+    group->addAnimation(closeAnim);
+}
+
 void AppletTitleBar::syncMargins()
 {
     const int extraMargin = 2;
@@ -164,100 +195,26 @@
         m_showButtons = true;
         syncIconRects();
 
-        if (!m_animations.data()) {
-            QParallelAnimationGroup *group = new QParallelAnimationGroup(this);
-            if (m_applet->hasValidAssociatedApplication()) {
-                Plasma::Animation *maximizeAnim =
-                Plasma::Animator::create(Plasma::Animator::PixmapTransitionAnimation);
                
-                maximizeAnim->setProperty("startPixmap", \
                m_icons->pixmap("maximize"));
-                maximizeAnim->setTargetWidget(this);
-                group->addAnimation(maximizeAnim);
-            }
+        if (!m_animations) {
+            initAnimations();
 
-            Plasma::Animation *confAnim =
-                Plasma::Animator::create(Plasma::Animator::PixmapTransitionAnimation);
                
-            Plasma::Animation *closeAnim =
-                Plasma::Animator::create(Plasma::Animator::PixmapTransitionAnimation);
                
-            confAnim->setProperty("startPixmap", m_icons->pixmap("configure"));
-            confAnim->setTargetWidget(this);
-
-            closeAnim->setProperty("startPixmap", m_icons->pixmap("close"));
-            closeAnim->setTargetWidget(this);
-            group->addAnimation(confAnim);
-            group->addAnimation(closeAnim);
-
-            group->start();
-            m_animations = group;
-            connect(group, SIGNAL(finished()), this, SLOT(animationFinished()));
+            m_animations.data()->start();
+            connect(m_animations.data(), SIGNAL(finished()), this, \
SLOT(animationFinished()));  } else {
             QParallelAnimationGroup *group = m_animations.data();
-            if (group) {
-                if (group->state() == QAbstractAnimation::Running && \
                group->direction() ==
-                        QAbstractAnimation::Forward) {
-                    group->stop();
-                } else if (group->direction() == QAbstractAnimation::Backward) {
-                    if (group->state() == QAbstractAnimation::Running) {
-                        group->stop();
-                    }
 
-                    if (m_applet->hasValidAssociatedApplication()) {
-                        Plasma::Animation *maximizeAnim =
-                        \
                Plasma::Animator::create(Plasma::Animator::PixmapTransitionAnimation);
                
-                        maximizeAnim->setProperty("startPixmap", \
                m_icons->pixmap("maximize"));
-                        maximizeAnim->setTargetWidget(this);
-                        group->addAnimation(maximizeAnim);
-                    }
+            group->stop();
+            group->setCurrentTime(0);
 
-                    Plasma::Animation *confAnim =
-                        \
                Plasma::Animator::create(Plasma::Animator::PixmapTransitionAnimation);
                
-                    Plasma::Animation *closeAnim =
-                        \
                Plasma::Animator::create(Plasma::Animator::PixmapTransitionAnimation);
                
-                    confAnim->setProperty("startPixmap", \
                m_icons->pixmap("configure"));
-                    confAnim->setTargetWidget(this);
-
-                    closeAnim->setProperty("startPixmap", m_icons->pixmap("close"));
-                    closeAnim->setTargetWidget(this);
-                    group = new QParallelAnimationGroup;
-                    group->addAnimation(closeAnim);
-                    group->addAnimation(confAnim);
-                    group->setDirection(QAbstractAnimation::Forward);
-                    m_animations = group;
-                }
-                group->start();
-            }
+            group->start();
         }
 
     } else if (event->type() == QEvent::GraphicsSceneHoverLeave) {
         m_underMouse = false;
+        initAnimations();
         QParallelAnimationGroup *group = m_animations.data();
-        if (group) {
-            group->setDirection(QAbstractAnimation::Backward);
-            group->start(QAbstractAnimation::DeleteWhenStopped);
-        } else {
-            QParallelAnimationGroup *group = new QParallelAnimationGroup(this);
-
-            if (m_applet->hasValidAssociatedApplication()) {
-                Plasma::Animation *maximizeAnim =
-                Plasma::Animator::create(Plasma::Animator::PixmapTransitionAnimation);
                
-                maximizeAnim->setProperty("startPixmap", \
                m_icons->pixmap("maximize"));
-                maximizeAnim->setTargetWidget(this);
-                group->addAnimation(maximizeAnim);
-            }
-
-            Plasma::Animation *confAnim =
-                Plasma::Animator::create(Plasma::Animator::PixmapTransitionAnimation);
                
-            Plasma::Animation *closeAnim =
-                Plasma::Animator::create(Plasma::Animator::PixmapTransitionAnimation);
                
-            confAnim->setProperty("startPixmap", m_icons->pixmap("configure"));
-            confAnim->setTargetWidget(this);
-
-            closeAnim->setProperty("startPixmap", m_icons->pixmap("close"));
-            closeAnim->setTargetWidget(this);
-            group->addAnimation(closeAnim);
-            group->addAnimation(confAnim);
-            group->setDirection(QAbstractAnimation::Backward);
-            group->start(QAbstractAnimation::DeleteWhenStopped);
-        }
+        group->setDirection(QAbstractAnimation::Backward);
+        group->start(QAbstractAnimation::DeleteWhenStopped);
     }
 
     return false;
@@ -384,9 +341,11 @@
             if (group) {
                 if (group->state() == QAbstractAnimation::Running) {
                     QAbstractAnimation *closeAnim = group->animationAt(i);
-                    ++i;
-                    QPixmap animPixmap = \
                qvariant_cast<QPixmap>(closeAnim->property("currentPixmap"));
-                    painter->drawPixmap(m_closeButtonRect, animPixmap, \
animPixmap.rect()); +                    if (closeAnim) {
+                        ++i;
+                        QPixmap animPixmap = \
qvariant_cast<QPixmap>(closeAnim->property("currentPixmap")); +                       \
painter->drawPixmap(m_closeButtonRect, animPixmap, animPixmap.rect()); +              \
                }
                 } else if (group->state() == QAbstractAnimation::Stopped && \
group->direction() != QAbstractAnimation::Backward) {  m_icons->paint(painter, \
m_closeButtonRect, "close");  }
--- trunk/KDE/kdebase/workspace/plasma/netbook/containments/newspaper/applettitlebar.h \
#1088398:1088399 @@ -55,6 +55,7 @@
     void mouseReleaseEvent(QGraphicsSceneMouseEvent *event);
     void resizeEvent(QGraphicsSceneResizeEvent *event);
     void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget \
*widget); +    void initAnimations();
     /*void hoverEnterEvent(QGraphicsSceneHoverEvent *event);
     void hoverLeaveEvent(QGraphicsSceneHoverEvent *event);*/
 


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

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