javaextensions/pim/framework/src.s60/cpimmanager.cpp
branchRCL_3
changeset 83 26b2b12093af
parent 77 7cee158cb8cd
equal deleted inserted replaced
77:7cee158cb8cd 83:26b2b12093af
    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;
   212     delete iContactValidator;
   133     delete iContactValidator;
   213     iContactValidator = NULL;
   134     iContactValidator = NULL;
   214     delete iEventValidator;
   135     delete iEventValidator;
   215     iEventValidator = NULL;
   136     iEventValidator = NULL;
   216     delete iToDoValidator;
   137     delete iToDoValidator;
   217     CallMethod(this, &CPIMManager::DeleteSessions, this);
       
   218     delete iDesCArray;
       
   219     iToDoValidator = NULL;
   138     iToDoValidator = NULL;
   220     stopServer();
   139     stopServer();
   221 }
       
   222 void CPIMManager::DeleteSessions()
       
   223 {
       
   224     JELOG2(EPim);
       
   225     iCalSessions.ResetAndDestroy();
       
   226     delete iCalSession;
       
   227     iCalSession = NULL;
       
   228 }
   140 }
   229 
   141 
   230 void CPIMManager::dispose()
   142 void CPIMManager::dispose()
   231 {
   143 {
   232     JELOG2(EPim);
   144     JELOG2(EPim);
   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
   328         for (TInt listIndex = 0; listIndex < numLists; listIndex++)
   239         for (TInt listIndex = 0; listIndex < numLists; listIndex++)
   329         {
   240         {
   330             retVal->AppendL(lists[listIndex]);
   241             retVal->AppendL(lists[listIndex]);
   331         }
   242         }
   332     }
   243     }
       
   244 
       
   245     // Done
       
   246 
   333     CleanupStack::Pop(retVal);
   247     CleanupStack::Pop(retVal);
   334     return retVal;
   248     return retVal;
   335 
   249 
   336 }
   250 }
   337 
   251 
   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