diff -r ff572dfe6d86 -r 9674c1a575e9 idlehomescreen/widgetmanager/src/wminstaller.cpp --- a/idlehomescreen/widgetmanager/src/wminstaller.cpp Fri Mar 12 15:41:49 2010 +0200 +++ b/idlehomescreen/widgetmanager/src/wminstaller.cpp Mon Mar 15 12:39:47 2010 +0200 @@ -20,6 +20,7 @@ #include "wminstaller.h" #include "wmwidgetdata.h" +#include "wmplugin.h" // CONSTANTS @@ -29,9 +30,9 @@ // CWmInstaller::NewL // --------------------------------------------------------- // -CWmInstaller* CWmInstaller::NewL() +CWmInstaller* CWmInstaller::NewL( CWmPlugin& aWmPlugin ) { - CWmInstaller* self = CWmInstaller::NewLC(); + CWmInstaller* self = CWmInstaller::NewLC( aWmPlugin ); CleanupStack::Pop(); // self; return self; } @@ -40,9 +41,9 @@ // CWmInstaller::NewLC // --------------------------------------------------------- // -CWmInstaller* CWmInstaller::NewLC() +CWmInstaller* CWmInstaller::NewLC( CWmPlugin& aWmPlugin ) { - CWmInstaller* self = new ( ELeave ) CWmInstaller(); + CWmInstaller* self = new ( ELeave ) CWmInstaller( aWmPlugin ); CleanupStack::PushL(self); self->ConstructL(); return self; @@ -52,7 +53,9 @@ // CWmInstaller::CWmInstaller // --------------------------------------------------------- // -CWmInstaller::CWmInstaller() : CActive( EPriorityStandard ) +CWmInstaller::CWmInstaller( CWmPlugin& aWmPlugin ) : + CActive( EPriorityStandard ), + iWmPlugin( aWmPlugin ) { iUid = KNullUid; iIdle = NULL; @@ -107,6 +110,16 @@ // void CWmInstaller::RunL() { + // error has occurred, stop uninstallation animation. + if ( iStatus != KErrNone ) + { + CWmWidgetData* widget = iWmPlugin.GetUninstalledWidgetByUid( iUid ); + if ( widget ) + { + widget->StopUninstallAnimationL(); + } + } + // close SWI session if ( iIdle && iIdle->IsActive() ) {