emailuis/nmailui/src/nmuieffects.cpp
changeset 43 99bcbff212ad
parent 23 2dc6caa42ec3
child 47 f83bd4ae1fe3
--- a/emailuis/nmailui/src/nmuieffects.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/emailuis/nmailui/src/nmuieffects.cpp	Fri May 28 13:56:43 2010 +0300
@@ -32,6 +32,7 @@
     mSendAnimationScreenShot(NULL),
     mDoSendAnimation(false)
 {
+    NM_FUNCTION;
 }
 
 /*!
@@ -39,6 +40,8 @@
 */
 NmUiEffects::~NmUiEffects()
 {
+    NM_FUNCTION;
+    
     // Clean send animation if sendAnimationComplete slot is not called for some reason.
     // E.g. red key pressed.
     resetSendAnimation();
@@ -49,6 +52,8 @@
 */
 void NmUiEffects::prepareEffect(NmUiEffectType effect)
 {
+    NM_FUNCTION;
+    
     switch (effect) {
     case NmEditorSendMessageAnimation:
         // delete any existing stuff
@@ -65,6 +70,9 @@
         mSendAnimationScreenShot->hide();
         mSendAnimationScreenShot->setPos(0,0);
         mSendAnimationScreenShot->setZValue(0);
+
+        // Adds or moves the item and all its childen to this scene.
+        // This scene takes ownership of the item.
         mMainWindow.scene()->addItem(mSendAnimationScreenShot);
 
         // Set editor screen capture visible before old view is popped.
@@ -81,6 +89,8 @@
 */
 void NmUiEffects::startEffect(NmUiEffectType effect)
 {
+    NM_FUNCTION;
+    
     switch (effect) {
     case NmEditorSendMessageAnimation:
         // Send message animation for editor view.
@@ -99,6 +109,8 @@
  */
 QGraphicsPixmapItem *NmUiEffects::screenShot()
 {
+    NM_FUNCTION;
+    
     // Grab whole view into pixmap image (also chrome is included)
     QPixmap screenCapture = QPixmap::grabWindow(mMainWindow.internalWinId());
 
@@ -122,9 +134,16 @@
  */
 void NmUiEffects::resetSendAnimation()
 {
+    NM_FUNCTION;
+    
     if (mSendAnimationScreenShot) {
         // Clean send animation
         HbEffect::remove(mSendAnimationScreenShot, SendAnimation, "mail_send");
+        // Ownership of QGraphicsPixmapItem is tranferred to GraphicsScene when it has been added
+        // to it GraphicsScene.
+        // GraphicsPixmapItem needs to be removed from the GraphicsScene before deleting
+        // it to prevent double deletion.
+        mMainWindow.scene()->removeItem(mSendAnimationScreenShot);
         delete mSendAnimationScreenShot;
         mSendAnimationScreenShot = NULL;
         mDoSendAnimation = false;
@@ -136,6 +155,8 @@
 */
 void NmUiEffects::sendAnimationComplete(HbEffect::EffectStatus status)
 {
+    NM_FUNCTION;
+    
     Q_UNUSED(status);
     resetSendAnimation();
 }