emailservices/emailclientapi/src/emailclientapiimpl.cpp
branchRCL_3
changeset 12 4ce476e64c59
parent 11 0396474f30f5
child 24 d189ee25cf9d
equal deleted inserted replaced
11:0396474f30f5 12:4ce476e64c59
    37 #include "emailmailboxcache.h"
    37 #include "emailmailboxcache.h"
    38 #include "FreestyleEmailUiConstants.h"
    38 #include "FreestyleEmailUiConstants.h"
    39 #include "emailclientapi.hrh"
    39 #include "emailclientapi.hrh"
    40 #include "freestyleemailcenrepkeys.h"
    40 #include "freestyleemailcenrepkeys.h"
    41 #include "FreestyleEmailUiConstants.h"
    41 #include "FreestyleEmailUiConstants.h"
       
    42 
    42 // ---------------------------------------------------------------------------
    43 // ---------------------------------------------------------------------------
    43 // CEmailClientApi::MailboxL
    44 // CEmailClientApi::MailboxL
    44 // ---------------------------------------------------------------------------
    45 // ---------------------------------------------------------------------------
    45 //
    46 //
    46 MEmailMailbox* CEmailClientApi::MailboxL( const TMailboxId& aId )
    47 MEmailMailbox* CEmailClientApi::MailboxL( const TMailboxId& aId )
   199 // -----------------------------------------------------------------------------
   200 // -----------------------------------------------------------------------------
   200 // 
   201 // 
   201 // -----------------------------------------------------------------------------
   202 // -----------------------------------------------------------------------------
   202 CEmailClientApi* CEmailClientApi::NewL()
   203 CEmailClientApi* CEmailClientApi::NewL()
   203     {
   204     {
   204     CEmailClientApi* self = new ( ELeave ) CEmailClientApi();
   205     CEmailClientApi* instance = static_cast<CEmailClientApi*>( Dll::Tls() );
   205     CleanupStack::PushL( self );
   206     
   206     self->ConstructL();
   207     if ( instance == NULL )
   207     CleanupStack::Pop();
   208         {
   208     return self;
   209         instance = new ( ELeave ) CEmailClientApi();
       
   210         CleanupStack::PushL( instance );
       
   211         instance->ConstructL();
       
   212         User::LeaveIfError( Dll::SetTls( instance ) );
       
   213         CleanupStack::Pop();
       
   214         }
       
   215 
       
   216     instance->iInstanceCounter++;
       
   217         
       
   218     return instance;
   209     }
   219     }
   210 
   220 
   211 // -----------------------------------------------------------------------------
   221 // -----------------------------------------------------------------------------
   212 // 
   222 // 
   213 // -----------------------------------------------------------------------------
   223 // -----------------------------------------------------------------------------
   224         }
   234         }
   225     iPluginDataArray.Close();
   235     iPluginDataArray.Close();
   226     iLoadedPluginsArray.Close();
   236     iLoadedPluginsArray.Close();
   227     delete iMailboxCache;
   237     delete iMailboxCache;
   228     delete iClientAPI;
   238     delete iClientAPI;
   229     }
   239     Dll::FreeTls();
   230 
   240     }
   231 // -----------------------------------------------------------------------------
   241 
   232 // 
   242 // -----------------------------------------------------------------------------
   233 // -----------------------------------------------------------------------------
   243 // 
   234 CEmailClientApi::CEmailClientApi()
   244 // -----------------------------------------------------------------------------
       
   245 CEmailClientApi::CEmailClientApi() : iInstanceCounter( 0 )
   235     {        
   246     {        
   236     }
   247     }
   237 
   248 
   238 // -----------------------------------------------------------------------------
   249 // -----------------------------------------------------------------------------
   239 // 
   250 // 
   295 // -----------------------------------------------------------------------------
   306 // -----------------------------------------------------------------------------
   296 // 
   307 // 
   297 // -----------------------------------------------------------------------------
   308 // -----------------------------------------------------------------------------
   298 void CEmailClientApi::Release()
   309 void CEmailClientApi::Release()
   299     {
   310     {
   300     delete this;
   311     if( this->iInstanceCounter == 1 )
       
   312         {
       
   313         delete this;
       
   314         }
       
   315     else
       
   316         {
       
   317         this->iInstanceCounter--;
       
   318         }
   301     }
   319     }
   302        
   320        
   303 // -----------------------------------------------------------------------------
   321 // -----------------------------------------------------------------------------
   304 // Returns plugin instance from plugin data. If we already have "claimed"
   322 // Returns plugin instance from plugin data. If we already have "claimed"
   305 // instance once, prevent increment of reference count 
   323 // instance once, prevent increment of reference count