diff -r 5315654608de -r 08c6ee43b396 idlehomescreen/hscontentcontrol/src/hscontentcontrolfactory.cpp --- a/idlehomescreen/hscontentcontrol/src/hscontentcontrolfactory.cpp Thu Jan 07 12:39:41 2010 +0200 +++ b/idlehomescreen/hscontentcontrol/src/hscontentcontrolfactory.cpp Mon Jan 18 20:10:36 2010 +0200 @@ -22,6 +22,7 @@ // User include files #include "hscontentcontrolfactory.h" #include "hscontentcontrolecomlistener.h" +#include "hscontentcontroluninstallmonitor.h" // Local constants @@ -78,6 +79,9 @@ CHsContentControlEComListener::NewL( *this ); REComSession::ListImplementationsL( KInterfaceUidContentController, iImplArray ); + + iHsContentControlUninstallMonitor = + CHsContentControlUninstallMonitor::NewL( *this ); } // ---------------------------------------------------------------------------- @@ -97,7 +101,9 @@ iImplArray.ResetAndDestroy(); iImplArray.Close(); iHsContentControlUis.ResetAndDestroy(); + delete iHsContentControlEComListener; + delete iHsContentControlUninstallMonitor; } // --------------------------------------------------------------------------------- @@ -157,7 +163,7 @@ { CHsContentControlUi* cc( iHsContentControlUis[ i ] ); - if ( cc->ContentControlType().CompareF( aControlType ) == 0 ) + if ( cc->ContentControlType().CompareF( aControlType ) == 0 ) { return cc; } @@ -180,6 +186,30 @@ } // ---------------------------------------------------------------------------- +// CHsContentControlFactory::HandleUninstallEvent() +// ---------------------------------------------------------------------------- +// +void CHsContentControlFactory::HandleUninstallEvent( const TUid& aPkgUid ) + { + // ignore event if no plugin loaded. + if ( iHsContentControlUis.Count() > 0 ) + { + for( TInt index( iHsContentControlUis.Count() - 1 ); index >= 0; --index ) + { + CHsContentControlUi* cc( iHsContentControlUis[ index ] ); + // ImplUid of plugin must match Sis pkg uid + if ( cc && cc->ImplUid() == aPkgUid ) + { + iHsContentControlUis.Remove( index ); + delete cc; + cc = NULL; + break; + } + } + } + } + +// ---------------------------------------------------------------------------- // CHsContentControlFactory::CheckPluginChangesL // ---------------------------------------------------------------------------- //