emailservices/emailframework/src/CFSMailClient.cpp
changeset 66 084b5b1f02a7
parent 62 a8c646b56683
equal deleted inserted replaced
62:a8c646b56683 66:084b5b1f02a7
     1 /*
     1 /*
     2 * Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies). 
     2 * Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
     3 * All rights reserved.
     3 * All rights reserved.
     4 * This component and the accompanying materials are made available
     4 * This component and the accompanying materials are made available
     5 * under the terms of "Eclipse Public License v1.0"
     5 * under the terms of "Eclipse Public License v1.0"
     6 * which accompanies this distribution, and is available
     6 * which accompanies this distribution, and is available
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
    24 #include "CFSMailClient.h"
    24 #include "CFSMailClient.h"
    25 #include "CFSFWImplementation.h"
    25 #include "CFSFWImplementation.h"
    26 #include "CFSMailPluginManager.h"
    26 #include "CFSMailPluginManager.h"
    27 #include "CFSMailRequestObserver.h"
    27 #include "CFSMailRequestObserver.h"
    28 #include "CFSMailIterator.h"
    28 #include "CFSMailIterator.h"
    29 #include "CFSMailBrandManagerImpl.h"
       
    30 
    29 
    31 
    30 
    32 // ================= MEMBER FUNCTIONS ==========================================
    31 // ================= MEMBER FUNCTIONS ==========================================
    33 // -----------------------------------------------------------------------------
    32 // -----------------------------------------------------------------------------
    34 // CFSMailClient::NewLC
    33 // CFSMailClient::NewLC
    55 
    54 
    56     // Increment reference count before calling CleanupClosePushL so that
    55     // Increment reference count before calling CleanupClosePushL so that
    57     // the reference count is correct if CleanupClosePushL leaves.
    56     // the reference count is correct if CleanupClosePushL leaves.
    58     client->IncReferenceCount();
    57     client->IncReferenceCount();
    59     CleanupClosePushL( *client );
    58     CleanupClosePushL( *client );
    60     
    59 
    61     return client;
    60     return client;
    62 } 
    61 }
    63 
    62 
    64 // -----------------------------------------------------------------------------
    63 // -----------------------------------------------------------------------------
    65 // CFSMailClient::NewL
    64 // CFSMailClient::NewL
    66 // -----------------------------------------------------------------------------
    65 // -----------------------------------------------------------------------------
    67 EXPORT_C CFSMailClient* CFSMailClient::NewL()
    66 EXPORT_C CFSMailClient* CFSMailClient::NewL()
    68 {
    67 {
    69     NM_FUNCTION;
    68     NM_FUNCTION;
    70     
    69 
    71     CFSMailClient* client =  CFSMailClient::NewLC(EFSLoadPlugins);
    70     CFSMailClient* client =  CFSMailClient::NewLC(EFSLoadPlugins);
    72     CleanupStack:: Pop(client);
    71     CleanupStack:: Pop(client);
    73     return client;
    72     return client;
    74 }
    73 }
    75 
    74 
    77 // CFSMailClient::NewL
    76 // CFSMailClient::NewL
    78 // -----------------------------------------------------------------------------
    77 // -----------------------------------------------------------------------------
    79 EXPORT_C CFSMailClient* CFSMailClient::NewL(TInt aConfiguration)
    78 EXPORT_C CFSMailClient* CFSMailClient::NewL(TInt aConfiguration)
    80 {
    79 {
    81     NM_FUNCTION;
    80     NM_FUNCTION;
    82     
    81 
    83     CFSMailClient* client =  CFSMailClient::NewLC(aConfiguration);
    82     CFSMailClient* client =  CFSMailClient::NewLC(aConfiguration);
    84     CleanupStack:: Pop(client);
    83     CleanupStack:: Pop(client);
    85     return client;
    84     return client;
    86 }
    85 }
    87 
    86 
    89 // CFSMailClient::ConstructL
    88 // CFSMailClient::ConstructL
    90 // -----------------------------------------------------------------------------
    89 // -----------------------------------------------------------------------------
    91 void CFSMailClient::ConstructL(TInt aConfiguration)
    90 void CFSMailClient::ConstructL(TInt aConfiguration)
    92 {
    91 {
    93     NM_FUNCTION;
    92     NM_FUNCTION;
    94     
    93 
    95 	iFWImplementation = CFSFWImplementation::NewL(aConfiguration);
    94 	iFWImplementation = CFSFWImplementation::NewL(aConfiguration);
    96 }
    95 }
    97 
    96 
    98 // -----------------------------------------------------------------------------
    97 // -----------------------------------------------------------------------------
    99 // CFSMailClient::CFSMailClient
    98 // CFSMailClient::CFSMailClient
   100 // -----------------------------------------------------------------------------
    99 // -----------------------------------------------------------------------------
   101 CFSMailClient::CFSMailClient()
   100 CFSMailClient::CFSMailClient()
   102 {
   101 {
   103     NM_FUNCTION;
   102     NM_FUNCTION;
   104     
   103 
   105 	// clear pointers
   104 	// clear pointers
   106 	iFWImplementation = NULL;
   105 	iFWImplementation = NULL;
   107 	iBrandManager = NULL;
       
   108 }
   106 }
   109 
   107 
   110 
   108 
   111 // -----------------------------------------------------------------------------
   109 // -----------------------------------------------------------------------------
   112 // CFSMailClient::~CFSMailClient
   110 // CFSMailClient::~CFSMailClient
   113 // -----------------------------------------------------------------------------
   111 // -----------------------------------------------------------------------------
   114 EXPORT_C CFSMailClient::~CFSMailClient()
   112 EXPORT_C CFSMailClient::~CFSMailClient()
   115 {
   113 {
   116     NM_FUNCTION;
   114     NM_FUNCTION;
   117     
       
   118 	if(iBrandManager)
       
   119 		{
       
   120 		delete iBrandManager;
       
   121 		}
       
   122 	Close();
   115 	Close();
   123 }
   116 }
   124 
   117 
   125 // -----------------------------------------------------------------------------
   118 // -----------------------------------------------------------------------------
   126 // CFSMailClient::GetMailBoxByUidL
   119 // CFSMailClient::GetMailBoxByUidL
   127 // -----------------------------------------------------------------------------
   120 // -----------------------------------------------------------------------------
   128 EXPORT_C CFSMailBox* CFSMailClient::GetMailBoxByUidL(const TFSMailMsgId aMailBoxId)
   121 EXPORT_C CFSMailBox* CFSMailClient::GetMailBoxByUidL(const TFSMailMsgId aMailBoxId)
   129 {
   122 {
   130     NM_FUNCTION;
   123     NM_FUNCTION;
   131     
   124 
   132 	// select plugin
   125 	// select plugin
   133 	CFSMailBox* mailBox = NULL;
   126 	CFSMailBox* mailBox = NULL;
   134 	CFSMailPlugin* plugin = iFWImplementation->GetPluginManager().GetPluginByUid(aMailBoxId);
   127 	CFSMailPlugin* plugin = iFWImplementation->GetPluginManager().GetPluginByUid(aMailBoxId);
   135 	if(plugin)
   128 	if(plugin)
   136 	{
   129 	{
   140 
   133 
   141 	return mailBox;
   134 	return mailBox;
   142 }
   135 }
   143 
   136 
   144 // -----------------------------------------------------------------------------
   137 // -----------------------------------------------------------------------------
   145 // CFSMailClient::GetMailBoxByUidLC
       
   146 // -----------------------------------------------------------------------------
       
   147 EXPORT_C CFSMailBox* CFSMailClient::GetMailBoxByUidLC(const TFSMailMsgId aMailBoxId)
       
   148 {
       
   149     NM_FUNCTION;
       
   150     CFSMailBox* mailBox = GetMailBoxByUidL( aMailBoxId );
       
   151     CleanupStack::PushL( mailBox );
       
   152     return mailBox;
       
   153 }
       
   154 
       
   155 
       
   156 
       
   157 // -----------------------------------------------------------------------------
       
   158 // CFSMailClient::GetFolderByUidL
   138 // CFSMailClient::GetFolderByUidL
   159 // -----------------------------------------------------------------------------
   139 // -----------------------------------------------------------------------------
   160 EXPORT_C CFSMailFolder* CFSMailClient::GetFolderByUidL( const TFSMailMsgId aMailBoxId,
   140 EXPORT_C CFSMailFolder* CFSMailClient::GetFolderByUidL( const TFSMailMsgId aMailBoxId,
   161 													   const TFSMailMsgId aFolderId )
   141 													   const TFSMailMsgId aFolderId )
   162 {
   142 {
   163     NM_FUNCTION;
   143     NM_FUNCTION;
   164     
   144 
   165 	CFSMailFolder* folder = NULL;
   145 	CFSMailFolder* folder = NULL;
   166 	
   146 
   167 	// select plugin
   147 	// select plugin
   168 	CFSMailPlugin* plugin = iFWImplementation->GetPluginManager().GetPluginByUid(aFolderId);
   148 	CFSMailPlugin* plugin = iFWImplementation->GetPluginManager().GetPluginByUid(aFolderId);
   169 	if(plugin)
   149 	if(plugin)
   170 	{
   150 	{
   171 		// get folder from plugin
   151 		// get folder from plugin
   181 														 const TFSMailMsgId aFolderId,
   161 														 const TFSMailMsgId aFolderId,
   182 														 const TFSMailMsgId aMessageId,
   162 														 const TFSMailMsgId aMessageId,
   183 														 const TFSMailDetails aDetails)
   163 														 const TFSMailDetails aDetails)
   184 {
   164 {
   185     NM_FUNCTION;
   165     NM_FUNCTION;
   186     
   166 
   187 	CFSMailMessage* message = NULL;
   167 	CFSMailMessage* message = NULL;
   188     // select plugin
   168     // select plugin
   189     CFSMailPlugin* plugin = iFWImplementation->GetPluginManager().GetPluginByUid(aMessageId);
   169     CFSMailPlugin* plugin = iFWImplementation->GetPluginManager().GetPluginByUid(aMessageId);
   190 	if(plugin)
   170 	if(plugin)
   191 	{
   171 	{
   202 EXPORT_C void CFSMailClient::DeleteMessagesByUidL( const TFSMailMsgId aMailBoxId,
   182 EXPORT_C void CFSMailClient::DeleteMessagesByUidL( const TFSMailMsgId aMailBoxId,
   203 												   const TFSMailMsgId aFolderId,
   183 												   const TFSMailMsgId aFolderId,
   204 											 	   const RArray<TFSMailMsgId>& aMessages )
   184 											 	   const RArray<TFSMailMsgId>& aMessages )
   205 {
   185 {
   206     NM_FUNCTION;
   186     NM_FUNCTION;
   207     
   187 
   208 	CFSMailPlugin* plugin = iFWImplementation->GetPluginManager().GetPluginByUid(aMailBoxId);
   188 	CFSMailPlugin* plugin = iFWImplementation->GetPluginManager().GetPluginByUid(aMailBoxId);
   209 	if(plugin)
   189 	if(plugin)
   210 	{
   190 	{
   211 		plugin->DeleteMessagesByUidL(aMailBoxId,aFolderId,aMessages);
   191 		plugin->DeleteMessagesByUidL(aMailBoxId,aFolderId,aMessages);
   212 	}
   192 	}
   217 // -----------------------------------------------------------------------------
   197 // -----------------------------------------------------------------------------
   218 EXPORT_C TInt CFSMailClient::DeleteMailBoxByUidL( const TFSMailMsgId aMailBoxId,
   198 EXPORT_C TInt CFSMailClient::DeleteMailBoxByUidL( const TFSMailMsgId aMailBoxId,
   219  								  MFSMailRequestObserver& aOperationObserver )
   199  								  MFSMailRequestObserver& aOperationObserver )
   220 {
   200 {
   221     NM_FUNCTION;
   201     NM_FUNCTION;
   222     
   202 
   223 	// select plugin
   203 	// select plugin
   224 	CFSMailPlugin* plugin = iFWImplementation->GetPluginManager().GetPluginByUid(aMailBoxId);
   204 	CFSMailPlugin* plugin = iFWImplementation->GetPluginManager().GetPluginByUid(aMailBoxId);
   225 	if(plugin)
   205 	if(plugin)
   226 	{
   206 	{
   227 		// init asynchronous request
   207 		// init asynchronous request
   228 		TFSPendingRequest request = iFWImplementation->GetPluginManager().InitAsyncRequestL(  aMailBoxId.PluginId(),
   208 		TFSPendingRequest request = iFWImplementation->GetPluginManager().InitAsyncRequestL(  aMailBoxId.PluginId(),
   229 																		aOperationObserver );
   209 																		aOperationObserver );
   230 
   210 
   231 		TRAPD(err, plugin->DeleteMailBoxByUidL(aMailBoxId,*request.iObserver,request.iRequestId));
   211 		TRAPD(err, plugin->DeleteMailBoxByUidL(aMailBoxId,*request.iObserver,request.iRequestId));
   232 		
   212 
   233 	    if(err != KErrNone)
   213 	    if(err != KErrNone)
   234 		{
   214 		{
   235 			iFWImplementation->GetPluginManager().CompleteRequest(request.iRequestId);	
   215 			iFWImplementation->GetPluginManager().CompleteRequest(request.iRequestId);
   236 		}
   216 		}
   237 	    return request.iRequestId;
   217 	    return request.iRequestId;
   238 	}
   218 	}
   239 	return 0;
   219 	return 0;
   240 }
   220 }
   248     NM_FUNCTION;
   228     NM_FUNCTION;
   249 
   229 
   250 	RArray<TFSMailMsgId> mailBoxList;
   230 	RArray<TFSMailMsgId> mailBoxList;
   251 	mailBoxList.Reset();
   231 	mailBoxList.Reset();
   252 	TInt ret = KErrNone;
   232 	TInt ret = KErrNone;
   253 	
   233 
   254     // <cmail>	
   234     // <cmail>
   255 	CFSMailBox *mailBox = NULL;	
   235 	CFSMailBox *mailBox = NULL;
   256     // </cmail>	
   236     // </cmail>
   257 	
   237 
   258 	if(aPlugin.IsNullId())
   238 	if(aPlugin.IsNullId())
   259 	{
   239 	{
   260 		for(TInt i=0;i<iFWImplementation->GetPluginManager().GetPluginCount();i++)
   240 		for(TInt i=0;i<iFWImplementation->GetPluginManager().GetPluginCount();i++)
   261 		{
   241 		{
   262 			CFSMailPlugin* plugin = iFWImplementation->GetPluginManager().GetPluginByIndex(i);	
   242 			CFSMailPlugin* plugin = iFWImplementation->GetPluginManager().GetPluginByIndex(i);
   263 			TRAPD(err,plugin->ListMailBoxesL(mailBoxList));
   243 			TRAPD(err,plugin->ListMailBoxesL(mailBoxList));
   264 			if(err == KErrNone)
   244 			if(err == KErrNone)
   265 			{
   245 			{
   266 				for(TInt ii=0;ii < mailBoxList.Count(); ii++)
   246 				for(TInt ii=0;ii < mailBoxList.Count(); ii++)
   267 				{
   247 				{
   287 			mailBoxList.Reset();
   267 			mailBoxList.Reset();
   288 		}
   268 		}
   289 	}
   269 	}
   290 	else
   270 	else
   291 	{
   271 	{
   292 		CFSMailPlugin* plugin = iFWImplementation->GetPluginManager().GetPluginByUid(aPlugin);		
   272 		CFSMailPlugin* plugin = iFWImplementation->GetPluginManager().GetPluginByUid(aPlugin);
   293 		// <cmail>
   273 		// <cmail>
   294 		TInt err(KErrNone);
   274 		TInt err(KErrNone);
   295 		if ( plugin )
   275 		if ( plugin )
   296 		    {
   276 		    {
   297 	        TRAP(err,plugin->ListMailBoxesL(mailBoxList));		    
   277 	        TRAP(err,plugin->ListMailBoxesL(mailBoxList));
   298 		    }
   278 		    }
   299 		else
   279 		else
   300 		    {
   280 		    {
   301 		    err = KErrNotFound;
   281 		    err = KErrNotFound;
   302 		    }
   282 		    }
   303         // </cmail>		
   283         // </cmail>
   304 		if (err == KErrNone)
   284 		if (err == KErrNone)
   305 		    {
   285 		    {
   306 			for(TInt i=0;i < mailBoxList.Count(); i++)
   286 			for(TInt i=0;i < mailBoxList.Count(); i++)
   307 			    {			    
   287 			    {
   308                 // <cmail>
   288                 // <cmail>
   309                     mailBox = NULL;
   289                     mailBox = NULL;
   310 				    TRAP_IGNORE(
   290 				    TRAP_IGNORE(
   311                         mailBox = plugin->GetMailBoxByUidL(mailBoxList[i]) );
   291                         mailBox = plugin->GetMailBoxByUidL(mailBoxList[i]) );
   312                     if ( mailBox )
   292                     if ( mailBox )
   313                         {
   293                         {
   314                         err = aMailBoxes.Append( mailBox );
   294                         err = aMailBoxes.Append( mailBox );
   315                         }
   295                         }
   316                 // </cmail>				
   296                 // </cmail>
   317 				if(err != KErrNone)
   297 				if(err != KErrNone)
   318 				    {
   298 				    {
   319 					ret = err;
   299 					ret = err;
   320 				    }
   300 				    }
   321 			    }
   301 			    }
   322 		    }
   302 		    }
   323 		else
   303 		else
   324 		    {
   304 		    {
   325 			ret = err;
   305 			ret = err;
   326 		    }
   306 		    }
   327 		mailBoxList.Reset();			
   307 		mailBoxList.Reset();
   328 	}
   308 	}
   329 	
   309 
   330 	mailBoxList.Reset();
   310 	mailBoxList.Reset();
   331 	return ret;
   311 	return ret;
   332 }
   312 }
   333 
   313 
   334 // -----------------------------------------------------------------------------
   314 // -----------------------------------------------------------------------------
   340 {
   320 {
   341     NM_FUNCTION;
   321     NM_FUNCTION;
   342 
   322 
   343 	MFSMailIterator* iterator = NULL;
   323 	MFSMailIterator* iterator = NULL;
   344 	MFSMailIterator* pluginIterator = NULL;
   324 	MFSMailIterator* pluginIterator = NULL;
   345 	
   325 
   346 	// select plugin
   326 	// select plugin
   347 	if(CFSMailPlugin* plugin = iFWImplementation->GetPluginManager().GetPluginByUid(aFolderId))
   327 	if(CFSMailPlugin* plugin = iFWImplementation->GetPluginManager().GetPluginByUid(aFolderId))
   348 	{
   328 	{
   349 		// get message list iterator from plugin
   329 		// get message list iterator from plugin
   350 		TRAPD(err, pluginIterator = plugin->ListMessagesL(aMailBoxId,aFolderId,aDetails,aSorting));
   330 		TRAPD(err, pluginIterator = plugin->ListMessagesL(aMailBoxId,aFolderId,aDetails,aSorting));
   351 		if(err == KErrNone && pluginIterator)
   331 		if(err == KErrNone && pluginIterator)
   352 		{
   332 		{
   353 			TRAPD(err,iterator = CFSMailIterator::NewL(*pluginIterator,&iFWImplementation->GetPluginManager()));
   333 			TRAPD(err,iterator = CFSMailIterator::NewL(*pluginIterator,&iFWImplementation->GetPluginManager()));
   354 			if(err == KErrNone)
   334 			if(err == KErrNone)
   355 			{
   335 			{
   356 				return iterator;				
   336 				return iterator;
   357 			}
   337 			}
   358 		}
   338 		}
   359 	}
   339 	}
   360 
   340 
   361 	return iterator;
   341 	return iterator;
   362 }
   342 }
   363 	
       
   364 // -----------------------------------------------------------------------------
       
   365 // CFSMailClient::GetBrandManagerL
       
   366 // -----------------------------------------------------------------------------
       
   367 EXPORT_C MFSMailBrandManager& CFSMailClient::GetBrandManagerL( void )
       
   368 {
       
   369     NM_FUNCTION;
       
   370 
       
   371 	if(iBrandManager == NULL)
       
   372 		{
       
   373 		TRAPD( creationError,
       
   374 		       iBrandManager = CFSMailBrandManagerImpl::NewL( *this ) );
       
   375 		if ( creationError != KErrNone )
       
   376 		    {
       
   377 		    User::Leave( creationError );
       
   378 		    }
       
   379 		}
       
   380 		
       
   381  	return *iBrandManager;
       
   382 
       
   383 }
       
   384 
   343 
   385 // -----------------------------------------------------------------------------
   344 // -----------------------------------------------------------------------------
   386 // CFSMailClient::AddObserverL
   345 // CFSMailClient::AddObserverL
   387 // -----------------------------------------------------------------------------
   346 // -----------------------------------------------------------------------------
   388 EXPORT_C void CFSMailClient::AddObserverL(MFSMailEventObserver& aObserver)
   347 EXPORT_C void CFSMailClient::AddObserverL(MFSMailEventObserver& aObserver)
   389 {
   348 {
   390     NM_FUNCTION;
   349     NM_FUNCTION;
   391     
   350 
   392 	for(TInt i=0;i<iFWImplementation->GetPluginManager().GetPluginCount();i++)
   351 	for(TInt i=0;i<iFWImplementation->GetPluginManager().GetPluginCount();i++)
   393 		{
   352 		{
   394 		CFSMailPlugin* plugin = iFWImplementation->GetPluginManager().GetPluginByIndex(i);
   353 		CFSMailPlugin* plugin = iFWImplementation->GetPluginManager().GetPluginByIndex(i);
   395 		if(plugin)
   354 		if(plugin)
   396 			{
   355 			{
   397 			plugin->AddObserverL(aObserver);			
   356 			plugin->AddObserverL(aObserver);
   398 			}
   357 			}
   399 		}
   358 		}
   400 }
   359 }
   401 
   360 
   402 // -----------------------------------------------------------------------------
   361 // -----------------------------------------------------------------------------
   403 // CFSMailClient::RemoveObserver
   362 // CFSMailClient::RemoveObserver
   404 // -----------------------------------------------------------------------------
   363 // -----------------------------------------------------------------------------
   405 EXPORT_C void CFSMailClient::RemoveObserver(MFSMailEventObserver& aObserver)
   364 EXPORT_C void CFSMailClient::RemoveObserver(MFSMailEventObserver& aObserver)
   406 {
   365 {
   407     NM_FUNCTION;
   366     NM_FUNCTION;
   408     
   367 
   409 	for(TInt i=0;i<iFWImplementation->GetPluginManager().GetPluginCount();i++)
   368 	for(TInt i=0;i<iFWImplementation->GetPluginManager().GetPluginCount();i++)
   410 	{
   369 	{
   411 		CFSMailPlugin* plugin = iFWImplementation->GetPluginManager().GetPluginByIndex(i);
   370 		CFSMailPlugin* plugin = iFWImplementation->GetPluginManager().GetPluginByIndex(i);
   412 		if(plugin)
   371 		if(plugin)
   413 		{
   372 		{
   414 		plugin->RemoveObserver(aObserver);			
   373 		plugin->RemoveObserver(aObserver);
   415 		}
   374 		}
   416 	}
       
   417 }
       
   418 
       
   419 // -----------------------------------------------------------------------------
       
   420 // CFSMailClient::UnregisterRequestObserver
       
   421 // -----------------------------------------------------------------------------
       
   422 EXPORT_C void CFSMailClient::UnregisterRequestObserver(TInt aRequestId)
       
   423 {
       
   424     NM_FUNCTION;
       
   425     
       
   426 	for(TInt i=0;i<iFWImplementation->GetPluginManager().GetPluginCount();i++)
       
   427 	{
       
   428 		if(CFSMailPlugin* plugin = iFWImplementation->GetPluginManager().GetPluginByIndex(i))
       
   429 			{
       
   430 			plugin->UnregisterRequestObserver(aRequestId);
       
   431 			iFWImplementation->GetPluginManager().CompleteRequest(aRequestId);
       
   432 			}
       
   433 	}
   375 	}
   434 }
   376 }
   435 
   377 
   436 // -----------------------------------------------------------------------------
   378 // -----------------------------------------------------------------------------
   437 // CFSMailClient::SubscribeMailboxEventsL
   379 // CFSMailClient::SubscribeMailboxEventsL
   438 // -----------------------------------------------------------------------------
   380 // -----------------------------------------------------------------------------
   439 EXPORT_C void CFSMailClient::SubscribeMailboxEventsL(TFSMailMsgId aMailBoxId,
   381 EXPORT_C void CFSMailClient::SubscribeMailboxEventsL(TFSMailMsgId aMailBoxId,
   440 													 	MFSMailEventObserver& aObserver)
   382 													 	MFSMailEventObserver& aObserver)
   441 	{
   383 	{
   442     NM_FUNCTION;
   384     NM_FUNCTION;
   443     
   385 
   444 	// select plugin
   386 	// select plugin
   445 	if(CFSMailPlugin* plugin = iFWImplementation->GetPluginManager().GetPluginByUid(aMailBoxId))
   387 	if(CFSMailPlugin* plugin = iFWImplementation->GetPluginManager().GetPluginByUid(aMailBoxId))
   446 		{
   388 		{
   447 		// set observer
   389 		// set observer
   448 		plugin->SubscribeMailboxEventsL( aMailBoxId, aObserver );
   390 		plugin->SubscribeMailboxEventsL( aMailBoxId, aObserver );
   454 // -----------------------------------------------------------------------------
   396 // -----------------------------------------------------------------------------
   455 EXPORT_C void CFSMailClient::UnsubscribeMailboxEvents(TFSMailMsgId aMailBoxId,
   397 EXPORT_C void CFSMailClient::UnsubscribeMailboxEvents(TFSMailMsgId aMailBoxId,
   456 														MFSMailEventObserver& aObserver)
   398 														MFSMailEventObserver& aObserver)
   457 	{
   399 	{
   458     NM_FUNCTION;
   400     NM_FUNCTION;
   459     
   401 
   460 	// select plugin
   402 	// select plugin
   461 	if(CFSMailPlugin* plugin = iFWImplementation->GetPluginManager().GetPluginByUid(aMailBoxId))
   403 	if(CFSMailPlugin* plugin = iFWImplementation->GetPluginManager().GetPluginByUid(aMailBoxId))
   462 		{
   404 		{
   463 		// set observer
   405 		// set observer
   464 		plugin->UnsubscribeMailboxEvents( aMailBoxId, aObserver );
   406 		plugin->UnsubscribeMailboxEvents( aMailBoxId, aObserver );
   465 		}
   407 		}
   466 	}
   408 	}
   467 
   409 
   468 // -----------------------------------------------------------------------------
   410 // -----------------------------------------------------------------------------
   469 // CFSMailClient::WizardDataAvailableL
       
   470 // -----------------------------------------------------------------------------
       
   471 EXPORT_C TInt CFSMailClient::WizardDataAvailableL()
       
   472 	{
       
   473     NM_FUNCTION;
       
   474 	
       
   475 	TInt ret = KErrNone;
       
   476 	for(TInt i=0;i<iFWImplementation->GetPluginManager().GetPluginCount();i++)
       
   477 	{
       
   478 		if(CFSMailPlugin* plugin = iFWImplementation->GetPluginManager().GetPluginByIndex(i))
       
   479 			{
       
   480 			TInt rcode = plugin->WizardDataAvailableL( );
       
   481 			if(rcode != KErrNone)		
       
   482 				{
       
   483 				ret = KErrGeneral;			
       
   484 				}
       
   485 			}
       
   486 		else
       
   487 			{
       
   488 			ret = KErrGeneral;
       
   489 			}
       
   490 	}
       
   491 
       
   492 	return ret;
       
   493 	}
       
   494 
       
   495 // -----------------------------------------------------------------------------
       
   496 // CFSMailClient::AuthenticateL
       
   497 // -----------------------------------------------------------------------------
       
   498 EXPORT_C TInt CFSMailClient::AuthenticateL(MFSMailRequestObserver& aOperationObserver)
       
   499 	{
       
   500     NM_FUNCTION;
       
   501 
       
   502 	TInt requestId(0);
       
   503 	
       
   504 	for(TInt i=0;i<iFWImplementation->GetPluginManager().GetPluginCount();i++)
       
   505 	{
       
   506 		if(CFSMailPlugin* plugin = iFWImplementation->GetPluginManager().GetPluginByIndex(i))
       
   507 		{
       
   508 		    // get async request id
       
   509 		    TUid id = iFWImplementation->GetPluginManager().GetPluginIdByIndex(i);
       
   510     		TFSPendingRequest request = iFWImplementation->GetPluginManager().InitAsyncRequestL(	id,	aOperationObserver);
       
   511     		
       
   512     		// send authentication requests
       
   513 			requestId = request.iRequestId;
       
   514 			TRAPD(err,plugin->AuthenticateL( *request.iObserver, requestId ));			
       
   515 			if(err != KErrNone)
       
   516 			{
       
   517 				iFWImplementation->GetPluginManager().CompleteRequest(requestId);
       
   518 			}
       
   519 		}
       
   520 	}
       
   521 
       
   522 	return requestId;
       
   523 
       
   524 	}
       
   525 
       
   526 // -----------------------------------------------------------------------------
       
   527 // CFSMailClient::CleanTempDirL
       
   528 // -----------------------------------------------------------------------------
       
   529 EXPORT_C void CFSMailClient::CleanTempDirL( )
       
   530 	{
       
   531     NM_FUNCTION;
       
   532     
       
   533     iFWImplementation->GetPluginManager().CleanTempDirL();	
       
   534 	}
       
   535 
       
   536 // -----------------------------------------------------------------------------
       
   537 // CFSMailClient::GetTempDir
       
   538 // -----------------------------------------------------------------------------
       
   539 EXPORT_C TDesC& CFSMailClient::GetTempDirL( )
       
   540 	{
       
   541     NM_FUNCTION;
       
   542     
       
   543 	return iFWImplementation->GetPluginManager().GetTempDirL();
       
   544 	}
       
   545 
       
   546 // -----------------------------------------------------------------------------
       
   547 // CFSMailClient::CancelL
   411 // CFSMailClient::CancelL
   548 // -----------------------------------------------------------------------------
   412 // -----------------------------------------------------------------------------
   549 EXPORT_C void CFSMailClient::CancelL( const TInt aRequestId )
   413 EXPORT_C void CFSMailClient::CancelL( const TInt aRequestId )
   550 	{
   414 	{
   551     NM_FUNCTION;
   415     NM_FUNCTION;
   552     
   416 
   553 	iFWImplementation->GetPluginManager().CancelRequestL(aRequestId);
   417 	iFWImplementation->GetPluginManager().CancelRequestL(aRequestId);
   554 	}
       
   555 
       
   556 // -----------------------------------------------------------------------------
       
   557 // CFSMailClient::CancelAllL
       
   558 // -----------------------------------------------------------------------------
       
   559 EXPORT_C void CFSMailClient::CancelAllL( )
       
   560 	{
       
   561     NM_FUNCTION;
       
   562     
       
   563 		iFWImplementation->GetPluginManager().CancelAllRequestsL();
       
   564 	}
       
   565 
       
   566 // -----------------------------------------------------------------------------
       
   567 // CFSMailClient::SetMailboxName
       
   568 // -----------------------------------------------------------------------------
       
   569 EXPORT_C void CFSMailClient::SetMailboxName( const TFSMailMsgId aMailboxId, const TDesC& aMailboxName )
       
   570 	{
       
   571     NM_FUNCTION;
       
   572     
       
   573 	CFSMailPlugin* plugin = iFWImplementation->GetPluginManager().GetPluginByUid( aMailboxId );
       
   574 	if ( plugin )
       
   575 		{
       
   576 		plugin->SetMailboxName( aMailboxId, aMailboxName );
       
   577 		}
       
   578 	}
   418 	}
   579 
   419 
   580 // -----------------------------------------------------------------------------
   420 // -----------------------------------------------------------------------------
   581 // CFSMailClient::PrepareMrDescriptionL
   421 // CFSMailClient::PrepareMrDescriptionL
   582 // -----------------------------------------------------------------------------
   422 // -----------------------------------------------------------------------------
   588     CFSMailPlugin* plugin = iFWImplementation->GetPluginManager().GetPluginByUid( aMessageId );
   428     CFSMailPlugin* plugin = iFWImplementation->GetPluginManager().GetPluginByUid( aMessageId );
   589     if ( plugin )
   429     if ( plugin )
   590         {
   430         {
   591         // set MR description from the plugin
   431         // set MR description from the plugin
   592         plugin->PrepareMrDescriptionL( aMailBoxId, aMessageId );
   432         plugin->PrepareMrDescriptionL( aMailBoxId, aMessageId );
   593         }  
   433         }
   594     }
   434     }
   595 
   435 
       
   436 // -----------------------------------------------------------------------------
   596 // <qmail>
   437 // <qmail>
   597 // -----------------------------------------------------------------------------
   438 // -----------------------------------------------------------------------------
   598 // CFSMailClient::GetSignatureL
   439 // CFSMailClient::GetSignatureL
   599 // -----------------------------------------------------------------------------
   440 // -----------------------------------------------------------------------------
   600 EXPORT_C HBufC* CFSMailClient::GetSignatureL( const TFSMailMsgId& aMailBoxId )
   441 EXPORT_C HBufC* CFSMailClient::GetSignatureL( const TFSMailMsgId& aMailBoxId )
   601     {
   442     {
   602     NM_FUNCTION;
   443     NM_FUNCTION;
   603     HBufC* ret = NULL;
   444     HBufC* ret = NULL;
   604     
   445 
   605     // select plugin
   446     // select plugin
   606     CFSMailPlugin* plugin =
   447     CFSMailPlugin* plugin =
   607         iFWImplementation->GetPluginManager().GetPluginByUid( aMailBoxId );
   448         iFWImplementation->GetPluginManager().GetPluginByUid( aMailBoxId );
   608     if ( plugin )
   449     if ( plugin )
   609         {
   450         {
   618 // CFSMailClient::Close
   459 // CFSMailClient::Close
   619 // -----------------------------------------------------------------------------
   460 // -----------------------------------------------------------------------------
   620 EXPORT_C void CFSMailClient::Close()
   461 EXPORT_C void CFSMailClient::Close()
   621 {
   462 {
   622     NM_FUNCTION;
   463     NM_FUNCTION;
   623     
   464 
   624 	CFSMailClient* instance = Instance();
   465 	CFSMailClient* instance = Instance();
   625 	if(!instance)
   466 	if(!instance)
   626 	{
   467 	{
   627 		return;
   468 		return;
   628 	}
   469 	}
   630 	if(instance->DecReferenceCount() == 0)
   471 	if(instance->DecReferenceCount() == 0)
   631 	{
   472 	{
   632 		if(iFWImplementation)
   473 		if(iFWImplementation)
   633 		{
   474 		{
   634 			delete iFWImplementation;
   475 			delete iFWImplementation;
   635 			iFWImplementation = NULL;		
   476 			iFWImplementation = NULL;
   636 		}
   477 		}
   637 		Dll::FreeTls();
   478 		Dll::FreeTls();
   638   		delete instance;
   479   		delete instance;
   639 	}
   480 	}
   640 }
   481 }
   641 	
   482 
   642 // -----------------------------------------------------------------------------
   483 // -----------------------------------------------------------------------------
   643 // CFSMailClient::Instance
   484 // CFSMailClient::Instance
   644 // -----------------------------------------------------------------------------
   485 // -----------------------------------------------------------------------------
   645 CFSMailClient* CFSMailClient::Instance()
   486 CFSMailClient* CFSMailClient::Instance()
   646 {
   487 {
   647     NM_FUNCTION;
   488     NM_FUNCTION;
   648     
   489 
   649 	return static_cast<CFSMailClient*>(Dll::Tls());
   490 	return static_cast<CFSMailClient*>(Dll::Tls());
   650 }
   491 }
   651 
   492 
   652 // -----------------------------------------------------------------------------
   493 // -----------------------------------------------------------------------------
   653 // CFSMailClient::IncReferenceCount
   494 // CFSMailClient::IncReferenceCount
   654 // -----------------------------------------------------------------------------
   495 // -----------------------------------------------------------------------------
   655 EXPORT_C TInt CFSMailClient::IncReferenceCount()
   496 EXPORT_C TInt CFSMailClient::IncReferenceCount()
   656 {
   497 {
   657     NM_FUNCTION;
   498     NM_FUNCTION;
   658     
   499 
   659 	return ++iReferenceCount;
   500 	return ++iReferenceCount;
   660 }
   501 }
   661 
   502 
   662 // -----------------------------------------------------------------------------
   503 // -----------------------------------------------------------------------------
   663 // CFSMailClient::DecReferenceCount
   504 // CFSMailClient::DecReferenceCount
   664 // -----------------------------------------------------------------------------
   505 // -----------------------------------------------------------------------------
   665 TInt CFSMailClient::DecReferenceCount()
   506 TInt CFSMailClient::DecReferenceCount()
   666 {
   507 {
   667     NM_FUNCTION;
   508     NM_FUNCTION;
   668     
   509 
   669 	return --iReferenceCount;
   510 	return --iReferenceCount;
   670 }
   511 }
   671 
   512 
   672 // -----------------------------------------------------------------------------
   513 // -----------------------------------------------------------------------------
   673 // CFSMailClient::ReleaseExtension
   514 // CFSMailClient::ReleaseExtension
   674 // -----------------------------------------------------------------------------
   515 // -----------------------------------------------------------------------------
   675 EXPORT_C void CFSMailClient::ReleaseExtension( CEmailExtension* aExtension )
   516 EXPORT_C void CFSMailClient::ReleaseExtension( CEmailExtension* aExtension )
   676     {
   517     {
   677     NM_FUNCTION;
   518     NM_FUNCTION;
   678     
   519 
   679     CExtendableEmail::ReleaseExtension( aExtension );
   520     CExtendableEmail::ReleaseExtension( aExtension );
   680     }
   521     }
   681 
   522 
   682 // -----------------------------------------------------------------------------
   523 // -----------------------------------------------------------------------------
   683 // CFSMailClient::ExtensionL
   524 // CFSMailClient::ExtensionL
   684 // -----------------------------------------------------------------------------
   525 // -----------------------------------------------------------------------------
   685 EXPORT_C CEmailExtension* CFSMailClient::ExtensionL( const TUid& aInterfaceUid )
   526 EXPORT_C CEmailExtension* CFSMailClient::ExtensionL( const TUid& aInterfaceUid )
   686     {
   527     {
   687     NM_FUNCTION;
   528     NM_FUNCTION;
   688     
   529 
   689     return CExtendableEmail::ExtensionL( aInterfaceUid );
   530     return CExtendableEmail::ExtensionL( aInterfaceUid );
   690     }
   531     }
   691     
   532