diff -r 7cee158cb8cd -r 26b2b12093af javaextensions/pim/framework/src.s60/cpimmanager.cpp --- a/javaextensions/pim/framework/src.s60/cpimmanager.cpp Wed Sep 15 12:05:25 2010 +0300 +++ b/javaextensions/pim/framework/src.s60/cpimmanager.cpp Wed Oct 13 14:23:59 2010 +0300 @@ -17,44 +17,35 @@ // INCLUDE FILES - +#include "cpimmanager.h" #include #include -#include -#include -#ifdef RD_JAVA_PIM_MULTICAL_ENABLED -#include -#include -#endif -#include "cpimmanager.h" -#include "cpimcontactlist.h" -#include "cpimcontactvalidator.h" -#include "cpimeventvalidator.h" -#include "cpimtodovalidator.h" -#include "cpimeventlist.h" -#include "cpimtodolist.h" -#include "cpimversit.h" -#include "cpimcmadapteraccess.h" -#include "cpimeventadapteraccess.h" -#include "cpimtodoadapteraccess.h" -#include "cpimlocalizationmanager.h" -#include "fs_methodcall.h" -#include "jstringutils.h" -#include "logger.h" +#include "pimcommon.h" #include "mpimcontactadaptermanager.h" #include "mpimeventadaptermanager.h" #include "mpimtodoadaptermanager.h" #include "mpimcontactlistadapter.h" #include "mpimeventlistadapter.h" #include "mpimtodolistadapter.h" +#include "cpimversit.h" #include "mpimlocalizationmanager.h" #include "mpimlocalizationdata.h" +#include "cpimcontactlist.h" +#include "cpimeventlist.h" +#include "cpimtodolist.h" +#include "cpimcontactvalidator.h" +#include "cpimeventvalidator.h" +#include "cpimtodovalidator.h" #include "mpimadapteraccess.h" -#include "pimcommon.h" +#include "cpimcmadapteraccess.h" +#include "cpimeventadapteraccess.h" +#include "cpimtodoadapteraccess.h" #include "pimpanics.h" #include "pimjnitools.h" #include "pimutils.h" -#include "s60commonutils.h" +#include "jstringutils.h" +#include "logger.h" +#include "cpimlocalizationmanager.h" // CONSTANTS @@ -64,12 +55,10 @@ * low, at the time of writing 1 to 4. */ const TInt KManagerArrayGranularity = 2; -#ifdef RD_JAVA_PIM_MULTICAL_ENABLED -const TInt KBuffLength = 24; -#endif + CPIMManager::CPIMManager() : - java::util::FunctionServer("CPIMManager"), iAdapterAccesses(), iCalSessions() + java::util::FunctionServer("CPIMManager"), iAdapterAccesses() { JELOG2(EPim); } @@ -80,86 +69,18 @@ iContactValidator = CPIMContactValidator::NewL(); iEventValidator = CPIMEventValidator::NewL(); iToDoValidator = CPIMToDoValidator::NewL(); - iDesCArray = new(ELeave) CDesCArrayFlat(KManagerArrayGranularity); + iLocalizationManager = (MPIMLocalizationManager*)(CPIMLocalizationManager::NewL()); createServerToNewThread(); - CallMethodL(this, &CPIMManager::createCalSessionL, this); -} - -void CPIMManager::createCalSessionL() -{ - iCalSession = CCalSession::NewL(); - //CleanupStack::PushL(iCalSession); - iCalSessionArray = iCalSession->ListCalFilesL(); - - TInt index = 0; - TInt find = iCalSessionArray->Find(iCalSession->DefaultFileNameL(),index); - - if (!find) - { - iCalSessionArray->Delete(index); - } - - TRAPD(err, iCalSession->OpenL(iCalSession->DefaultFileNameL())); - if (KErrNotFound == err) - { - iCalSession->CreateCalFileL(iCalSession->DefaultFileNameL()); - iCalSession->OpenL(iCalSession->DefaultFileNameL()); - } - else - { - User::LeaveIfError(err); - } - //CleanupStack::Pop(iCalSession); - -#ifdef RD_JAVA_PIM_MULTICAL_ENABLED - TInt iterate = 0; - TBool softDelete = EFalse; - - while (iterate < iCalSessionArray->Count()) - { - CCalSession* aCalSession = CCalSession::NewL(*iCalSession); - CleanupStack::PushL(aCalSession); - aCalSession->OpenL(iCalSessionArray->MdcaPoint(iterate)); - CCalCalendarInfo* caleninfo = aCalSession->CalendarInfoL(); - CleanupStack::PushL(caleninfo); - aCalSession->SetCalendarInfoL(*caleninfo); - - TBuf8 keyBuff; - keyBuff.Zero(); - keyBuff.AppendNum(EMarkAsDelete); - TPckgC pkgSoftDelete(softDelete); - TRAPD(err,pkgSoftDelete.Set(caleninfo->PropertyValueL(keyBuff))); - if (KErrNone == err) - { - softDelete = pkgSoftDelete(); - } - - if (softDelete) - { - - CleanupStack::PopAndDestroy(caleninfo); - CleanupStack::PopAndDestroy(aCalSession); - } - else - { - iCalSessions.AppendL(aCalSession); - iDesCArray->AppendL(iCalSessionArray->MdcaPoint(iterate)); - CleanupStack::PopAndDestroy(caleninfo); - CleanupStack::Pop(aCalSession); - } - iterate++; - } - delete iCalSessionArray; - iCalSessionArray = NULL; -#endif } pimbasemanager* pimbasemanager::getInstance() { JELOG2(EPim); + // Create CPIMManager + CPIMManager* self = NULL; TInt error = KErrNone; TRAP(error, self = CPIMManager::NewL()); @@ -214,18 +135,9 @@ delete iEventValidator; iEventValidator = NULL; delete iToDoValidator; - CallMethod(this, &CPIMManager::DeleteSessions, this); - delete iDesCArray; iToDoValidator = NULL; stopServer(); } -void CPIMManager::DeleteSessions() -{ - JELOG2(EPim); - iCalSessions.ResetAndDestroy(); - delete iCalSession; - iCalSession = NULL; -} void CPIMManager::dispose() { @@ -251,24 +163,21 @@ } pimbaselist* CPIMManager::openPimList(const TPIMListType& aPimListType, - jstring aPimListName, jstring aCalName, - JNIEnv* aJniEnv) + jstring aPimListName, JNIEnv* aJniEnv) { JELOG2(EPim); const JStringUtils listName(*aJniEnv, aPimListName); const TDesC* listNameArg = (aPimListName ? &listName : NULL); - const JStringUtils calName(*aJniEnv, aCalName); - const TDesC* calNameArg = (aCalName ? &calName : NULL); pimbaselist* list = NULL; TInt error = KErrNone; - TRAP(error, list = DoOpenPimListL(aPimListType, listNameArg, calNameArg)); + TRAP(error, list = DoOpenPimListL(aPimListType, listNameArg)); if (error != KErrNone) throw error; return list; } pimbaselist* CPIMManager::DoOpenPimListL(const TPIMListType& aPimListType, - const TDesC* aPimListName, const TDesC* aCalNameArg) + const TDesC* aPimListName) { JELOG2(EPim); pimbaselist* list = NULL; @@ -279,18 +188,20 @@ } else if (aPimListType == EPIMEventList) { - list = DoOpenEventListL(aPimListName, aCalNameArg); + list = DoOpenEventListL(aPimListName); } else if (aPimListType == EPIMToDoList) { - list = DoOpenToDoListL(aPimListName, aCalNameArg); + list = DoOpenToDoListL(aPimListName); } else { // invalid list type User::Leave(KErrArgument); } + // Check results + if (!list) { if (aPimListName) @@ -330,6 +241,9 @@ retVal->AppendL(lists[listIndex]); } } + + // Done + CleanupStack::Pop(retVal); return retVal; @@ -362,276 +276,6 @@ return javaStringArray; } - - - - -void CPIMManager::DoListCalendarsL() -{ - -#ifdef RD_JAVA_PIM_MULTICAL_ENABLED - iCalList = iCalSession->ListCalFilesL(); - - TInt index = 0; - TInt find = iCalList->Find(iCalSession->DefaultFileNameL(),index); - - if (!find) - { - iCalList->Delete(index); - } - iCalSessionArray = iCalList; - TInt iterate = 0; - TInt aPosition = 0; - while (iterate < iCalList->Count()) - { - aPosition = 0; - - TInt findInCurrentArray = iDesCArray->Find(iCalList->MdcaPoint(iterate),aPosition, ECmpNormal16); - CCalSession* aCalSession; - if (findInCurrentArray == 0) - { - aCalSession = iCalSessions[aPosition]; - } - else - { - aCalSession = CCalSession::NewL(*iCalSession); - CleanupStack::PushL(aCalSession); - aCalSession->OpenL(iCalList->MdcaPoint(iterate)); - } - // check for soft deleted calendars, incase of calendars being held by other applications, this will be followed. - CCalCalendarInfo* caleninfo = aCalSession->CalendarInfoL(); - CleanupStack::PushL(caleninfo); - aCalSession->SetCalendarInfoL(*caleninfo); - TBool softDelete = EFalse; - TBuf8 keyBuff; - keyBuff.Zero(); - keyBuff.AppendNum(EMarkAsDelete); - - TPckgC pkgSoftDelete(softDelete); - - TRAPD(err,pkgSoftDelete.Set(caleninfo->PropertyValueL(keyBuff))); - - if (KErrNone == err) - { - softDelete = pkgSoftDelete(); - } - - if (!softDelete && findInCurrentArray != 0) - { - iCalSessions.AppendL(aCalSession); - CleanupStack::Pop(aCalSession); - iDesCArray->AppendL(iCalList->MdcaPoint(iterate)); - } - else if (softDelete && findInCurrentArray == 0) - { - CleanupStack::PopAndDestroy(caleninfo); - caleninfo = NULL; - delete aCalSession; - iCalSessions[aPosition] = NULL; - iCalSessions.Remove(aPosition); - iDesCArray->Delete(aPosition); - - } - else if (softDelete && findInCurrentArray != 0) - { - CleanupStack::PopAndDestroy(caleninfo); - CleanupStack::PopAndDestroy(aCalSession); - caleninfo=NULL; - aCalSession = NULL; - } - if (caleninfo != NULL) - { - CleanupStack::PopAndDestroy(caleninfo); - caleninfo = NULL; - } - iterate++; - - } - - iCalList = iDesCArray; - iCalList->AppendL(iCalSession->DefaultFileNameL()); - delete iCalSessionArray; - iCalSessionArray = NULL; -#endif - -} - - -jobjectArray CPIMManager::listCalendars(jintArray aError, - JNIEnv* aJniEnv) -{ - - jobjectArray javaStringArray = NULL; - TInt error = KErrNone; - TRAP(error, CallMethodL(this, &CPIMManager::DoListCalendarsL, this)); - if (error == KErrNone) - { - javaStringArray = CreateJavaStringArray(aJniEnv, *iCalList, EFalse); - if (!javaStringArray) - { - SetJavaErrorCode(aJniEnv, aError, KErrNoMemory); - } - iCalList = NULL; - TInt index = 0; - TInt find = 0; - TRAPD(error,find = iDesCArray->Find(iCalSession->DefaultFileNameL(),index)); - if (error == KErrNone) - if (!find) - { - iDesCArray->Delete(index); - } - else - { - SetJavaErrorCode(aJniEnv, aError, error); - } - } - else - { - - SetJavaErrorCode(aJniEnv, aError, error); - } - return javaStringArray; -} - -jobjectArray CPIMManager::listCalendarNames(jintArray aError, - JNIEnv* aJniEnv) -{ - jobjectArray javaStringArray = NULL; - TInt error = KErrNone; - TRAP(error, CallMethodL(this, &CPIMManager::DoListCalendarNamesL, this)); - if (error == KErrNone) - { - javaStringArray = CreateJavaStringArray(aJniEnv, *iCalListName, EFalse); - if (!javaStringArray) - { - SetJavaErrorCode(aJniEnv, aError, KErrNoMemory); - } - delete iCalListName; - iCalListName = NULL; - } - else - { - SetJavaErrorCode(aJniEnv, aError, error); - } - return javaStringArray; -} - -void CPIMManager::DoListCalendarNamesL() -{ -#ifdef RD_JAVA_PIM_MULTICAL_ENABLED - iCalListName = new(ELeave) CDesCArrayFlat(KManagerArrayGranularity); - //CleanupStack::PushL(iCalListName); - for (int iterate = 0; iterate < iDesCArray->Count(); iterate++) - { - CCalCalendarInfo* caleninfo = iCalSessions[iterate]->CalendarInfoL(); - CleanupStack::PushL(caleninfo); - iCalListName->AppendL(caleninfo->NameL()); - - CleanupStack::PopAndDestroy(caleninfo); - } - CCalCalendarInfo* caleninfo = iCalSession->CalendarInfoL(); - CleanupStack::PushL(caleninfo); - iCalListName->AppendL(caleninfo->NameL()); - - CleanupStack::PopAndDestroy(caleninfo); - //CleanupStack::Pop(iCalListName); -#endif -} -void CPIMManager::createCalendar(jstring aCalName,jstring aDisplayName, JNIEnv* aJniEnv) -{ - const JStringUtils calName(*aJniEnv, aCalName); - const JStringUtils displayName(*aJniEnv, aDisplayName); - const TDesC* displayNameArg = (aDisplayName ? &displayName : NULL); - const TDesC* calNameArg = (aCalName ? &calName : NULL); - TInt error = KErrNone; - TRAP(error, CallMethodL(this, &CPIMManager::DoCreateCalFileL, *calNameArg,*displayNameArg, this)); - if (error != KErrNone) - throw error; -} - -void CPIMManager::DoCreateCalFileL(const TDesC& aFileName, const TDesC& aDisplayName) -{ - #ifdef RD_JAVA_PIM_MULTICAL_ENABLED - - CCalSession* aCalSession = CCalSession::NewL(*iCalSession); - CleanupStack::PushL(aCalSession); - CCalCalendarInfo* calendarInfo = CCalCalendarInfo::NewL(); - CleanupStack::PushL(calendarInfo); - - aCalSession->CreateCalFileL(aFileName,*calendarInfo); - CleanupStack::PopAndDestroy(calendarInfo); - aCalSession->OpenL(aFileName); - CCalCalendarInfo* calendarinfostack = aCalSession->CalendarInfoL(); - CleanupStack::PushL(calendarinfostack); - - calendarinfostack->SetNameL(aDisplayName); - calendarinfostack->SetEnabled(ETrue); - aCalSession->SetCalendarInfoL(*calendarinfostack); - CleanupStack::PopAndDestroy(calendarinfostack); - iCalSessions.AppendL(aCalSession); - iDesCArray->AppendL(aFileName); - CleanupStack::Pop(aCalSession); - - #endif -} - -void CPIMManager::deleteCalendar(jstring aCalName, JNIEnv* aJniEnv) -{ - const JStringUtils calName(*aJniEnv, aCalName); - const TDesC* calNameArg = (aCalName ? &calName : NULL); - TInt error = KErrNone; - TRAP(error, CallMethodL(this, &CPIMManager::DoDeleteCalFileL, *calNameArg, this)); - if (error != KErrNone) - throw error; - -} - - -void CPIMManager::DoDeleteCalFileL(const TDesC& aFileName) -{ - #ifdef RD_JAVA_PIM_MULTICAL_ENABLED - - if (aFileName != iCalSession->DefaultFileNameL()) - { - TInt aPosition = 0; - TInt findInCurrentArray = iDesCArray->Find(aFileName, aPosition, ECmpNormal16); - if (findInCurrentArray == 0) - { - CCalCalendarInfo* caleninfo = iCalSessions[aPosition]->CalendarInfoL(); - CleanupStack::PushL(caleninfo); - - caleninfo->SetEnabled(EFalse); - - TBuf8 keyBuff; - - keyBuff.Zero(); - keyBuff.AppendNum(EMarkAsDelete); - TPckgC pkgSoftDelete(ETrue); - caleninfo->SetPropertyL(keyBuff, pkgSoftDelete); - - CleanupStack::PopAndDestroy(caleninfo); - TRAP_IGNORE(iCalSessions[aPosition]->DeleteCalFileL(aFileName)); - - delete iCalSessions[aPosition]; - iCalSessions[aPosition]= NULL; - iCalSessions.Remove(aPosition); - - iDesCArray->Delete(aPosition); - } - else - { - User::Leave(KErrNotFound); - } - - } - else - { - User::Leave(KErrAccessDenied); - } - - #endif -} - const CPIMContactValidator& CPIMManager::ContactValidator() { JELOG2(EPim); @@ -665,20 +309,26 @@ if (iAdapterAccesses[i]->OpenContactListL(aListName, &contactAdapterManager, &contactListAdapter, &localizationData)) { + // got one CleanupDeletePushL(contactAdapterManager); CleanupDeletePushL(contactListAdapter); + contactList = CPIMContactList::NewL(contactAdapterManager, contactListAdapter, localizationData, *iContactValidator); + CleanupStack::Pop(contactListAdapter); CleanupStack::Pop(contactAdapterManager); + break; } + + // else try next Adapter Access } return contactList; } -CPIMEventList* CPIMManager::DoOpenEventListL(const TDesC* aListName, const TDesC* aCalNameArg) +CPIMEventList* CPIMManager::DoOpenEventListL(const TDesC* aListName) { JELOG2(EPim); CPIMEventList* eventList = NULL; @@ -687,40 +337,22 @@ MPIMEventListAdapter* eventListAdapter = NULL; MPIMLocalizationData* localizationData = NULL; - - CCalSession* calSession = NULL; - TInt findInCurrentArray = 0; - TInt aPosition = 0; - if (aCalNameArg == NULL || *aCalNameArg == iCalSession->DefaultFileNameL()) - { - calSession = iCalSession; - } - else - { - findInCurrentArray = iDesCArray->Find(*aCalNameArg, aPosition); - - if (findInCurrentArray == 0) - { - calSession = iCalSessions[aPosition]; - } - else - { - User::Leave(KErrNotFound); - } - } - const TInt n = iAdapterAccesses.Count(); for (TInt i = 0; i < n; i++) { - if (iAdapterAccesses[i]->OpenEventListL(calSession, aListName, + if (iAdapterAccesses[i]->OpenEventListL(aListName, &eventAdapterManager, &eventListAdapter, &localizationData)) { + // got one CleanupDeletePushL(eventAdapterManager); CleanupDeletePushL(eventListAdapter); + eventList = CPIMEventList::NewL(eventAdapterManager, eventListAdapter, localizationData, *iEventValidator); + CleanupStack::Pop(eventListAdapter); CleanupStack::Pop(eventAdapterManager); + break; } @@ -730,7 +362,7 @@ return eventList; } -CPIMToDoList* CPIMManager::DoOpenToDoListL(const TDesC* aListName, const TDesC* aCalNameArg) +CPIMToDoList* CPIMManager::DoOpenToDoListL(const TDesC* aListName) { JELOG2(EPim); CPIMToDoList* toDoList = NULL; @@ -738,34 +370,12 @@ MPIMToDoAdapterManager* toDoAdapterManager = NULL; MPIMToDoListAdapter* toDoListAdapter = NULL; MPIMLocalizationData* localizationData = NULL; - TInt aPosition = 0; - TInt findInCurrentArray = 0; - - CCalSession* calSession = NULL; - - if (aCalNameArg == NULL || *aCalNameArg == iCalSession->DefaultFileNameL()) - { - calSession = iCalSession; - } - else - { - findInCurrentArray = iDesCArray->Find(*aCalNameArg, aPosition); - - if (findInCurrentArray == 0) - { - calSession = iCalSessions[aPosition]; - } - else - { - User::Leave(KErrNotFound); - } - } const TInt n = iAdapterAccesses.Count(); for (TInt i = 0; i < n; i++) { - if (iAdapterAccesses[i]->OpenToDoListL(calSession, aListName, - &toDoAdapterManager, &toDoListAdapter,&localizationData)) + if (iAdapterAccesses[i]->OpenToDoListL(aListName, &toDoAdapterManager, + &toDoListAdapter, &localizationData)) { // got one CleanupDeletePushL(toDoAdapterManager);