15 * |
15 * |
16 */ |
16 */ |
17 |
17 |
18 |
18 |
19 // INCLUDE FILES |
19 // INCLUDE FILES |
20 |
20 #include "cpimmanager.h" |
21 #include <e32std.h> |
21 #include <e32std.h> |
22 #include <badesca.h> |
22 #include <badesca.h> |
23 #include <calsession.h> |
23 #include "pimcommon.h" |
24 #include <flogger.h> |
|
25 #ifdef RD_JAVA_PIM_MULTICAL_ENABLED |
|
26 #include <calcalendarinfo.h> |
|
27 #include <calenmulticaluids.hrh> |
|
28 #endif |
|
29 #include "cpimmanager.h" |
|
30 #include "cpimcontactlist.h" |
|
31 #include "cpimcontactvalidator.h" |
|
32 #include "cpimeventvalidator.h" |
|
33 #include "cpimtodovalidator.h" |
|
34 #include "cpimeventlist.h" |
|
35 #include "cpimtodolist.h" |
|
36 #include "cpimversit.h" |
|
37 #include "cpimcmadapteraccess.h" |
|
38 #include "cpimeventadapteraccess.h" |
|
39 #include "cpimtodoadapteraccess.h" |
|
40 #include "cpimlocalizationmanager.h" |
|
41 #include "fs_methodcall.h" |
|
42 #include "jstringutils.h" |
|
43 #include "logger.h" |
|
44 #include "mpimcontactadaptermanager.h" |
24 #include "mpimcontactadaptermanager.h" |
45 #include "mpimeventadaptermanager.h" |
25 #include "mpimeventadaptermanager.h" |
46 #include "mpimtodoadaptermanager.h" |
26 #include "mpimtodoadaptermanager.h" |
47 #include "mpimcontactlistadapter.h" |
27 #include "mpimcontactlistadapter.h" |
48 #include "mpimeventlistadapter.h" |
28 #include "mpimeventlistadapter.h" |
49 #include "mpimtodolistadapter.h" |
29 #include "mpimtodolistadapter.h" |
|
30 #include "cpimversit.h" |
50 #include "mpimlocalizationmanager.h" |
31 #include "mpimlocalizationmanager.h" |
51 #include "mpimlocalizationdata.h" |
32 #include "mpimlocalizationdata.h" |
|
33 #include "cpimcontactlist.h" |
|
34 #include "cpimeventlist.h" |
|
35 #include "cpimtodolist.h" |
|
36 #include "cpimcontactvalidator.h" |
|
37 #include "cpimeventvalidator.h" |
|
38 #include "cpimtodovalidator.h" |
52 #include "mpimadapteraccess.h" |
39 #include "mpimadapteraccess.h" |
53 #include "pimcommon.h" |
40 #include "cpimcmadapteraccess.h" |
|
41 #include "cpimeventadapteraccess.h" |
|
42 #include "cpimtodoadapteraccess.h" |
54 #include "pimpanics.h" |
43 #include "pimpanics.h" |
55 #include "pimjnitools.h" |
44 #include "pimjnitools.h" |
56 #include "pimutils.h" |
45 #include "pimutils.h" |
57 #include "s60commonutils.h" |
46 #include "jstringutils.h" |
|
47 #include "logger.h" |
|
48 #include "cpimlocalizationmanager.h" |
58 |
49 |
59 // CONSTANTS |
50 // CONSTANTS |
60 |
51 |
61 /** |
52 /** |
62 * Array granularity for arrays of managers, cached list names and |
53 * Array granularity for arrays of managers, cached list names and |
63 * localization objects. Number of such objects in an array is quite |
54 * localization objects. Number of such objects in an array is quite |
64 * low, at the time of writing 1 to 4. |
55 * low, at the time of writing 1 to 4. |
65 */ |
56 */ |
66 const TInt KManagerArrayGranularity = 2; |
57 const TInt KManagerArrayGranularity = 2; |
67 #ifdef RD_JAVA_PIM_MULTICAL_ENABLED |
58 |
68 const TInt KBuffLength = 24; |
|
69 #endif |
|
70 |
59 |
71 CPIMManager::CPIMManager() : |
60 CPIMManager::CPIMManager() : |
72 java::util::FunctionServer("CPIMManager"), iAdapterAccesses(), iCalSessions() |
61 java::util::FunctionServer("CPIMManager"), iAdapterAccesses() |
73 { |
62 { |
74 JELOG2(EPim); |
63 JELOG2(EPim); |
75 } |
64 } |
76 |
65 |
77 void CPIMManager::ConstructL() |
66 void CPIMManager::ConstructL() |
78 { |
67 { |
79 JELOG2(EPim); |
68 JELOG2(EPim); |
80 iContactValidator = CPIMContactValidator::NewL(); |
69 iContactValidator = CPIMContactValidator::NewL(); |
81 iEventValidator = CPIMEventValidator::NewL(); |
70 iEventValidator = CPIMEventValidator::NewL(); |
82 iToDoValidator = CPIMToDoValidator::NewL(); |
71 iToDoValidator = CPIMToDoValidator::NewL(); |
83 iDesCArray = new(ELeave) CDesCArrayFlat(KManagerArrayGranularity); |
72 |
84 iLocalizationManager |
73 iLocalizationManager |
85 = (MPIMLocalizationManager*)(CPIMLocalizationManager::NewL()); |
74 = (MPIMLocalizationManager*)(CPIMLocalizationManager::NewL()); |
86 |
75 |
87 createServerToNewThread(); |
76 createServerToNewThread(); |
88 CallMethodL(this, &CPIMManager::createCalSessionL, this); |
|
89 } |
|
90 |
|
91 void CPIMManager::createCalSessionL() |
|
92 { |
|
93 iCalSession = CCalSession::NewL(); |
|
94 //CleanupStack::PushL(iCalSession); |
|
95 iCalSessionArray = iCalSession->ListCalFilesL(); |
|
96 |
|
97 TInt index = 0; |
|
98 TInt find = iCalSessionArray->Find(iCalSession->DefaultFileNameL(),index); |
|
99 |
|
100 if (!find) |
|
101 { |
|
102 iCalSessionArray->Delete(index); |
|
103 } |
|
104 |
|
105 TRAPD(err, iCalSession->OpenL(iCalSession->DefaultFileNameL())); |
|
106 if (KErrNotFound == err) |
|
107 { |
|
108 iCalSession->CreateCalFileL(iCalSession->DefaultFileNameL()); |
|
109 iCalSession->OpenL(iCalSession->DefaultFileNameL()); |
|
110 } |
|
111 else |
|
112 { |
|
113 User::LeaveIfError(err); |
|
114 } |
|
115 //CleanupStack::Pop(iCalSession); |
|
116 |
|
117 #ifdef RD_JAVA_PIM_MULTICAL_ENABLED |
|
118 TInt iterate = 0; |
|
119 TBool softDelete = EFalse; |
|
120 |
|
121 while (iterate < iCalSessionArray->Count()) |
|
122 { |
|
123 CCalSession* aCalSession = CCalSession::NewL(*iCalSession); |
|
124 CleanupStack::PushL(aCalSession); |
|
125 aCalSession->OpenL(iCalSessionArray->MdcaPoint(iterate)); |
|
126 CCalCalendarInfo* caleninfo = aCalSession->CalendarInfoL(); |
|
127 CleanupStack::PushL(caleninfo); |
|
128 aCalSession->SetCalendarInfoL(*caleninfo); |
|
129 |
|
130 TBuf8<KBuffLength> keyBuff; |
|
131 keyBuff.Zero(); |
|
132 keyBuff.AppendNum(EMarkAsDelete); |
|
133 TPckgC<TBool> pkgSoftDelete(softDelete); |
|
134 TRAPD(err,pkgSoftDelete.Set(caleninfo->PropertyValueL(keyBuff))); |
|
135 if (KErrNone == err) |
|
136 { |
|
137 softDelete = pkgSoftDelete(); |
|
138 } |
|
139 |
|
140 if (softDelete) |
|
141 { |
|
142 |
|
143 CleanupStack::PopAndDestroy(caleninfo); |
|
144 CleanupStack::PopAndDestroy(aCalSession); |
|
145 } |
|
146 else |
|
147 { |
|
148 iCalSessions.AppendL(aCalSession); |
|
149 iDesCArray->AppendL(iCalSessionArray->MdcaPoint(iterate)); |
|
150 CleanupStack::PopAndDestroy(caleninfo); |
|
151 CleanupStack::Pop(aCalSession); |
|
152 } |
|
153 iterate++; |
|
154 } |
|
155 delete iCalSessionArray; |
|
156 iCalSessionArray = NULL; |
|
157 #endif |
|
158 } |
77 } |
159 |
78 |
160 pimbasemanager* pimbasemanager::getInstance() |
79 pimbasemanager* pimbasemanager::getInstance() |
161 { |
80 { |
162 JELOG2(EPim); |
81 JELOG2(EPim); |
|
82 // Create CPIMManager |
|
83 |
163 CPIMManager* self = NULL; |
84 CPIMManager* self = NULL; |
164 TInt error = KErrNone; |
85 TInt error = KErrNone; |
165 TRAP(error, self = CPIMManager::NewL()); |
86 TRAP(error, self = CPIMManager::NewL()); |
166 if (error != KErrNone) |
87 if (error != KErrNone) |
167 throw error; |
88 throw error; |
249 JELOG2(EPim); |
161 JELOG2(EPim); |
250 User::LeaveIfError(iAdapterAccesses.Append(aAdapterAccess)); |
162 User::LeaveIfError(iAdapterAccesses.Append(aAdapterAccess)); |
251 } |
163 } |
252 |
164 |
253 pimbaselist* CPIMManager::openPimList(const TPIMListType& aPimListType, |
165 pimbaselist* CPIMManager::openPimList(const TPIMListType& aPimListType, |
254 jstring aPimListName, jstring aCalName, |
166 jstring aPimListName, JNIEnv* aJniEnv) |
255 JNIEnv* aJniEnv) |
|
256 { |
167 { |
257 JELOG2(EPim); |
168 JELOG2(EPim); |
258 const JStringUtils listName(*aJniEnv, aPimListName); |
169 const JStringUtils listName(*aJniEnv, aPimListName); |
259 const TDesC* listNameArg = (aPimListName ? &listName : NULL); |
170 const TDesC* listNameArg = (aPimListName ? &listName : NULL); |
260 const JStringUtils calName(*aJniEnv, aCalName); |
|
261 const TDesC* calNameArg = (aCalName ? &calName : NULL); |
|
262 pimbaselist* list = NULL; |
171 pimbaselist* list = NULL; |
263 TInt error = KErrNone; |
172 TInt error = KErrNone; |
264 TRAP(error, list = DoOpenPimListL(aPimListType, listNameArg, calNameArg)); |
173 TRAP(error, list = DoOpenPimListL(aPimListType, listNameArg)); |
265 if (error != KErrNone) |
174 if (error != KErrNone) |
266 throw error; |
175 throw error; |
267 return list; |
176 return list; |
268 } |
177 } |
269 |
178 |
270 pimbaselist* CPIMManager::DoOpenPimListL(const TPIMListType& aPimListType, |
179 pimbaselist* CPIMManager::DoOpenPimListL(const TPIMListType& aPimListType, |
271 const TDesC* aPimListName, const TDesC* aCalNameArg) |
180 const TDesC* aPimListName) |
272 { |
181 { |
273 JELOG2(EPim); |
182 JELOG2(EPim); |
274 pimbaselist* list = NULL; |
183 pimbaselist* list = NULL; |
275 |
184 |
276 if (aPimListType == EPIMContactList) |
185 if (aPimListType == EPIMContactList) |
277 { |
186 { |
278 list = DoOpenContactListL(aPimListName); |
187 list = DoOpenContactListL(aPimListName); |
279 } |
188 } |
280 else if (aPimListType == EPIMEventList) |
189 else if (aPimListType == EPIMEventList) |
281 { |
190 { |
282 list = DoOpenEventListL(aPimListName, aCalNameArg); |
191 list = DoOpenEventListL(aPimListName); |
283 } |
192 } |
284 else if (aPimListType == EPIMToDoList) |
193 else if (aPimListType == EPIMToDoList) |
285 { |
194 { |
286 list = DoOpenToDoListL(aPimListName, aCalNameArg); |
195 list = DoOpenToDoListL(aPimListName); |
287 } |
196 } |
288 else |
197 else |
289 { |
198 { |
290 // invalid list type |
199 // invalid list type |
291 User::Leave(KErrArgument); |
200 User::Leave(KErrArgument); |
292 } |
201 } |
|
202 |
293 // Check results |
203 // Check results |
|
204 |
294 if (!list) |
205 if (!list) |
295 { |
206 { |
296 if (aPimListName) |
207 if (aPimListName) |
297 { |
208 { |
298 // list name was given but no such list exists |
209 // list name was given but no such list exists |
360 SetJavaErrorCode(aJniEnv, aError, error); |
274 SetJavaErrorCode(aJniEnv, aError, error); |
361 } |
275 } |
362 return javaStringArray; |
276 return javaStringArray; |
363 } |
277 } |
364 |
278 |
365 |
|
366 |
|
367 |
|
368 |
|
369 void CPIMManager::DoListCalendarsL() |
|
370 { |
|
371 |
|
372 #ifdef RD_JAVA_PIM_MULTICAL_ENABLED |
|
373 iCalList = iCalSession->ListCalFilesL(); |
|
374 |
|
375 TInt index = 0; |
|
376 TInt find = iCalList->Find(iCalSession->DefaultFileNameL(),index); |
|
377 |
|
378 if (!find) |
|
379 { |
|
380 iCalList->Delete(index); |
|
381 } |
|
382 iCalSessionArray = iCalList; |
|
383 TInt iterate = 0; |
|
384 TInt aPosition = 0; |
|
385 while (iterate < iCalList->Count()) |
|
386 { |
|
387 aPosition = 0; |
|
388 |
|
389 TInt findInCurrentArray = iDesCArray->Find(iCalList->MdcaPoint(iterate),aPosition, ECmpNormal16); |
|
390 CCalSession* aCalSession; |
|
391 if (findInCurrentArray == 0) |
|
392 { |
|
393 aCalSession = iCalSessions[aPosition]; |
|
394 } |
|
395 else |
|
396 { |
|
397 aCalSession = CCalSession::NewL(*iCalSession); |
|
398 CleanupStack::PushL(aCalSession); |
|
399 aCalSession->OpenL(iCalList->MdcaPoint(iterate)); |
|
400 } |
|
401 // check for soft deleted calendars, incase of calendars being held by other applications, this will be followed. |
|
402 CCalCalendarInfo* caleninfo = aCalSession->CalendarInfoL(); |
|
403 CleanupStack::PushL(caleninfo); |
|
404 aCalSession->SetCalendarInfoL(*caleninfo); |
|
405 TBool softDelete = EFalse; |
|
406 TBuf8<KBuffLength> keyBuff; |
|
407 keyBuff.Zero(); |
|
408 keyBuff.AppendNum(EMarkAsDelete); |
|
409 |
|
410 TPckgC<TBool> pkgSoftDelete(softDelete); |
|
411 |
|
412 TRAPD(err,pkgSoftDelete.Set(caleninfo->PropertyValueL(keyBuff))); |
|
413 |
|
414 if (KErrNone == err) |
|
415 { |
|
416 softDelete = pkgSoftDelete(); |
|
417 } |
|
418 |
|
419 if (!softDelete && findInCurrentArray != 0) |
|
420 { |
|
421 iCalSessions.AppendL(aCalSession); |
|
422 CleanupStack::Pop(aCalSession); |
|
423 iDesCArray->AppendL(iCalList->MdcaPoint(iterate)); |
|
424 } |
|
425 else if (softDelete && findInCurrentArray == 0) |
|
426 { |
|
427 CleanupStack::PopAndDestroy(caleninfo); |
|
428 caleninfo = NULL; |
|
429 delete aCalSession; |
|
430 iCalSessions[aPosition] = NULL; |
|
431 iCalSessions.Remove(aPosition); |
|
432 iDesCArray->Delete(aPosition); |
|
433 |
|
434 } |
|
435 else if (softDelete && findInCurrentArray != 0) |
|
436 { |
|
437 CleanupStack::PopAndDestroy(caleninfo); |
|
438 CleanupStack::PopAndDestroy(aCalSession); |
|
439 caleninfo=NULL; |
|
440 aCalSession = NULL; |
|
441 } |
|
442 if (caleninfo != NULL) |
|
443 { |
|
444 CleanupStack::PopAndDestroy(caleninfo); |
|
445 caleninfo = NULL; |
|
446 } |
|
447 iterate++; |
|
448 |
|
449 } |
|
450 |
|
451 iCalList = iDesCArray; |
|
452 iCalList->AppendL(iCalSession->DefaultFileNameL()); |
|
453 delete iCalSessionArray; |
|
454 iCalSessionArray = NULL; |
|
455 #endif |
|
456 |
|
457 } |
|
458 |
|
459 |
|
460 jobjectArray CPIMManager::listCalendars(jintArray aError, |
|
461 JNIEnv* aJniEnv) |
|
462 { |
|
463 |
|
464 jobjectArray javaStringArray = NULL; |
|
465 TInt error = KErrNone; |
|
466 TRAP(error, CallMethodL(this, &CPIMManager::DoListCalendarsL, this)); |
|
467 if (error == KErrNone) |
|
468 { |
|
469 javaStringArray = CreateJavaStringArray(aJniEnv, *iCalList, EFalse); |
|
470 if (!javaStringArray) |
|
471 { |
|
472 SetJavaErrorCode(aJniEnv, aError, KErrNoMemory); |
|
473 } |
|
474 iCalList = NULL; |
|
475 TInt index = 0; |
|
476 TInt find = 0; |
|
477 TRAPD(error,find = iDesCArray->Find(iCalSession->DefaultFileNameL(),index)); |
|
478 if (error == KErrNone) |
|
479 if (!find) |
|
480 { |
|
481 iDesCArray->Delete(index); |
|
482 } |
|
483 else |
|
484 { |
|
485 SetJavaErrorCode(aJniEnv, aError, error); |
|
486 } |
|
487 } |
|
488 else |
|
489 { |
|
490 |
|
491 SetJavaErrorCode(aJniEnv, aError, error); |
|
492 } |
|
493 return javaStringArray; |
|
494 } |
|
495 |
|
496 jobjectArray CPIMManager::listCalendarNames(jintArray aError, |
|
497 JNIEnv* aJniEnv) |
|
498 { |
|
499 jobjectArray javaStringArray = NULL; |
|
500 TInt error = KErrNone; |
|
501 TRAP(error, CallMethodL(this, &CPIMManager::DoListCalendarNamesL, this)); |
|
502 if (error == KErrNone) |
|
503 { |
|
504 javaStringArray = CreateJavaStringArray(aJniEnv, *iCalListName, EFalse); |
|
505 if (!javaStringArray) |
|
506 { |
|
507 SetJavaErrorCode(aJniEnv, aError, KErrNoMemory); |
|
508 } |
|
509 delete iCalListName; |
|
510 iCalListName = NULL; |
|
511 } |
|
512 else |
|
513 { |
|
514 SetJavaErrorCode(aJniEnv, aError, error); |
|
515 } |
|
516 return javaStringArray; |
|
517 } |
|
518 |
|
519 void CPIMManager::DoListCalendarNamesL() |
|
520 { |
|
521 #ifdef RD_JAVA_PIM_MULTICAL_ENABLED |
|
522 iCalListName = new(ELeave) CDesCArrayFlat(KManagerArrayGranularity); |
|
523 //CleanupStack::PushL(iCalListName); |
|
524 for (int iterate = 0; iterate < iDesCArray->Count(); iterate++) |
|
525 { |
|
526 CCalCalendarInfo* caleninfo = iCalSessions[iterate]->CalendarInfoL(); |
|
527 CleanupStack::PushL(caleninfo); |
|
528 iCalListName->AppendL(caleninfo->NameL()); |
|
529 |
|
530 CleanupStack::PopAndDestroy(caleninfo); |
|
531 } |
|
532 CCalCalendarInfo* caleninfo = iCalSession->CalendarInfoL(); |
|
533 CleanupStack::PushL(caleninfo); |
|
534 iCalListName->AppendL(caleninfo->NameL()); |
|
535 |
|
536 CleanupStack::PopAndDestroy(caleninfo); |
|
537 //CleanupStack::Pop(iCalListName); |
|
538 #endif |
|
539 } |
|
540 void CPIMManager::createCalendar(jstring aCalName,jstring aDisplayName, JNIEnv* aJniEnv) |
|
541 { |
|
542 const JStringUtils calName(*aJniEnv, aCalName); |
|
543 const JStringUtils displayName(*aJniEnv, aDisplayName); |
|
544 const TDesC* displayNameArg = (aDisplayName ? &displayName : NULL); |
|
545 const TDesC* calNameArg = (aCalName ? &calName : NULL); |
|
546 TInt error = KErrNone; |
|
547 TRAP(error, CallMethodL(this, &CPIMManager::DoCreateCalFileL, *calNameArg,*displayNameArg, this)); |
|
548 if (error != KErrNone) |
|
549 throw error; |
|
550 } |
|
551 |
|
552 void CPIMManager::DoCreateCalFileL(const TDesC& aFileName, const TDesC& aDisplayName) |
|
553 { |
|
554 #ifdef RD_JAVA_PIM_MULTICAL_ENABLED |
|
555 |
|
556 CCalSession* aCalSession = CCalSession::NewL(*iCalSession); |
|
557 CleanupStack::PushL(aCalSession); |
|
558 CCalCalendarInfo* calendarInfo = CCalCalendarInfo::NewL(); |
|
559 CleanupStack::PushL(calendarInfo); |
|
560 |
|
561 aCalSession->CreateCalFileL(aFileName,*calendarInfo); |
|
562 CleanupStack::PopAndDestroy(calendarInfo); |
|
563 aCalSession->OpenL(aFileName); |
|
564 CCalCalendarInfo* calendarinfostack = aCalSession->CalendarInfoL(); |
|
565 CleanupStack::PushL(calendarinfostack); |
|
566 |
|
567 calendarinfostack->SetNameL(aDisplayName); |
|
568 calendarinfostack->SetEnabled(ETrue); |
|
569 aCalSession->SetCalendarInfoL(*calendarinfostack); |
|
570 CleanupStack::PopAndDestroy(calendarinfostack); |
|
571 iCalSessions.AppendL(aCalSession); |
|
572 iDesCArray->AppendL(aFileName); |
|
573 CleanupStack::Pop(aCalSession); |
|
574 |
|
575 #endif |
|
576 } |
|
577 |
|
578 void CPIMManager::deleteCalendar(jstring aCalName, JNIEnv* aJniEnv) |
|
579 { |
|
580 const JStringUtils calName(*aJniEnv, aCalName); |
|
581 const TDesC* calNameArg = (aCalName ? &calName : NULL); |
|
582 TInt error = KErrNone; |
|
583 TRAP(error, CallMethodL(this, &CPIMManager::DoDeleteCalFileL, *calNameArg, this)); |
|
584 if (error != KErrNone) |
|
585 throw error; |
|
586 |
|
587 } |
|
588 |
|
589 |
|
590 void CPIMManager::DoDeleteCalFileL(const TDesC& aFileName) |
|
591 { |
|
592 #ifdef RD_JAVA_PIM_MULTICAL_ENABLED |
|
593 |
|
594 if (aFileName != iCalSession->DefaultFileNameL()) |
|
595 { |
|
596 TInt aPosition = 0; |
|
597 TInt findInCurrentArray = iDesCArray->Find(aFileName, aPosition, ECmpNormal16); |
|
598 if (findInCurrentArray == 0) |
|
599 { |
|
600 CCalCalendarInfo* caleninfo = iCalSessions[aPosition]->CalendarInfoL(); |
|
601 CleanupStack::PushL(caleninfo); |
|
602 |
|
603 caleninfo->SetEnabled(EFalse); |
|
604 |
|
605 TBuf8<KBuffLength> keyBuff; |
|
606 |
|
607 keyBuff.Zero(); |
|
608 keyBuff.AppendNum(EMarkAsDelete); |
|
609 TPckgC<TBool> pkgSoftDelete(ETrue); |
|
610 caleninfo->SetPropertyL(keyBuff, pkgSoftDelete); |
|
611 |
|
612 CleanupStack::PopAndDestroy(caleninfo); |
|
613 TRAP_IGNORE(iCalSessions[aPosition]->DeleteCalFileL(aFileName)); |
|
614 |
|
615 delete iCalSessions[aPosition]; |
|
616 iCalSessions[aPosition]= NULL; |
|
617 iCalSessions.Remove(aPosition); |
|
618 |
|
619 iDesCArray->Delete(aPosition); |
|
620 } |
|
621 else |
|
622 { |
|
623 User::Leave(KErrNotFound); |
|
624 } |
|
625 |
|
626 } |
|
627 else |
|
628 { |
|
629 User::Leave(KErrAccessDenied); |
|
630 } |
|
631 |
|
632 #endif |
|
633 } |
|
634 |
|
635 const CPIMContactValidator& CPIMManager::ContactValidator() |
279 const CPIMContactValidator& CPIMManager::ContactValidator() |
636 { |
280 { |
637 JELOG2(EPim); |
281 JELOG2(EPim); |
638 return *iContactValidator; |
282 return *iContactValidator; |
639 } |
283 } |
663 for (TInt i = 0; i < n; i++) |
307 for (TInt i = 0; i < n; i++) |
664 { |
308 { |
665 if (iAdapterAccesses[i]->OpenContactListL(aListName, |
309 if (iAdapterAccesses[i]->OpenContactListL(aListName, |
666 &contactAdapterManager, &contactListAdapter, &localizationData)) |
310 &contactAdapterManager, &contactListAdapter, &localizationData)) |
667 { |
311 { |
|
312 // got one |
668 CleanupDeletePushL(contactAdapterManager); |
313 CleanupDeletePushL(contactAdapterManager); |
669 CleanupDeletePushL(contactListAdapter); |
314 CleanupDeletePushL(contactListAdapter); |
|
315 |
670 contactList = CPIMContactList::NewL(contactAdapterManager, |
316 contactList = CPIMContactList::NewL(contactAdapterManager, |
671 contactListAdapter, localizationData, *iContactValidator); |
317 contactListAdapter, localizationData, *iContactValidator); |
|
318 |
672 CleanupStack::Pop(contactListAdapter); |
319 CleanupStack::Pop(contactListAdapter); |
673 CleanupStack::Pop(contactAdapterManager); |
320 CleanupStack::Pop(contactAdapterManager); |
|
321 |
674 break; |
322 break; |
675 } |
323 } |
|
324 |
|
325 // else try next Adapter Access |
676 } |
326 } |
677 |
327 |
678 return contactList; |
328 return contactList; |
679 } |
329 } |
680 |
330 |
681 CPIMEventList* CPIMManager::DoOpenEventListL(const TDesC* aListName, const TDesC* aCalNameArg) |
331 CPIMEventList* CPIMManager::DoOpenEventListL(const TDesC* aListName) |
682 { |
332 { |
683 JELOG2(EPim); |
333 JELOG2(EPim); |
684 CPIMEventList* eventList = NULL; |
334 CPIMEventList* eventList = NULL; |
685 |
335 |
686 MPIMEventAdapterManager* eventAdapterManager = NULL; |
336 MPIMEventAdapterManager* eventAdapterManager = NULL; |
687 MPIMEventListAdapter* eventListAdapter = NULL; |
337 MPIMEventListAdapter* eventListAdapter = NULL; |
688 MPIMLocalizationData* localizationData = NULL; |
338 MPIMLocalizationData* localizationData = NULL; |
689 |
339 |
690 |
|
691 CCalSession* calSession = NULL; |
|
692 TInt findInCurrentArray = 0; |
|
693 TInt aPosition = 0; |
|
694 if (aCalNameArg == NULL || *aCalNameArg == iCalSession->DefaultFileNameL()) |
|
695 { |
|
696 calSession = iCalSession; |
|
697 } |
|
698 else |
|
699 { |
|
700 findInCurrentArray = iDesCArray->Find(*aCalNameArg, aPosition); |
|
701 |
|
702 if (findInCurrentArray == 0) |
|
703 { |
|
704 calSession = iCalSessions[aPosition]; |
|
705 } |
|
706 else |
|
707 { |
|
708 User::Leave(KErrNotFound); |
|
709 } |
|
710 } |
|
711 |
|
712 const TInt n = iAdapterAccesses.Count(); |
340 const TInt n = iAdapterAccesses.Count(); |
713 for (TInt i = 0; i < n; i++) |
341 for (TInt i = 0; i < n; i++) |
714 { |
342 { |
715 if (iAdapterAccesses[i]->OpenEventListL(calSession, aListName, |
343 if (iAdapterAccesses[i]->OpenEventListL(aListName, |
716 &eventAdapterManager, &eventListAdapter, &localizationData)) |
344 &eventAdapterManager, &eventListAdapter, &localizationData)) |
717 { |
345 { |
|
346 // got one |
718 CleanupDeletePushL(eventAdapterManager); |
347 CleanupDeletePushL(eventAdapterManager); |
719 CleanupDeletePushL(eventListAdapter); |
348 CleanupDeletePushL(eventListAdapter); |
|
349 |
720 eventList = CPIMEventList::NewL(eventAdapterManager, |
350 eventList = CPIMEventList::NewL(eventAdapterManager, |
721 eventListAdapter, localizationData, *iEventValidator); |
351 eventListAdapter, localizationData, *iEventValidator); |
|
352 |
722 CleanupStack::Pop(eventListAdapter); |
353 CleanupStack::Pop(eventListAdapter); |
723 CleanupStack::Pop(eventAdapterManager); |
354 CleanupStack::Pop(eventAdapterManager); |
|
355 |
724 break; |
356 break; |
725 } |
357 } |
726 |
358 |
727 // else try next Adapter Access |
359 // else try next Adapter Access |
728 } |
360 } |
729 |
361 |
730 return eventList; |
362 return eventList; |
731 } |
363 } |
732 |
364 |
733 CPIMToDoList* CPIMManager::DoOpenToDoListL(const TDesC* aListName, const TDesC* aCalNameArg) |
365 CPIMToDoList* CPIMManager::DoOpenToDoListL(const TDesC* aListName) |
734 { |
366 { |
735 JELOG2(EPim); |
367 JELOG2(EPim); |
736 CPIMToDoList* toDoList = NULL; |
368 CPIMToDoList* toDoList = NULL; |
737 |
369 |
738 MPIMToDoAdapterManager* toDoAdapterManager = NULL; |
370 MPIMToDoAdapterManager* toDoAdapterManager = NULL; |
739 MPIMToDoListAdapter* toDoListAdapter = NULL; |
371 MPIMToDoListAdapter* toDoListAdapter = NULL; |
740 MPIMLocalizationData* localizationData = NULL; |
372 MPIMLocalizationData* localizationData = NULL; |
741 TInt aPosition = 0; |
373 |
742 TInt findInCurrentArray = 0; |
|
743 |
|
744 |
|
745 CCalSession* calSession = NULL; |
|
746 |
|
747 if (aCalNameArg == NULL || *aCalNameArg == iCalSession->DefaultFileNameL()) |
|
748 { |
|
749 calSession = iCalSession; |
|
750 } |
|
751 else |
|
752 { |
|
753 findInCurrentArray = iDesCArray->Find(*aCalNameArg, aPosition); |
|
754 |
|
755 if (findInCurrentArray == 0) |
|
756 { |
|
757 calSession = iCalSessions[aPosition]; |
|
758 } |
|
759 else |
|
760 { |
|
761 User::Leave(KErrNotFound); |
|
762 } |
|
763 } |
|
764 const TInt n = iAdapterAccesses.Count(); |
374 const TInt n = iAdapterAccesses.Count(); |
765 for (TInt i = 0; i < n; i++) |
375 for (TInt i = 0; i < n; i++) |
766 { |
376 { |
767 if (iAdapterAccesses[i]->OpenToDoListL(calSession, aListName, |
377 if (iAdapterAccesses[i]->OpenToDoListL(aListName, &toDoAdapterManager, |
768 &toDoAdapterManager, &toDoListAdapter,&localizationData)) |
378 &toDoListAdapter, &localizationData)) |
769 { |
379 { |
770 // got one |
380 // got one |
771 CleanupDeletePushL(toDoAdapterManager); |
381 CleanupDeletePushL(toDoAdapterManager); |
772 CleanupDeletePushL(toDoListAdapter); |
382 CleanupDeletePushL(toDoListAdapter); |
773 |
383 |