phoneuis/bubblemanager2/bubblecore/src/bubblemanager2.cpp
branchGCC_SURGE
changeset 51 f39ed5e045e0
parent 30 ebdbd102c78a
parent 46 bc5a64e5bc3c
--- a/phoneuis/bubblemanager2/bubblecore/src/bubblemanager2.cpp	Tue Jun 15 14:14:38 2010 +0100
+++ b/phoneuis/bubblemanager2/bubblecore/src/bubblemanager2.cpp	Thu Jul 22 16:33:21 2010 +0100
@@ -24,6 +24,7 @@
 #include <hbaction.h>
 #include <hbstackedlayout.h>
 #include <hbmainwindow.h>
+#include <hbstyleloader.h>
 
 #include "bubblemanager2.h"
 #include "bubbleheader.h"
@@ -145,7 +146,9 @@
     }
 
     if (!mActiveHeaders.count()) {
+        // all calls ended
         mBubbleImageManager->releasePixmaps();
+        releaseNonCachedViews();
     }
 
     // restore mute state
@@ -549,6 +552,7 @@
         } else if (!muted && mMuted) {
             mEffectHandler->startEffect(BubbleMutedDisappear);
         } else {
+            mEffectHandler->cancelAllEffects(mMutedIcon);
             mMutedIcon->setVisible(muted);
         }
     }
@@ -925,3 +929,26 @@
     }
 }
 
+void BubbleManager::releaseNonCachedViews()
+{
+    static const int viewCount = 3;
+    static const int views[viewCount] = {
+        BubbleWidgetManager::TwoCallsView,
+        BubbleWidgetManager::ThreeCallsView,
+        BubbleWidgetManager::ConferenceView
+    };
+
+    for (int i=0; i < viewCount; i++ ) {
+        BubbleWidgetManager::View viewid =
+            (BubbleWidgetManager::View)views[i];
+
+        if (mWidgetManager->isLoaded(viewid)) {
+            QGraphicsWidget* view = mWidgetManager->view(viewid);
+
+            if (view) {
+                removeFromLayout(view);
+                mWidgetManager->releaseView(viewid);
+            }
+        }
+    }
+}