--- 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
// ----------------------------------------------------------------------------
//