idlefw/plugins/devicestatus/src/aidevicestatuspluginengine.cpp
branchRCL_3
changeset 9 d0529222e3f0
parent 0 79c6a41cd166
child 74 edd621764147
equal deleted inserted replaced
4:1a2a00e78665 9:d0529222e3f0
    13 *
    13 *
    14 * Description:  Engine class for Device Status Plug-in
    14 * Description:  Engine class for Device Status Plug-in
    15 *
    15 *
    16 */
    16 */
    17 
    17 
    18 
    18 // System includes
       
    19 
       
    20 // User includes
       
    21 #include <aicontentobserver.h>
    19 #include "aidevicestatuspluginengine.h"
    22 #include "aidevicestatuspluginengine.h"
    20 #include "aipublisherfactory.h"
    23 #include "aipublisherfactory.h"
    21 #include "aidevicestatuspublisher.h"
    24 #include "aidevicestatuspublisher.h"
    22 
    25 
       
    26 // ======== MEMBER FUNCTIONS ========
       
    27 // ----------------------------------------------------------------------------
       
    28 // CAiDeviceStatusPluginEngine::CAiDeviceStatusPluginEngine
       
    29 //
       
    30 // ----------------------------------------------------------------------------
       
    31 //
    23 CAiDeviceStatusPluginEngine::CAiDeviceStatusPluginEngine( 
    32 CAiDeviceStatusPluginEngine::CAiDeviceStatusPluginEngine( 
    24                                             MAiContentObserver& aObserver, 
    33     MAiContentObserver& aObserver, CHsContentPublisher& aExtension,
    25 											MAiPropertyExtension& aExtension,
    34     MAiPublishPrioritizer& aPrioritizer )
    26                                             MAiPublishPrioritizer& aPrioritizer )
    35     : iContentObserver( &aObserver ), iExtension( &aExtension ),          
    27     : iContentObserver( &aObserver ), 
    36       iPrioritizer( &aPrioritizer )
    28         iExtension( &aExtension ), 
       
    29         iPrioritizer( &aPrioritizer )
       
    30 	{	
    37 	{	
    31 	}
    38 	}
    32 
    39 
    33 
    40 // ----------------------------------------------------------------------------
       
    41 // CAiDeviceStatusPluginEngine::ConstructL
       
    42 //
       
    43 // ----------------------------------------------------------------------------
       
    44 //
    34 void CAiDeviceStatusPluginEngine::ConstructL()
    45 void CAiDeviceStatusPluginEngine::ConstructL()
    35     {
    46     {
    36     // Instantiate all publishers via factory
    47     // Instantiate all publishers via factory
    37     MAiDeviceStatusPublisher* publisher = AiPublisherFactory::CreateProfilePublisherL();
    48     MAiDeviceStatusPublisher* publisher = AiPublisherFactory::CreateDatePublisherL();
    38     CleanupStack::PushL( publisher );
       
    39     AddPublisherL( publisher );
       
    40     CleanupStack::Pop( publisher );
       
    41 
       
    42     publisher = AiPublisherFactory::CreateDatePublisherL();
       
    43     CleanupStack::PushL( publisher );
    49     CleanupStack::PushL( publisher );
    44     AddPublisherL( publisher );
    50     AddPublisherL( publisher );
    45     CleanupStack::Pop( publisher );
    51     CleanupStack::Pop( publisher );
    46 
    52 
    47     publisher = AiPublisherFactory::CreateSimRegPublisherL();
    53     publisher = AiPublisherFactory::CreateSimRegPublisherL();
    88     CleanupStack::PushL( publisher );
    94     CleanupStack::PushL( publisher );
    89     AddPublisherL( publisher );
    95     AddPublisherL( publisher );
    90     CleanupStack::Pop( publisher );
    96     CleanupStack::Pop( publisher );
    91 
    97 
    92     // Subscribe all publishers once they are instantiated
    98     // Subscribe all publishers once they are instantiated
    93     const TInt count = iPublishers.Count();
    99     const TInt count( iPublishers.Count() );
    94 
   100 
    95     for( TInt i( 0 ); i < count; i++ )
   101     for ( TInt i( 0 ); i < count; i++ )
    96         {
   102         {
    97         iPublishers[i]->Subscribe( *iContentObserver, 
   103         iPublishers[i]->Subscribe( 
    98                                     *iExtension, 
   104             *iContentObserver, *iExtension, *iPrioritizer, *this );
    99                                     *iPrioritizer, 
       
   100                                     *this );
       
   101         }    
   105         }    
   102     }
   106     }
   103 
   107 
   104 
   108 // ----------------------------------------------------------------------------
       
   109 // CAiDeviceStatusPluginEngine::NewL
       
   110 //
       
   111 // ----------------------------------------------------------------------------
       
   112 //
   105 CAiDeviceStatusPluginEngine* CAiDeviceStatusPluginEngine::NewL( 
   113 CAiDeviceStatusPluginEngine* CAiDeviceStatusPluginEngine::NewL( 
   106                                             MAiContentObserver& aObserver, 
   114     MAiContentObserver& aObserver, CHsContentPublisher& aExtension,
   107 											MAiPropertyExtension& aExtension,
   115     MAiPublishPrioritizer& aPrioritizer )											                                           
   108                                             MAiPublishPrioritizer& aPrioritizer)
       
   109     {
   116     {
   110     CAiDeviceStatusPluginEngine* self = 
   117     CAiDeviceStatusPluginEngine* self = 
   111     	new( ELeave ) CAiDeviceStatusPluginEngine( aObserver, 
   118     	new( ELeave ) CAiDeviceStatusPluginEngine( aObserver, aExtension, aPrioritizer ); 
   112 											        aExtension,
   119     	        											                                                          
   113                                                     aPrioritizer);
       
   114     CleanupStack::PushL( self );
   120     CleanupStack::PushL( self );
   115     self->ConstructL();
   121     self->ConstructL();
   116     CleanupStack::Pop( self );
   122     CleanupStack::Pop( self );
   117     return self;
   123     return self;
   118     }
   124     }
   119 
   125 
       
   126 // ----------------------------------------------------------------------------
       
   127 // CAiDeviceStatusPluginEngine::~CAiDeviceStatusPluginEngine
       
   128 //
       
   129 // ----------------------------------------------------------------------------
       
   130 //
   120 
   131 
   121 CAiDeviceStatusPluginEngine::~CAiDeviceStatusPluginEngine()
   132 CAiDeviceStatusPluginEngine::~CAiDeviceStatusPluginEngine()
   122     {
   133     {
   123     iPublishers.ResetAndDestroy();
   134     iPublishers.ResetAndDestroy();
   124     }
   135     }
   125 
   136 
   126 
   137 // ----------------------------------------------------------------------------
   127 void CAiDeviceStatusPluginEngine::AddPublisherL( MAiDeviceStatusPublisher* aPublisher )
   138 // CAiDeviceStatusPluginEngine::AddPublisherL
       
   139 //
       
   140 // ----------------------------------------------------------------------------
       
   141 //
       
   142 void CAiDeviceStatusPluginEngine::AddPublisherL( 
       
   143     MAiDeviceStatusPublisher* aPublisher )
   128     {
   144     {
   129 	//Add publisher to list.
   145 	//Add publisher to list.
   130     if( aPublisher )
   146     if ( aPublisher )
   131         {
   147         {
   132         CleanupDeletePushL( aPublisher );
   148         CleanupDeletePushL( aPublisher );
   133         User::LeaveIfError( iPublishers.Append( aPublisher ) );
   149         User::LeaveIfError( iPublishers.Append( aPublisher ) );
   134         CleanupStack::Pop(aPublisher);//aPublisher
   150         CleanupStack::Pop(aPublisher);//aPublisher
   135         }
   151         }
   136     }
   152     }
   137 
   153 
   138 
   154 // ----------------------------------------------------------------------------
       
   155 // CAiDeviceStatusPluginEngine::ResumePublishersL
       
   156 //
       
   157 // ----------------------------------------------------------------------------
       
   158 //
   139 void CAiDeviceStatusPluginEngine::ResumePublishersL()
   159 void CAiDeviceStatusPluginEngine::ResumePublishersL()
   140 	{
   160 	{
   141     const TInt count = iPublishers.Count();
   161     const TInt count( iPublishers.Count() );
   142 
   162 
   143     for( TInt i( 0 ); i < count; i++ )
   163     for ( TInt i( 0 ); i < count; i++ )
   144         {
   164         {
   145         iPublishers[i]->ResumeL();
   165         iPublishers[i]->ResumeL();
   146         }    
   166         }    
   147 	}
   167 	}
   148 
   168 
   149 
   169 // ----------------------------------------------------------------------------
       
   170 // CAiDeviceStatusPluginEngine::RefreshPublishersL
       
   171 //
       
   172 // ----------------------------------------------------------------------------
       
   173 //
   150 void CAiDeviceStatusPluginEngine::RefreshPublishersL( TBool aClean )
   174 void CAiDeviceStatusPluginEngine::RefreshPublishersL( TBool aClean )
   151 	{
   175 	{
   152 	iContentObserver->StartTransaction( KImplUidDevStaPlugin );
   176 	iContentObserver->StartTransaction( KImplUidDevStaPlugin );
   153 
   177 
   154     const TInt count = iPublishers.Count();
   178     const TInt count( iPublishers.Count() );
   155 
   179 
   156     for( TInt i( 0 ); i < count; i++ )
   180     for ( TInt i( 0 ); i < count; i++ )
   157         {
   181         {
   158         iPublishers[i]->RefreshL( aClean );
   182         iPublishers[i]->RefreshL( aClean );
   159         }    
   183         }    
   160         
   184         
   161 	iContentObserver->Commit( KImplUidDevStaPlugin );
   185 	iContentObserver->Commit( KImplUidDevStaPlugin );
   162 	}
   186 	}
   163 
   187 
   164 
   188 // ----------------------------------------------------------------------------
       
   189 // CAiDeviceStatusPluginEngine::RefreshPublishersL
       
   190 //
       
   191 // ----------------------------------------------------------------------------
       
   192 //
   165 TBool CAiDeviceStatusPluginEngine::RefreshPublishersL( TInt aContentId, 
   193 TBool CAiDeviceStatusPluginEngine::RefreshPublishersL( TInt aContentId, 
   166                                                         TBool aClean )
   194     TBool aClean )
   167 	{
   195 	{
   168 	TBool success = EFalse;
   196 	TBool success( EFalse );
   169 	
   197 	
   170 	iContentObserver->StartTransaction( KImplUidDevStaPlugin );
   198 	iContentObserver->StartTransaction( KImplUidDevStaPlugin );
   171 
   199 
   172     const TInt count = iPublishers.Count();
   200     const TInt count( iPublishers.Count() );
   173 
   201 
   174     for( TInt i( 0 ); i < count; i++ )
   202     for ( TInt i( 0 ); i < count; i++ )
   175         {
   203         {
   176         if( iPublishers[i]->RefreshL( aContentId, aClean ) )
   204         if ( iPublishers[i]->RefreshL( aContentId, aClean ) )
   177             {
   205             {
   178             success = ETrue;
   206             success = ETrue;
   179             }
   207             }
   180         }
   208         }
   181 
   209 
   189         }
   217         }
   190 
   218 
   191     return success;
   219     return success;
   192 	}
   220 	}
   193 
   221 
   194 
   222 // ----------------------------------------------------------------------------
       
   223 // CAiDeviceStatusPluginEngine::SuspendPublishersL
       
   224 //
       
   225 // ----------------------------------------------------------------------------
       
   226 //
       
   227 TBool CAiDeviceStatusPluginEngine::SuspendPublishersL( TInt aContentId, 
       
   228     TBool aClean )
       
   229     {
       
   230     TBool success( EFalse );
       
   231     
       
   232     const TInt count( iPublishers.Count() );
       
   233     
       
   234     for ( TInt i( 0 ); i < count; i++ )
       
   235         {
       
   236         if ( iPublishers[i]->SuspendL( aContentId, aClean ) )
       
   237             {
       
   238             success = ETrue;
       
   239             }
       
   240         }
       
   241     
       
   242     return success;
       
   243     }
       
   244 
       
   245 // ----------------------------------------------------------------------------
       
   246 // CAiDeviceStatusPluginEngine::RefreshPriorizedPublishersL
       
   247 //
       
   248 // ----------------------------------------------------------------------------
       
   249 //
   195 TBool CAiDeviceStatusPluginEngine::RefreshPriorizedPublishersL( TInt aContentId,
   250 TBool CAiDeviceStatusPluginEngine::RefreshPriorizedPublishersL( TInt aContentId,
   196                                                                 TInt aPriority )
   251     TInt aPriority )
   197 	{
   252 	{
   198 	iContentObserver->StartTransaction( KImplUidDevStaPlugin );
   253 	iContentObserver->StartTransaction( KImplUidDevStaPlugin );
   199 	TBool success = EFalse;
   254 	
   200     const TInt count = iPublishers.Count();
   255 	TBool success( EFalse );
   201 
   256     
   202     for( TInt i( 0 ); i < count; i++ )
   257 	const TInt count( iPublishers.Count() );
   203         {
   258 
   204         if( iPublishers[i]->RefreshContentWithPriorityL( aContentId,
   259     for ( TInt i( 0 ); i < count; i++ )
   205                                                             aPriority ) )
   260         {
       
   261         MAiDeviceStatusPublisher* publisher( iPublishers[i] );
       
   262         
       
   263         if( publisher->RefreshContentWithPriorityL( aContentId, aPriority ) )                                                                           
   206             {
   264             {
   207             success = ETrue;
   265             success = ETrue;
   208             break;
   266             break;
   209             }
   267             }
   210         }
   268         }
       
   269     
   211     if ( success )
   270     if ( success )
   212         {
   271         {
   213         iContentObserver->Commit( KImplUidDevStaPlugin );
   272         iContentObserver->Commit( KImplUidDevStaPlugin );
   214         }
   273         }
   215     else
   274     else
   216         {
   275         {
   217         iContentObserver->CancelTransaction( KImplUidDevStaPlugin );
   276         iContentObserver->CancelTransaction( KImplUidDevStaPlugin );
   218         }
   277         }
       
   278     
   219     return success;
   279     return success;
   220 	}
   280 	}
   221 
   281 
       
   282 // End of file