emailservices/emailframework/commonlib/src/CFSMailRequestHandler.cpp
branchRCL_3
changeset 8 e1b6206813b4
parent 4 e7aa27f58ae1
child 13 0396474f30f5
equal deleted inserted replaced
4:e7aa27f58ae1 8:e1b6206813b4
     1 /*
     1 /*
     2 * Copyright (c) 2007-2008 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".
    15 *
    15 *
    16 */
    16 */
    17 
    17 
    18 
    18 
    19 #include "emailtrace.h"
    19 #include "emailtrace.h"
    20 #include "CFSMailRequestHandler.h"
    20 #include "cfsmailrequesthandler.h"
    21 #include "CFSMailRequestObserver.h"
    21 #include "cfsmailrequestobserver.h"
    22 
    22 
    23 
    23 
    24 // ================= MEMBER FUNCTIONS ==========================================	
    24 // ================= MEMBER FUNCTIONS ==========================================    
    25 // -----------------------------------------------------------------------------
    25 // -----------------------------------------------------------------------------
    26 // CFSMailRequestHandler::CFSMailRequestHandler
    26 // CFSMailRequestHandler::CFSMailRequestHandler
    27 // -----------------------------------------------------------------------------
    27 // -----------------------------------------------------------------------------
    28 EXPORT_C CFSMailRequestHandler::CFSMailRequestHandler() : iRequestId(0)
    28 EXPORT_C CFSMailRequestHandler::CFSMailRequestHandler() : iRequestId(0)
    29 {
    29 {
    30     FUNC_LOG;
    30     FUNC_LOG;
    31 
    31 
    32 	// store pointer to TLS
    32     // store pointer to TLS
    33 	TInt err = Dll::SetTls(static_cast<TAny*>(this));
    33     TInt err = Dll::SetTls(static_cast<TAny*>(this));
    34 
    34 
    35 	// reset 
    35     // reset 
    36 	iPendingRequests.Reset();
    36     iPendingRequests.Reset();
    37 	iPluginList.Reset();
    37     iPluginList.Reset();
    38 	
    38     
    39 	iTempDirName =NULL;
    39     iTempDirName =NULL;
    40 }
    40 }
    41 
    41 
    42 // -----------------------------------------------------------------------------
    42 // -----------------------------------------------------------------------------
    43 // CFSMailRequestHandler::~CFSMailRequestHandler
    43 // CFSMailRequestHandler::~CFSMailRequestHandler
    44 // -----------------------------------------------------------------------------
    44 // -----------------------------------------------------------------------------
    60 
    60 
    61 // -----------------------------------------------------------------------------
    61 // -----------------------------------------------------------------------------
    62 // CFSMailRequestHandler::NewLC
    62 // CFSMailRequestHandler::NewLC
    63 // -----------------------------------------------------------------------------
    63 // -----------------------------------------------------------------------------
    64 EXPORT_C CFSMailRequestHandler* CFSMailRequestHandler::NewLC( 
    64 EXPORT_C CFSMailRequestHandler* CFSMailRequestHandler::NewLC( 
    65 									RPointerArray<CImplementationInformation>& aPluginInfo,
    65                                     RPointerArray<CImplementationInformation>& aPluginInfo,
    66 									RPointerArray<CFSMailPlugin>& aPlugins )
    66                                     RPointerArray<CFSMailPlugin>& aPlugins )
    67 {
    67 {
    68     FUNC_LOG;
    68     FUNC_LOG;
    69   CFSMailRequestHandler* pluginHandler = new (ELeave) CFSMailRequestHandler();
    69   CFSMailRequestHandler* pluginHandler = new (ELeave) CFSMailRequestHandler();
    70   CleanupStack:: PushL(pluginHandler);
    70   CleanupStack:: PushL(pluginHandler);
    71   pluginHandler->ConstructL( aPluginInfo, aPlugins );
    71   pluginHandler->ConstructL( aPluginInfo, aPlugins );
    74 
    74 
    75 // -----------------------------------------------------------------------------
    75 // -----------------------------------------------------------------------------
    76 // CFSMailRequestHandler::NewL
    76 // CFSMailRequestHandler::NewL
    77 // -----------------------------------------------------------------------------
    77 // -----------------------------------------------------------------------------
    78 EXPORT_C CFSMailRequestHandler* CFSMailRequestHandler::NewL( 
    78 EXPORT_C CFSMailRequestHandler* CFSMailRequestHandler::NewL( 
    79 									RPointerArray<CImplementationInformation>& aPluginInfo,
    79                                     RPointerArray<CImplementationInformation>& aPluginInfo,
    80 									RPointerArray<CFSMailPlugin>& aPlugins )
    80                                     RPointerArray<CFSMailPlugin>& aPlugins )
    81 {
    81 {
    82     FUNC_LOG;
    82     FUNC_LOG;
    83   CFSMailRequestHandler* pluginHandler =  
    83   CFSMailRequestHandler* pluginHandler =  
    84   				CFSMailRequestHandler::NewLC( aPluginInfo, aPlugins );
    84                 CFSMailRequestHandler::NewLC( aPluginInfo, aPlugins );
    85   CleanupStack:: Pop(pluginHandler);
    85   CleanupStack:: Pop(pluginHandler);
    86   return pluginHandler;
    86   return pluginHandler;
    87 }
    87 }
    88 
    88 
    89 // -----------------------------------------------------------------------------
    89 // -----------------------------------------------------------------------------
    90 // CFSMailRequestHandler::ConstructL
    90 // CFSMailRequestHandler::ConstructL
    91 // -----------------------------------------------------------------------------
    91 // -----------------------------------------------------------------------------
    92 void CFSMailRequestHandler::ConstructL( 
    92 void CFSMailRequestHandler::ConstructL( 
    93 								RPointerArray<CImplementationInformation> /*aPluginInfo*/,
    93                                 RPointerArray<CImplementationInformation> /*aPluginInfo*/,
    94 								RPointerArray<CFSMailPlugin> /*aPlugins*/ )
    94                                 RPointerArray<CFSMailPlugin> /*aPlugins*/ )
    95 {
    95 {
    96     FUNC_LOG;
    96     FUNC_LOG;
    97 
    97 
    98 
    98 
    99 }
    99 }
   100 
   100 
   101 // -----------------------------------------------------------------------------
   101 // -----------------------------------------------------------------------------
   102 // CFSMailRequestHandler::GetPluginByUid
   102 // CFSMailRequestHandler::GetPluginByUid
   103 // -----------------------------------------------------------------------------
   103 // -----------------------------------------------------------------------------
   104 EXPORT_C CFSMailPlugin* CFSMailRequestHandler::GetPluginByUid(TFSMailMsgId aObjectId)
   104 EXPORT_C CFSMailPlugin* CFSMailRequestHandler::GetPluginByUid(TFSMailMsgId aObjectId)
   105 	{
   105     {
   106     FUNC_LOG;
   106     FUNC_LOG;
   107 
   107 
   108 	for(TInt i=0;i<iPluginList.Count();i++)
   108     for(TInt i=0;i<iPluginList.Count();i++)
   109 		{
   109         {
   110 		if(iPluginList[i]->iPluginId.iUid == aObjectId.PluginId().iUid)
   110         if(iPluginList[i]->iPluginId.iUid == aObjectId.PluginId().iUid)
   111 			{
   111             {
   112 			return iPluginList[i]->iPlugin;
   112             return iPluginList[i]->iPlugin;
   113 			}
   113             }
   114 		}
   114         }
   115 
   115 
   116 
   116 
   117 	return NULL;
   117     return NULL;
   118 	}
   118     }
   119 	
   119     
   120 // -----------------------------------------------------------------------------
   120 // -----------------------------------------------------------------------------
   121 // CFSMailRequestHandler::InitAsyncRequestL
   121 // CFSMailRequestHandler::InitAsyncRequestL
   122 // -----------------------------------------------------------------------------
   122 // -----------------------------------------------------------------------------
   123 EXPORT_C TFSPendingRequest CFSMailRequestHandler::InitAsyncRequestL( 
   123 EXPORT_C TFSPendingRequest CFSMailRequestHandler::InitAsyncRequestL( 
   124 													TUid aPluginId,
   124                                                     TUid aPluginId,
   125 													MFSMailRequestObserver& aOperationObserver)
   125                                                     MFSMailRequestObserver& aOperationObserver)
   126 	{
   126     {
   127     FUNC_LOG;
   127     FUNC_LOG;
   128 		TFSPendingRequest newRequest;
   128         TFSPendingRequest newRequest;
   129 		for(TInt i=0;i<iPendingRequests.Count();i++)
   129         for(TInt i=0;i<iPendingRequests.Count();i++)
   130 			{
   130             {
   131 			if(iPendingRequests[i].iRequestStatus != TFSPendingRequest::EFSRequestPending)
   131             if(iPendingRequests[i].iRequestStatus != TFSPendingRequest::EFSRequestPending)
   132 				{
   132                 {
   133 				iPendingRequests[i].iPluginId = aPluginId;
   133                 iPendingRequests[i].iPluginId = aPluginId;
   134 				iPendingRequests[i].iRequestStatus = TFSPendingRequest::EFSRequestPending;
   134                 iPendingRequests[i].iRequestStatus = TFSPendingRequest::EFSRequestPending;
   135 				iPendingRequests[i].iObserver->SetUserObserver(aOperationObserver);			
   135                 iPendingRequests[i].iObserver->SetUserObserver(aOperationObserver);         
   136 				newRequest = iPendingRequests[i];
   136                 newRequest = iPendingRequests[i];
   137 				return newRequest;
   137                 return newRequest;
   138 				}
   138                 }
   139 			}
   139             }
   140 
   140 
   141 		newRequest.iRequestId = iPendingRequests.Count();
   141         newRequest.iRequestId = iPendingRequests.Count();
   142 		newRequest.iPluginId = aPluginId;
   142         newRequest.iPluginId = aPluginId;
   143 		newRequest.iRequestStatus = TFSPendingRequest::EFSRequestPending;			
   143         newRequest.iRequestStatus = TFSPendingRequest::EFSRequestPending;           
   144     	CFSMailRequestObserver* observer = 
   144         CFSMailRequestObserver* observer = 
   145     		CFSMailRequestObserver::NewL(*this, aOperationObserver);
   145             CFSMailRequestObserver::NewL(*this, aOperationObserver);
   146 		newRequest.iObserver = observer;
   146         newRequest.iObserver = observer;
   147 		iPendingRequests.Append(newRequest);
   147         iPendingRequests.Append(newRequest);
   148     	
   148         
   149 		return newRequest;
   149         return newRequest;
   150 	}
   150     }
   151 
   151 
   152 // -----------------------------------------------------------------------------
   152 // -----------------------------------------------------------------------------
   153 // CFSMailRequestHandler::CompleteRequest
   153 // CFSMailRequestHandler::CompleteRequest
   154 // -----------------------------------------------------------------------------
   154 // -----------------------------------------------------------------------------
   155 EXPORT_C void CFSMailRequestHandler::CompleteRequest( TInt aRequestId )
   155 EXPORT_C void CFSMailRequestHandler::CompleteRequest( TInt aRequestId )
   156 	{
   156     {
   157     FUNC_LOG;
   157     FUNC_LOG;
   158 		for(TInt i=0;i<iPendingRequests.Count();i++)
   158         for(TInt i=0;i<iPendingRequests.Count();i++)
   159 		{
   159         {
   160 		if(iPendingRequests[i].iRequestId == aRequestId)
   160         if(iPendingRequests[i].iRequestId == aRequestId)
   161 			{
   161             {
   162 			iPendingRequests[i].iRequestStatus = TFSPendingRequest::EFSRequestComplete;
   162             iPendingRequests[i].iRequestStatus = TFSPendingRequest::EFSRequestComplete;
   163 			break;
   163             break;
   164 			}
   164             }
   165 		}
   165         }
   166 
   166 
   167 	}
   167     }
   168 	
   168     
   169 // -----------------------------------------------------------------------------
   169 // -----------------------------------------------------------------------------
   170 // CFSMailRequestHandler::CancelRequestL
   170 // CFSMailRequestHandler::CancelRequestL
   171 // -----------------------------------------------------------------------------
   171 // -----------------------------------------------------------------------------
   172 EXPORT_C void CFSMailRequestHandler::CancelRequestL( TInt aRequestId )
   172 EXPORT_C void CFSMailRequestHandler::CancelRequestL( TInt aRequestId )
   173 	{
   173     {
   174     FUNC_LOG;
   174     FUNC_LOG;
   175 		for(TInt i=0;i<iPendingRequests.Count();i++)
   175         for(TInt i=0;i<iPendingRequests.Count();i++)
   176 		{
   176         {
   177 		if(iPendingRequests[i].iRequestId == aRequestId &&
   177         if(iPendingRequests[i].iRequestId == aRequestId &&
   178 			iPendingRequests[i].iRequestStatus == TFSPendingRequest::EFSRequestPending)
   178             iPendingRequests[i].iRequestStatus == TFSPendingRequest::EFSRequestPending)
   179 			{
   179             {
   180 			TFSMailMsgId pluginId(iPendingRequests[i].iPluginId,0);
   180             TFSMailMsgId pluginId(iPendingRequests[i].iPluginId,0);
   181 			if(CFSMailPlugin* plugin = GetPluginByUid(pluginId))
   181             if(CFSMailPlugin* plugin = GetPluginByUid(pluginId))
   182 			    {
   182                 {
   183 			    plugin->CancelL(aRequestId);
   183                 plugin->CancelL(aRequestId);
   184 			    }
   184                 }
   185 			iPendingRequests[i].iRequestStatus = TFSPendingRequest::EFSRequestCancelled;
   185             iPendingRequests[i].iRequestStatus = TFSPendingRequest::EFSRequestCancelled;
   186 			break;
   186             break;
   187 			}
   187             }
   188 		}
   188         }
   189 	}
   189     }
   190 
   190 
   191 // -----------------------------------------------------------------------------
   191 // -----------------------------------------------------------------------------
   192 // CFSMailRequestHandler::CancelAllRequestsL
   192 // CFSMailRequestHandler::CancelAllRequestsL
   193 // -----------------------------------------------------------------------------
   193 // -----------------------------------------------------------------------------
   194 EXPORT_C void CFSMailRequestHandler::CancelAllRequestsL( )
   194 EXPORT_C void CFSMailRequestHandler::CancelAllRequestsL( )
   195 	{
   195     {
   196     FUNC_LOG;
   196     FUNC_LOG;
   197 		for(TInt i=0;i<iPendingRequests.Count();i++)
   197         for(TInt i=0;i<iPendingRequests.Count();i++)
   198 		{
   198         {
   199 			if(iPendingRequests[i].iRequestStatus == TFSPendingRequest::EFSRequestPending)
   199             if(iPendingRequests[i].iRequestStatus == TFSPendingRequest::EFSRequestPending)
   200 				{
   200                 {
   201 				TFSMailMsgId pluginId(iPendingRequests[i].iPluginId,0);
   201                 TFSMailMsgId pluginId(iPendingRequests[i].iPluginId,0);
   202 				if(CFSMailPlugin* plugin = GetPluginByUid(pluginId))
   202                 if(CFSMailPlugin* plugin = GetPluginByUid(pluginId))
   203 				    {
   203                     {
   204 				    plugin->CancelL(iPendingRequests[i].iRequestId);
   204                     plugin->CancelL(iPendingRequests[i].iRequestId);
   205 				    }
   205                     }
   206 				iPendingRequests[i].iRequestStatus = TFSPendingRequest::EFSRequestCancelled;
   206                 iPendingRequests[i].iRequestStatus = TFSPendingRequest::EFSRequestCancelled;
   207 				}
   207                 }
   208 		}
   208         }
   209 	}
   209     }
   210 
   210 
   211 // -----------------------------------------------------------------------------
   211 // -----------------------------------------------------------------------------
   212 // CFSMailRequestHandler::AddPluginL
   212 // CFSMailRequestHandler::AddPluginL
   213 // -----------------------------------------------------------------------------
   213 // -----------------------------------------------------------------------------
   214 EXPORT_C void CFSMailRequestHandler::AddPluginL( TUid aPluginId, CFSMailPlugin* aPlugin )
   214 EXPORT_C void CFSMailRequestHandler::AddPluginL( TUid aPluginId, CFSMailPlugin* aPlugin )
   215 	{
   215     {
   216     FUNC_LOG;
   216     FUNC_LOG;
   217 
   217 
   218 	CFSMailPluginData* pluginData = new (ELeave) CFSMailPluginData;
   218     CFSMailPluginData* pluginData = new (ELeave) CFSMailPluginData;
   219 	pluginData->iPluginId = aPluginId;
   219     pluginData->iPluginId = aPluginId;
   220 	pluginData->iPlugin = aPlugin;
   220     pluginData->iPlugin = aPlugin;
   221 	iPluginList.Append(pluginData);				
   221     iPluginList.Append(pluginData);             
   222 
   222 
   223 	}
   223     }
   224 
   224 
   225 // -----------------------------------------------------------------------------
   225 // -----------------------------------------------------------------------------
   226 // CFSMailRequestHandler::RemoveAllRequests
   226 // CFSMailRequestHandler::RemoveAllRequests
   227 // -----------------------------------------------------------------------------
   227 // -----------------------------------------------------------------------------
   228 void CFSMailRequestHandler::RemoveAllRequests()
   228 void CFSMailRequestHandler::RemoveAllRequests()