idlehomescreen/hscontentcontrol/src/hscontentcontrolfactory.cpp
changeset 2 08c6ee43b396
parent 1 5315654608de
child 9 f966699dea19
equal deleted inserted replaced
1:5315654608de 2:08c6ee43b396
    20 #include <ecom/implementationinformation.h>
    20 #include <ecom/implementationinformation.h>
    21 
    21 
    22 // User include files
    22 // User include files
    23 #include "hscontentcontrolfactory.h"
    23 #include "hscontentcontrolfactory.h"
    24 #include "hscontentcontrolecomlistener.h"
    24 #include "hscontentcontrolecomlistener.h"
       
    25 #include "hscontentcontroluninstallmonitor.h"
    25 
    26 
    26 // Local constants
    27 // Local constants
    27 
    28 
    28 // Content controller ECom interface UID
    29 // Content controller ECom interface UID
    29 const TUid KInterfaceUidContentController = { 0x20026F51 };
    30 const TUid KInterfaceUidContentController = { 0x20026F51 };
    76     {
    77     {
    77     iHsContentControlEComListener = 
    78     iHsContentControlEComListener = 
    78             CHsContentControlEComListener::NewL( *this );
    79             CHsContentControlEComListener::NewL( *this );
    79     REComSession::ListImplementationsL( 
    80     REComSession::ListImplementationsL( 
    80             KInterfaceUidContentController, iImplArray );
    81             KInterfaceUidContentController, iImplArray );
       
    82     
       
    83     iHsContentControlUninstallMonitor = 
       
    84             CHsContentControlUninstallMonitor::NewL( *this );
    81     }
    85     }
    82 
    86 
    83 // ----------------------------------------------------------------------------
    87 // ----------------------------------------------------------------------------
    84 // CHsContentControlFactory::CHsContentControlFactory()
    88 // CHsContentControlFactory::CHsContentControlFactory()
    85 // ----------------------------------------------------------------------------
    89 // ----------------------------------------------------------------------------
    95 EXPORT_C CHsContentControlFactory::~CHsContentControlFactory()
    99 EXPORT_C CHsContentControlFactory::~CHsContentControlFactory()
    96     {
   100     {
    97     iImplArray.ResetAndDestroy();
   101     iImplArray.ResetAndDestroy();
    98     iImplArray.Close();
   102     iImplArray.Close();
    99     iHsContentControlUis.ResetAndDestroy();
   103     iHsContentControlUis.ResetAndDestroy();
       
   104     
   100 	delete iHsContentControlEComListener;
   105 	delete iHsContentControlEComListener;
       
   106     delete iHsContentControlUninstallMonitor;
   101     }
   107     }
   102 
   108 
   103 // ---------------------------------------------------------------------------------
   109 // ---------------------------------------------------------------------------------
   104 // CHsContentControlFactory::GetHsContentController()
   110 // CHsContentControlFactory::GetHsContentController()
   105 // ---------------------------------------------------------------------------------
   111 // ---------------------------------------------------------------------------------
   155     {       
   161     {       
   156     for ( TInt i = 0; i < iHsContentControlUis.Count(); i++ )
   162     for ( TInt i = 0; i < iHsContentControlUis.Count(); i++ )
   157         {
   163         {
   158         CHsContentControlUi* cc( iHsContentControlUis[ i ] );
   164         CHsContentControlUi* cc( iHsContentControlUis[ i ] );
   159         
   165         
   160         if ( cc->ContentControlType().CompareF( aControlType ) == 0 )                
   166         if ( cc->ContentControlType().CompareF( aControlType ) == 0 )
   161             {
   167             {
   162             return cc;
   168             return cc;
   163             } 
   169             } 
   164         }
   170         }
   165     
   171     
   174     {
   180     {
   175     // ignore event if no plugin loaded.
   181     // ignore event if no plugin loaded.
   176     if ( iHsContentControlUis.Count() > 0 )
   182     if ( iHsContentControlUis.Count() > 0 )
   177         {
   183         {
   178         TRAP_IGNORE( CheckPluginChangesL(); );
   184         TRAP_IGNORE( CheckPluginChangesL(); );
       
   185         }
       
   186     }
       
   187 
       
   188 // ----------------------------------------------------------------------------
       
   189 // CHsContentControlFactory::HandleUninstallEvent()
       
   190 // ----------------------------------------------------------------------------
       
   191 //
       
   192 void CHsContentControlFactory::HandleUninstallEvent( const TUid& aPkgUid )
       
   193     {
       
   194     // ignore event if no plugin loaded.
       
   195     if ( iHsContentControlUis.Count() > 0 )
       
   196         {
       
   197         for( TInt index( iHsContentControlUis.Count() - 1 ); index >= 0; --index )
       
   198             {
       
   199             CHsContentControlUi* cc( iHsContentControlUis[ index ] );
       
   200             // ImplUid of plugin must match Sis pkg uid
       
   201             if ( cc && cc->ImplUid() == aPkgUid )
       
   202                 {
       
   203                 iHsContentControlUis.Remove( index );
       
   204                 delete cc;
       
   205                 cc = NULL;
       
   206                 break;
       
   207                 }
       
   208             }
   179         }
   209         }
   180     }
   210     }
   181 
   211 
   182 // ----------------------------------------------------------------------------
   212 // ----------------------------------------------------------------------------
   183 // CHsContentControlFactory::CheckPluginChangesL
   213 // CHsContentControlFactory::CheckPluginChangesL