126 { |
129 { |
127 TFLOGSTRING("TSY: CMmPhoneBookStoreOperationList::ConstructL"); |
130 TFLOGSTRING("TSY: CMmPhoneBookStoreOperationList::ConstructL"); |
128 OstTrace0( TRACE_NORMAL, CMMPHONEBOOKSTOREOPERATIONLIST_CONSTRUCTL, "CMmPhoneBookStoreOperationList::ConstructL" ); |
131 OstTrace0( TRACE_NORMAL, CMMPHONEBOOKSTOREOPERATIONLIST_CONSTRUCTL, "CMmPhoneBookStoreOperationList::ConstructL" ); |
129 } |
132 } |
130 |
133 |
131 // --------------------------------------------------------------------------- |
134 |
132 // CMmPhoneBookStoreOperationList::Build |
135 // --------------------------------------------------------------------------- |
133 // Separate request and create correct object |
136 // CMmPhoneBookStoreOperationList::AddOperation |
134 // --------------------------------------------------------------------------- |
137 // Add Creted operation to List |
135 // |
138 // --------------------------------------------------------------------------- |
136 CMmPhoneBookStoreOperationBase* CMmPhoneBookStoreOperationList::BuildL( |
139 // |
137 const CMmDataPackage* aDataPackage, |
140 void CMmPhoneBookStoreOperationList::AddOperation( |
138 TInt aIpc |
141 TUint8 aTrans, |
139 ) |
142 CMmPhoneBookStoreOperationBase* aOperation ) |
140 { |
143 { |
141 TFLOGSTRING("TSY: CMmPhoneBookStoreOperationList::Build"); |
144 TFLOGSTRING("TSY: CMmPhoneBookStoreOperationList::AddOperation"); |
142 OstTrace0( TRACE_NORMAL, CMMPHONEBOOKSTOREOPERATIONLIST_BUILDL, "CMmPhoneBookStoreOperationList::BuildL" ); |
145 OstTrace0( TRACE_NORMAL, CMMPHONEBOOKSTOREOPERATIONLIST_ADDOPERATION, "CMmPhoneBookStoreOperationList::AddOperation" ); |
143 |
146 |
144 CMmPhoneBookStoreOperationBase* pointer( NULL ); |
147 if( (( aTrans - ETrIdPbOperationStart ) >= 0)&& ((aTrans - ETrIdPbOperationStart) < KMaxPbTrIdCount )) |
145 |
148 { |
146 switch( aIpc ) |
149 iPtrOperationArrayNew[aTrans - ETrIdPbOperationStart] = aOperation; |
147 { |
150 } |
148 case EMmTsyPhoneBookStoreInitIPC: |
151 } |
|
152 |
|
153 |
|
154 // --------------------------------------------------------------------------- |
|
155 // CMmPhoneBookStoreOperationList::Find |
|
156 // Search and returns object to correct operation |
|
157 // --------------------------------------------------------------------------- |
|
158 // |
|
159 CMmPhoneBookStoreOperationBase* CMmPhoneBookStoreOperationList::Find( |
|
160 TUint8 aTrans ) |
|
161 { |
|
162 TFLOGSTRING("TSY: CMmPhoneBookStoreOperationList::Find"); |
|
163 OstTrace0( TRACE_NORMAL, CMMPHONEBOOKSTOREOPERATIONLIST_FIND, "CMmPhoneBookStoreOperationList::Find" ); |
|
164 |
|
165 CMmPhoneBookStoreOperationBase* basePointer( NULL ); |
|
166 //transaction id is basically just an index to operation array + start offset |
|
167 //of phonebook operations |
|
168 TInt ind ( aTrans - ETrIdPbOperationStart ); |
|
169 |
|
170 if( (ind >= 0)&& (ind < KMaxPbTrIdCount )) |
|
171 { |
|
172 basePointer = iPtrOperationArrayNew[aTrans - ETrIdPbOperationStart]; |
|
173 } |
|
174 // return pointer if found otherwise NULL |
|
175 return basePointer; |
|
176 } |
|
177 |
|
178 // --------------------------------------------------------------------------- |
|
179 // CMmPhoneBookStoreOperationList::RemoveOperationFromList |
|
180 // Search and delete correct object from list |
|
181 // --------------------------------------------------------------------------- |
|
182 // |
|
183 void CMmPhoneBookStoreOperationList::RemoveOperationFromList( |
|
184 TUint8 aTrans ) // transactionId |
|
185 { |
|
186 TFLOGSTRING("TSY: CMmPhoneBookStoreOperationList::RemoveOperationFromList"); |
|
187 OstTrace0( TRACE_NORMAL, DUP1_CMMPHONEBOOKSTOREOPERATIONLIST_REMOVEOPERATIONFROMLIST, "CMmPhoneBookStoreOperationList::RemoveOperationFromList" ); |
|
188 |
|
189 |
|
190 delete iPtrOperationArrayNew[aTrans - ETrIdPbOperationStart]; |
|
191 iPtrOperationArrayNew[aTrans - ETrIdPbOperationStart] = NULL; |
|
192 |
|
193 TFLOGSTRING2("TSY: CMmPhoneBookStoreOperationList -Phonebook operation removed succesfully from index: %d" , ( aTrans - ETrIdPbOperationStart ) ); |
|
194 |
|
195 TF_ASSERT( ( aTrans - ETrIdPbOperationStart ) < KMaxPbTrIdCount ); |
|
196 } |
|
197 |
|
198 |
|
199 |
|
200 // --------------------------------------------------------------------------- |
|
201 // CMmPhoneBookStoreOperationList::FindEmptyIndexTransId |
|
202 // Check for the empty Index available in operation array |
|
203 // --------------------------------------------------------------------------- |
|
204 // |
|
205 TInt CMmPhoneBookStoreOperationList::FindEmptyIndexTransId() |
|
206 { |
|
207 TFLOGSTRING("TSY: CMmPhoneBookStoreOperationList::FindEmptyIndexTransId"); |
|
208 OstTrace0( TRACE_NORMAL, CMMPHONEBOOKSTOREOPERATIONLIST_FINDEMPTYINDEXTRANSID, "CMmPhoneBookStoreOperationList::FindEmptyIndexTransId" ); |
|
209 |
|
210 TInt transId = -1; |
|
211 for( TInt count = 0 ; count < KMaxPbTrIdCount ; count++) |
|
212 { |
|
213 if( iPtrOperationArrayNew[count] == NULL ) |
149 { |
214 { |
150 |
215 transId = count + ETrIdPbOperationStart ; |
151 // Get Card type from uiccmesshandler |
|
152 // if SIM, phonebook is 2G and located under DFtelecom and ADN pb contains only name/number entries |
|
153 // if USIM, phonebook can be 3G local or 3G private. ADN pb entry can contain additional entries |
|
154 // 3G local is located under DFtelecom and 3G private under ADFusim, both have same structure however |
|
155 // only the path is different? 7F10 vs. 7FFF |
|
156 // Here in UICCCreateReq only 3G local has been handled |
|
157 // So for both SIM and USIM Phonebook will be under DFtelecom (whose address is 7F10) |
|
158 |
|
159 |
|
160 // Chekc for Card type to Create Class for Phonebook Init |
|
161 if(UICC_CARD_TYPE_UICC == iUiccMessHandler->GetCardType()) |
|
162 { |
|
163 //call CmmPhonebookOperatorInit3G_ADN Phonebook |
|
164 pointer = CMmPhoneBookOperationInit3G_adn::NewL( |
|
165 iMmPhoneBookStoreMessHandler, |
|
166 iUiccMessHandler, |
|
167 aDataPackage |
|
168 ); |
|
169 CleanupStack::PushL( pointer ); |
|
170 // Add pointer to array |
|
171 iPtrOperationArray.AppendL( pointer ); |
|
172 CleanupStack::Pop( pointer ); |
|
173 |
|
174 } |
|
175 else if(UICC_CARD_TYPE_ICC == iUiccMessHandler->GetCardType()) |
|
176 { |
|
177 //call CmmPhonebookOperatorInit |
|
178 pointer = CMmPhoneBookOperationInit::NewL( |
|
179 iMmPhoneBookStoreMessHandler, |
|
180 iUiccMessHandler, |
|
181 aDataPackage |
|
182 ); |
|
183 CleanupStack::PushL( pointer ); |
|
184 // Add pointer to array |
|
185 iPtrOperationArray.AppendL( pointer ); |
|
186 CleanupStack::Pop( pointer ); |
|
187 } |
|
188 break; |
216 break; |
189 } |
217 } |
190 /* |
218 } |
191 case EMmTsyPhoneBookStoreGetInfoIPC: |
219 return transId; |
192 case EMmTsyPhoneBookStoreCacheIPC: |
220 } |
|
221 |
|
222 |
|
223 // --------------------------------------------------------------------------- |
|
224 // CMmPhoneBookStoreOperationList::CancelOperation |
|
225 // Cancel all operation with same phonebook name |
|
226 // --------------------------------------------------------------------------- |
|
227 // |
|
228 void CMmPhoneBookStoreOperationList::CancelOperation( TName &aPhoneBook) |
|
229 { |
|
230 TFLOGSTRING("TSY: CMmPhoneBookStoreOperationList::CancelOperation"); |
|
231 OstTrace0( TRACE_NORMAL, CMMPHONEBOOKSTOREOPERATIONLIST_CANCELOPERATION, "CMmPhoneBookStoreOperationList::CancelOperation" ); |
|
232 |
|
233 // Chekc for all operation which have the same phonebook name |
|
234 for( TInt count = 0 ; count < KMaxPbTrIdCount ; count++) |
|
235 { |
|
236 if( iPtrOperationArrayNew[count]!= NULL ) |
193 { |
237 { |
194 //call CmmPhonebookOperatorCache |
238 // Call Cancel function for that operation |
195 pointer = CMmPhoneBookOperationCache::NewL( |
239 iPtrOperationArrayNew[count]->CancelReq( aPhoneBook ); |
196 iMmPhoneBookStoreMessHandler, |
|
197 aIpc, aDataPackage ); |
|
198 CleanupStack::PushL( pointer ); |
|
199 // Add pointer to array |
|
200 iPtrOperationArray.AppendL( pointer ); |
|
201 CleanupStack::Pop( pointer ); |
|
202 break; |
|
203 } |
240 } |
204 */ |
241 } |
205 case EMmTsyPhoneBookStoreReadIPC: |
242 } |
206 #ifdef INTERNAL_RD_USIM_PHONEBOOK_GAS_AND_AAS |
243 |
207 case ECustomReadAlphaStringIPC: |
244 |
208 #endif // INTERNAL_RD_USIM_PHONEBOOK_GAS_AND_AAS |
|
209 { |
|
210 //call CmmPhonebookOperatorRead |
|
211 pointer = CMmPhoneBookOperationRead::NewL( |
|
212 iMmPhoneBookStoreMessHandler, |
|
213 aDataPackage ); |
|
214 CleanupStack::PushL( pointer ); |
|
215 // Add pointer to array |
|
216 iPtrOperationArray.AppendL( pointer ); |
|
217 CleanupStack::Pop( pointer ); |
|
218 break; |
|
219 } |
|
220 /* |
|
221 case EMmTsyPhoneBookStoreWriteIPC: |
|
222 |
|
223 #ifdef INTERNAL_RD_USIM_PHONEBOOK_GAS_AND_AAS |
|
224 case ECustomWriteAlphaStringIPC: |
|
225 #endif // INTERNAL_RD_USIM_PHONEBOOK_GAS_AND_AAS |
|
226 { |
|
227 //call CmmPhonebookOperationWrite |
|
228 pointer = CMmPhoneBookOperationWrite::NewL( |
|
229 iMmPhoneBookStoreMessHandler, |
|
230 aDataPackage ); |
|
231 CleanupStack::PushL( pointer ); |
|
232 // Add pointer to array |
|
233 iPtrOperationArray.AppendL( pointer ); |
|
234 CleanupStack::Pop( pointer ); |
|
235 break; |
|
236 } |
|
237 case EMmTsyPhoneBookStoreDeleteIPC: |
|
238 case EMmTsyPhoneBookStoreDeleteAllIPC: |
|
239 #ifdef INTERNAL_RD_USIM_PHONEBOOK_GAS_AND_AAS |
|
240 case ECustomDeleteAlphaStringIPC: |
|
241 #endif // INTERNAL_RD_USIM_PHONEBOOK_GAS_AND_AAS |
|
242 { |
|
243 //call CmmPhonebookOperatorDelete |
|
244 pointer = CMmPhoneBookOperationDelete::NewL( |
|
245 iMmPhoneBookStoreMessHandler, |
|
246 aDataPackage ); |
|
247 CleanupStack::PushL( pointer ); |
|
248 // Add pointer to array |
|
249 iPtrOperationArray.AppendL( pointer ); |
|
250 CleanupStack::Pop( pointer ); |
|
251 break; |
|
252 } |
|
253 case EMobilePhoneGetMailboxNumbers: |
|
254 { |
|
255 pointer = new ( ELeave )CMmPhonebookOperationCustom( |
|
256 iMmPhoneBookStoreMessHandler ); |
|
257 CleanupStack::PushL( pointer ); |
|
258 // Add pointer to array |
|
259 iPtrOperationArray.AppendL( pointer ); |
|
260 CleanupStack::Pop( pointer ); |
|
261 break; |
|
262 } |
|
263 */ |
|
264 default: |
|
265 { |
|
266 // Nothing to do here |
|
267 TFLOGSTRING2("TSY: CMmPhoneBookStoreMessHandler::ExtFuncL - \ |
|
268 Unknown IPC: %d", aIpc); |
|
269 OstTrace1( TRACE_NORMAL, DUP2_CMMPHONEBOOKSTOREOPERATIONLIST_BUILDL, "CMmPhoneBookStoreOperationList::BuildL;Unknown aIpc=%d", aIpc ); |
|
270 break; |
|
271 } |
|
272 } |
|
273 |
|
274 //return pointer to right operation |
|
275 return pointer; |
|
276 } |
|
277 |
|
278 // --------------------------------------------------------------------------- |
|
279 // CMmPhoneBookStoreOperationList::Find |
|
280 // Search and returns object to correct operation |
|
281 // --------------------------------------------------------------------------- |
|
282 // |
|
283 CMmPhoneBookStoreOperationBase* CMmPhoneBookStoreOperationList::Find( |
|
284 TUint8 aTrans, |
|
285 const CMmPhoneBookStoreOperationBase* aSearchFrom/*=NULL*/ ) |
|
286 { |
|
287 TFLOGSTRING("TSY: CMmPhoneBookStoreOperationList::Find"); |
|
288 OstTrace0( TRACE_NORMAL, CMMPHONEBOOKSTOREOPERATIONLIST_FIND, "CMmPhoneBookStoreOperationList::Find" ); |
|
289 |
|
290 CMmPhoneBookStoreOperationBase* basePointer( NULL ); |
|
291 |
|
292 // search correct pointer from array using aTrans |
|
293 TUint ind( 0 ); |
|
294 if ( NULL != aSearchFrom ) |
|
295 { |
|
296 // if object to search from specified, find its index at first |
|
297 for ( ; ind < iPtrOperationArray.Count(); ind++ ) |
|
298 { |
|
299 if ( aSearchFrom == iPtrOperationArray[ind] ) |
|
300 { |
|
301 ind++; |
|
302 break; |
|
303 } |
|
304 } |
|
305 } |
|
306 // looking for object with given transaction id |
|
307 // starting index may be not 0 if aSearchFrom is specified |
|
308 for ( ; ind < iPtrOperationArray.Count(); ind++) |
|
309 { |
|
310 if( ( iPtrOperationArray[ind] )->TransId() == aTrans ) |
|
311 { |
|
312 basePointer = iPtrOperationArray[ind]; |
|
313 break; |
|
314 } |
|
315 } |
|
316 // return pointer if found otherwise NULL |
|
317 return basePointer; |
|
318 } |
|
319 |
|
320 // --------------------------------------------------------------------------- |
|
321 // CMmPhoneBookStoreOperationList::RemoveOperationFromList |
|
322 // Search and delete correct object from list |
|
323 // --------------------------------------------------------------------------- |
|
324 // |
|
325 void CMmPhoneBookStoreOperationList::RemoveOperationFromList( |
|
326 TUint8 aTrans ) // transactionId |
|
327 { |
|
328 TFLOGSTRING("TSY: CMmPhoneBookStoreOperationList::\ |
|
329 RemoveOperationFromList"); |
|
330 OstTrace0( TRACE_NORMAL, CMMPHONEBOOKSTOREOPERATIONLIST_REMOVEOPERATIONFROMLIST, "CMmPhoneBookStoreOperationList::RemoveOperationFromList" ); |
|
331 |
|
332 TUint ind( 0 ); |
|
333 TUint operationCount( iPtrOperationArray.Count() ); |
|
334 |
|
335 // search correct pointer from array using aTrans |
|
336 while ( ind < operationCount ) |
|
337 { |
|
338 if( ( iPtrOperationArray[ind] )->TransId() == aTrans ) |
|
339 { |
|
340 delete iPtrOperationArray[ind]; |
|
341 iPtrOperationArray.Remove( ind ); |
|
342 iPtrOperationArray.Compress(); |
|
343 TFLOGSTRING2("TSY: CMmPhoneBookStoreOperationList -Phonebook \ |
|
344 operation removed succesfully from index: %d" ,ind ); |
|
345 break; |
|
346 } |
|
347 ind++; |
|
348 } |
|
349 TF_ASSERT( ind < operationCount ); |
|
350 } |
|
351 |
|
352 // --------------------------------------------------------------------------- |
|
353 // CMmPhoneBookStoreOperationList::RemoveLastOperationFromList |
|
354 // Removes last operation from operation list. |
|
355 // --------------------------------------------------------------------------- |
|
356 // |
|
357 TInt CMmPhoneBookStoreOperationList::RemoveLastOperationFromList() |
|
358 { |
|
359 TFLOGSTRING("TSY: CMmPhoneBookStoreOperationList::RemoveLastOperationFromList"); |
|
360 OstTrace0( TRACE_NORMAL, CMMPHONEBOOKSTOREOPERATIONLIST_REMOVELASTOPERATIONFROMLIST, "CMmPhoneBookStoreOperationList::RemoveLastOperationFromList" ); |
|
361 |
|
362 TInt ret( KErrNone ); |
|
363 TInt count( iPtrOperationArray.Count() ); |
|
364 |
|
365 if ( 0 < count ) |
|
366 { |
|
367 iPtrOperationArray.Remove( count - 1 ); |
|
368 } |
|
369 else |
|
370 { |
|
371 TFLOGSTRING("TSY: CMmPhoneBookStoreOperationList::RemoveLastOperationFromList - no operation to remove"); |
|
372 OstTrace0( TRACE_NORMAL, DUP1_CMMPHONEBOOKSTOREOPERATIONLIST_REMOVELASTOPERATIONFROMLIST, "CMmPhoneBookStoreOperationList::RemoveLastOperationFromList - no operation to remove" ); |
|
373 |
|
374 ret = KErrNotFound; |
|
375 } |
|
376 |
|
377 return ret; |
|
378 } |
|
379 |
|
380 // --------------------------------------------------------------------------- |
|
381 // CMmPhoneBookStoreOperationList::CalculateTransactionId |
|
382 // Calculates transaction Id from IPC number and data package |
|
383 // --------------------------------------------------------------------------- |
|
384 // |
|
385 TInt CMmPhoneBookStoreOperationList::CalculateTransactionId( |
|
386 TInt aIpc, |
|
387 const CMmDataPackage* /*aDataPackage*/, |
|
388 TUint8& /*aTransactionId*/ |
|
389 ) |
|
390 { |
|
391 TInt ret( KErrNone ); |
|
392 |
|
393 TFLOGSTRING2("TSY: CMmPhoneBookStoreOperationList::CalculateTransactionId;aIpc=%d", aIpc); |
|
394 OstTrace1( TRACE_NORMAL, CMMPHONEBOOKSTOREOPERATIONLIST_CALCULATETRANSACTIONID, "CMmPhoneBookStoreOperationList::CalculateTransactionId;aIpc=%d", aIpc ); |
|
395 |
|
396 switch ( aIpc ) |
|
397 { |
|
398 /* |
|
399 case EMmTsyPhoneBookStoreGetInfoIPC: |
|
400 case EMmTsyPhoneBookStoreCacheIPC: |
|
401 { |
|
402 ret = CMmPhoneBookOperationCache::CalculateTransactionId( |
|
403 aIpc, aDataPackage, aTransactionId ); |
|
404 break; |
|
405 } |
|
406 */ |
|
407 default: |
|
408 { |
|
409 TFLOGSTRING("TSY: CMmPhoneBookStoreOperationList::CalculateTransactionId;unknown ipc"); |
|
410 OstTrace0( TRACE_NORMAL, DUP1_CMMPHONEBOOKSTOREOPERATIONLIST_CALCULATETRANSACTIONID, "CMmPhoneBookStoreOperationList::CalculateTransactionId; unknown ipc" ); |
|
411 ret = KErrNotSupported; |
|
412 } |
|
413 } |
|
414 |
|
415 return ret; |
|
416 } |
|
417 |
245 |
418 // End of File |
246 // End of File |