24 |
24 |
25 #include "CFSMailRequestHandler.h" |
25 #include "CFSMailRequestHandler.h" |
26 #include "CFSMailRequestObserver.h" |
26 #include "CFSMailRequestObserver.h" |
27 |
27 |
28 |
28 |
29 // ================= MEMBER FUNCTIONS ========================================== |
29 // ================= MEMBER FUNCTIONS ========================================== |
30 // ----------------------------------------------------------------------------- |
30 // ----------------------------------------------------------------------------- |
31 // CFSMailRequestHandler::CFSMailRequestHandler |
31 // CFSMailRequestHandler::CFSMailRequestHandler |
32 // ----------------------------------------------------------------------------- |
32 // ----------------------------------------------------------------------------- |
33 CFSMailRequestHandler::CFSMailRequestHandler() : iRequestId(0) |
33 CFSMailRequestHandler::CFSMailRequestHandler() : iRequestId(0) |
34 { |
34 { |
35 NM_FUNCTION; |
35 NM_FUNCTION; |
36 |
36 |
37 // store pointer to TLS |
37 // store pointer to TLS |
38 TInt err = Dll::SetTls(static_cast<TAny*>(this)); |
38 TInt err = Dll::SetTls(static_cast<TAny*>(this)); |
39 |
39 |
40 // reset |
40 // reset |
41 iPendingRequests.Reset(); |
41 iPendingRequests.Reset(); |
42 iPluginList.Reset(); |
42 iPluginList.Reset(); |
43 |
43 |
44 iTempDirName =NULL; |
44 iTempDirName =NULL; |
45 } |
45 } |
46 |
46 |
47 // ----------------------------------------------------------------------------- |
47 // ----------------------------------------------------------------------------- |
48 // CFSMailRequestHandler::~CFSMailRequestHandler |
48 // CFSMailRequestHandler::~CFSMailRequestHandler |
49 // ----------------------------------------------------------------------------- |
49 // ----------------------------------------------------------------------------- |
50 CFSMailRequestHandler::~CFSMailRequestHandler() |
50 CFSMailRequestHandler::~CFSMailRequestHandler() |
51 { |
51 { |
52 NM_FUNCTION; |
52 NM_FUNCTION; |
53 |
53 |
54 TRAP_IGNORE( CancelAllRequestsL() ); |
54 TRAP_IGNORE( CancelAllRequestsL() ); |
55 RemoveAllRequests(); |
55 RemoveAllRequests(); |
56 iPendingRequests.Reset(); |
56 iPendingRequests.Reset(); |
57 iPluginList.ResetAndDestroy(); |
57 iPluginList.ResetAndDestroy(); |
58 |
58 |
59 if(iTempDirName) |
59 if(iTempDirName) |
60 { |
60 { |
61 delete iTempDirName; |
61 delete iTempDirName; |
62 // close file server connection |
62 // close file server connection |
63 iFs.Close(); |
63 iFs.Close(); |
64 } |
64 } |
65 |
65 |
66 // clear TLS |
66 // clear TLS |
67 Dll::FreeTls(); |
67 Dll::FreeTls(); |
68 } |
68 } |
69 |
69 |
70 // ----------------------------------------------------------------------------- |
70 // ----------------------------------------------------------------------------- |
71 // CFSMailRequestHandler::NewLC |
71 // CFSMailRequestHandler::NewLC |
72 // ----------------------------------------------------------------------------- |
72 // ----------------------------------------------------------------------------- |
73 CFSMailRequestHandler* CFSMailRequestHandler::NewLC( |
73 CFSMailRequestHandler* CFSMailRequestHandler::NewLC( |
74 RPointerArray<CImplementationInformation>& aPluginInfo, |
74 RPointerArray<CImplementationInformation>& aPluginInfo, |
75 RPointerArray<CFSMailPlugin>& aPlugins ) |
75 RPointerArray<CFSMailPlugin>& aPlugins ) |
76 { |
76 { |
77 NM_FUNCTION; |
77 NM_FUNCTION; |
78 |
78 |
79 CFSMailRequestHandler* pluginHandler = new (ELeave) CFSMailRequestHandler(); |
79 CFSMailRequestHandler* pluginHandler = new (ELeave) CFSMailRequestHandler(); |
80 CleanupStack:: PushL(pluginHandler); |
80 CleanupStack:: PushL(pluginHandler); |
81 pluginHandler->ConstructL( aPluginInfo, aPlugins ); |
81 pluginHandler->ConstructL( aPluginInfo, aPlugins ); |
82 return pluginHandler; |
82 return pluginHandler; |
83 } |
83 } |
84 |
84 |
85 // ----------------------------------------------------------------------------- |
85 // ----------------------------------------------------------------------------- |
86 // CFSMailRequestHandler::NewL |
86 // CFSMailRequestHandler::NewL |
87 // ----------------------------------------------------------------------------- |
87 // ----------------------------------------------------------------------------- |
88 CFSMailRequestHandler* CFSMailRequestHandler::NewL( |
88 CFSMailRequestHandler* CFSMailRequestHandler::NewL( |
89 RPointerArray<CImplementationInformation>& aPluginInfo, |
89 RPointerArray<CImplementationInformation>& aPluginInfo, |
90 RPointerArray<CFSMailPlugin>& aPlugins ) |
90 RPointerArray<CFSMailPlugin>& aPlugins ) |
91 { |
91 { |
92 NM_FUNCTION; |
92 NM_FUNCTION; |
93 |
93 |
94 CFSMailRequestHandler* pluginHandler = |
94 CFSMailRequestHandler* pluginHandler = |
95 CFSMailRequestHandler::NewLC( aPluginInfo, aPlugins ); |
95 CFSMailRequestHandler::NewLC( aPluginInfo, aPlugins ); |
96 CleanupStack:: Pop(pluginHandler); |
96 CleanupStack:: Pop(pluginHandler); |
97 return pluginHandler; |
97 return pluginHandler; |
98 } |
98 } |
99 |
99 |
100 // ----------------------------------------------------------------------------- |
100 // ----------------------------------------------------------------------------- |
101 // CFSMailRequestHandler::ConstructL |
101 // CFSMailRequestHandler::ConstructL |
102 // ----------------------------------------------------------------------------- |
102 // ----------------------------------------------------------------------------- |
103 void CFSMailRequestHandler::ConstructL( |
103 void CFSMailRequestHandler::ConstructL( |
104 RPointerArray<CImplementationInformation> /*aPluginInfo*/, |
104 RPointerArray<CImplementationInformation> /*aPluginInfo*/, |
105 RPointerArray<CFSMailPlugin> /*aPlugins*/ ) |
105 RPointerArray<CFSMailPlugin> /*aPlugins*/ ) |
106 { |
106 { |
107 NM_FUNCTION; |
107 NM_FUNCTION; |
108 } |
108 } |
123 } |
123 } |
124 |
124 |
125 |
125 |
126 return NULL; |
126 return NULL; |
127 } |
127 } |
128 |
128 |
129 // ----------------------------------------------------------------------------- |
129 // ----------------------------------------------------------------------------- |
130 // CFSMailRequestHandler::InitAsyncRequestL |
130 // CFSMailRequestHandler::InitAsyncRequestL |
131 // ----------------------------------------------------------------------------- |
131 // ----------------------------------------------------------------------------- |
132 TFSPendingRequest CFSMailRequestHandler::InitAsyncRequestL( |
132 TFSPendingRequest CFSMailRequestHandler::InitAsyncRequestL( |
133 TUid aPluginId, |
133 TUid aPluginId, |
134 MFSMailRequestObserver& aOperationObserver) |
134 MFSMailRequestObserver& aOperationObserver) |
135 { |
135 { |
136 NM_FUNCTION; |
136 NM_FUNCTION; |
137 |
137 |
138 TFSPendingRequest newRequest; |
138 TFSPendingRequest newRequest; |
139 for(TInt i=0;i<iPendingRequests.Count();i++) |
139 for(TInt i=0;i<iPendingRequests.Count();i++) |
140 { |
140 { |
141 if(iPendingRequests[i].iRequestStatus != TFSPendingRequest::EFSRequestPending) |
141 if(iPendingRequests[i].iRequestStatus != TFSPendingRequest::EFSRequestPending) |
142 { |
142 { |
143 iPendingRequests[i].iPluginId = aPluginId; |
143 iPendingRequests[i].iPluginId = aPluginId; |
144 iPendingRequests[i].iRequestStatus = TFSPendingRequest::EFSRequestPending; |
144 iPendingRequests[i].iRequestStatus = TFSPendingRequest::EFSRequestPending; |
145 iPendingRequests[i].iObserver->SetUserObserver(aOperationObserver); |
145 iPendingRequests[i].iObserver->SetUserObserver(aOperationObserver); |
146 newRequest = iPendingRequests[i]; |
146 newRequest = iPendingRequests[i]; |
147 return newRequest; |
147 return newRequest; |
148 } |
148 } |
149 } |
149 } |
150 |
150 |
151 newRequest.iRequestId = iPendingRequests.Count(); |
151 newRequest.iRequestId = iPendingRequests.Count(); |
152 newRequest.iPluginId = aPluginId; |
152 newRequest.iPluginId = aPluginId; |
153 newRequest.iRequestStatus = TFSPendingRequest::EFSRequestPending; |
153 newRequest.iRequestStatus = TFSPendingRequest::EFSRequestPending; |
154 CFSMailRequestObserver* observer = |
154 CFSMailRequestObserver* observer = |
155 CFSMailRequestObserver::NewL(*this, aOperationObserver); |
155 CFSMailRequestObserver::NewL(*this, aOperationObserver); |
156 newRequest.iObserver = observer; |
156 newRequest.iObserver = observer; |
157 iPendingRequests.AppendL(newRequest); |
157 iPendingRequests.AppendL(newRequest); |
158 |
158 |
159 return newRequest; |
159 return newRequest; |
160 } |
160 } |
161 |
161 |
162 // ----------------------------------------------------------------------------- |
162 // ----------------------------------------------------------------------------- |
163 // CFSMailRequestHandler::CompleteRequest |
163 // CFSMailRequestHandler::CompleteRequest |
164 // ----------------------------------------------------------------------------- |
164 // ----------------------------------------------------------------------------- |
165 void CFSMailRequestHandler::CompleteRequest( TInt aRequestId ) |
165 void CFSMailRequestHandler::CompleteRequest( TInt aRequestId ) |
166 { |
166 { |
167 NM_FUNCTION; |
167 NM_FUNCTION; |
168 |
168 |
169 for(TInt i=0;i<iPendingRequests.Count();i++) |
169 for(TInt i=0;i<iPendingRequests.Count();i++) |
170 { |
170 { |
171 if(iPendingRequests[i].iRequestId == aRequestId) |
171 if(iPendingRequests[i].iRequestId == aRequestId) |
172 { |
172 { |
173 iPendingRequests[i].iRequestStatus = TFSPendingRequest::EFSRequestComplete; |
173 iPendingRequests[i].iRequestStatus = TFSPendingRequest::EFSRequestComplete; |
174 break; |
174 break; |
175 } |
175 } |
176 } |
176 } |
177 |
177 |
178 } |
178 } |
179 |
179 |
180 // ----------------------------------------------------------------------------- |
180 // ----------------------------------------------------------------------------- |
181 // CFSMailRequestHandler::CancelRequestL |
181 // CFSMailRequestHandler::CancelRequestL |
182 // ----------------------------------------------------------------------------- |
182 // ----------------------------------------------------------------------------- |
183 void CFSMailRequestHandler::CancelRequestL( TInt aRequestId ) |
183 void CFSMailRequestHandler::CancelRequestL( TInt aRequestId ) |
184 { |
184 { |
185 NM_FUNCTION; |
185 NM_FUNCTION; |
186 |
186 |
187 for(TInt i=0;i<iPendingRequests.Count();i++) |
187 for(TInt i=0;i<iPendingRequests.Count();i++) |
188 { |
188 { |
189 if(iPendingRequests[i].iRequestId == aRequestId && |
189 if(iPendingRequests[i].iRequestId == aRequestId && |
190 iPendingRequests[i].iRequestStatus == TFSPendingRequest::EFSRequestPending) |
190 iPendingRequests[i].iRequestStatus == TFSPendingRequest::EFSRequestPending) |
191 { |
191 { |
229 NM_FUNCTION; |
229 NM_FUNCTION; |
230 |
230 |
231 CFSMailPluginData* pluginData = new (ELeave) CFSMailPluginData; |
231 CFSMailPluginData* pluginData = new (ELeave) CFSMailPluginData; |
232 pluginData->iPluginId = aPluginId; |
232 pluginData->iPluginId = aPluginId; |
233 pluginData->iPlugin = aPlugin; |
233 pluginData->iPlugin = aPlugin; |
234 iPluginList.AppendL(pluginData); |
234 iPluginList.AppendL(pluginData); |
235 } |
235 } |
236 |
236 |
237 // ----------------------------------------------------------------------------- |
237 // ----------------------------------------------------------------------------- |
238 // CFSMailRequestHandler::RemoveAllRequests |
238 // CFSMailRequestHandler::RemoveAllRequests |
239 // ----------------------------------------------------------------------------- |
239 // ----------------------------------------------------------------------------- |
240 void CFSMailRequestHandler::RemoveAllRequests() |
240 void CFSMailRequestHandler::RemoveAllRequests() |
241 { |
241 { |
242 NM_FUNCTION; |
242 NM_FUNCTION; |
243 |
243 |
244 for(TInt i=0;i<iPendingRequests.Count();i++) |
244 for(TInt i=0;i<iPendingRequests.Count();i++) |
245 { |
245 { |
246 delete iPendingRequests[i].iObserver; |
246 delete iPendingRequests[i].iObserver; |
247 iPendingRequests[i].iObserver = NULL; |
247 iPendingRequests[i].iObserver = NULL; |
248 } |
248 } |
252 // CFSMailRequestHandler::GetTempFileL( ) |
252 // CFSMailRequestHandler::GetTempFileL( ) |
253 // ----------------------------------------------------------------------------- |
253 // ----------------------------------------------------------------------------- |
254 RFile CFSMailRequestHandler::GetTempFileL( TFSMailMsgId aContentId, TFileName aFileName ) |
254 RFile CFSMailRequestHandler::GetTempFileL( TFSMailMsgId aContentId, TFileName aFileName ) |
255 { |
255 { |
256 NM_FUNCTION; |
256 NM_FUNCTION; |
257 |
257 |
258 // get temp dir path |
258 // get temp dir path |
259 if(iTempDirName == NULL) |
259 if(!iTempDirName) |
260 { |
260 { |
261 // open file server connection |
261 // open file server connection |
262 User::LeaveIfError(iFs.Connect()); |
262 User::LeaveIfError(iFs.Connect()); |
263 iFs.CreatePrivatePath(EDriveC); |
263 iFs.CreatePrivatePath(EDriveC); |
264 iTempDirName = HBufC::NewL(20); |
264 iTempDirName = HBufC::NewL(20); |
265 TPtr ptr = iTempDirName->Des(); |
265 TPtr ptr = iTempDirName->Des(); |
266 iFs.PrivatePath(ptr); |
266 iFs.PrivatePath(ptr); |
267 } |
267 } |
268 |
268 |
269 // create temp file |
269 // create temp file |
270 RFile file; |
270 RFile file; |
271 aFileName.Append(iTempDirName->Des()); |
271 aFileName.Append(iTempDirName->Des()); |
272 aFileName.AppendNum(aContentId.PluginId().iUid); |
272 aFileName.AppendNum(aContentId.PluginId().iUid); |
273 aFileName.AppendNum(aContentId.Id()); |
273 aFileName.AppendNum(aContentId.Id()); |
274 file.Replace(iFs,aFileName,EFileWrite); |
274 file.Replace(iFs,aFileName,EFileWrite); |
275 return file; |
275 return file; |
276 } |
276 } |
277 |
277 |
278 // ----------------------------------------------------------------------------- |
|
279 // CFSMailRequestHandler::CleanTempDirL |
|
280 // ----------------------------------------------------------------------------- |
|
281 void CFSMailRequestHandler::CleanTempDirL( ) |
|
282 { |
|
283 NM_FUNCTION; |
|
284 } |
|
285 |
|
286 // ----------------------------------------------------------------------------- |
|
287 // CFSMailRequestHandler::GetTempDirL |
|
288 // ----------------------------------------------------------------------------- |
|
289 TDesC& CFSMailRequestHandler::GetTempDirL( ) |
|
290 { |
|
291 NM_FUNCTION; |
|
292 |
|
293 return *iTempDirName; |
|
294 } |
|
295 |
|