diff -r 5d0ec8b709be -r 02682e02e51f serviceproviders/sapi_contacts_vpbk/src/contactinterface.cpp --- a/serviceproviders/sapi_contacts_vpbk/src/contactinterface.cpp Thu Dec 17 09:09:50 2009 +0200 +++ b/serviceproviders/sapi_contacts_vpbk/src/contactinterface.cpp Mon Jan 18 21:02:57 2010 +0200 @@ -40,7 +40,7 @@ #include "contacterrormessage.hrh" #include "../../inc/serviceerrno.h" #include "contactsmaxlength.h" - +#include using namespace LIW; #define KMissingArg -100 @@ -70,6 +70,7 @@ { iContactService = CContactService::NewL(); iErrorMess = HBufC::NewL(250); + iRepository = CRepository::NewL( TUid::Uid(KCRUidPhonebookStoreConfiguration) ); } /* ----------------------------------------------------------------------------- @@ -99,6 +100,7 @@ delete iContactService; delete iErrorMess; delete iDburi; + delete iRepository; iCallbackMap.ResetAndDestroy(); iCallbackMap.Close(); } @@ -401,9 +403,10 @@ TBool xspid = EFalse; TBool xspidIsDes = EFalse; TBool atleastOneField = EFalse; - iDburi = HBufC::NewL(VPbkContactStoreUris::DefaultCntDbUri().Length()); + //iDburi = HBufC::NewL(VPbkContactStoreUris::DefaultCntDbUri().Length()); //set the DBUri to the default value. - iDburi->Des().Copy(VPbkContactStoreUris::DefaultCntDbUri()); + //iDburi->Des().Copy(VPbkContactStoreUris::DefaultCntDbUri()); + iDburi = GetDefaultDBUri().AllocLC(); //get the number of entries in the map TInt keyCount = aMap->Count(); @@ -1052,7 +1055,8 @@ HBufC8* cntid = NULL; CContactIter* iter; CContactIterator* iterator; - TPtrC dbUri(VPbkContactStoreUris::DefaultCntDbUri()); + //TPtrC dbUri(VPbkContactStoreUris::DefaultCntDbUri()); + TPtrC dbUri = GetDefaultDBUri(); //Switch based on the Ttype var value switch(listType) { @@ -1591,7 +1595,35 @@ } return errCode; } - + +TPtrC CContactInterface::GetDefaultDBUri() + { + TPtrC dbUri; + HBufC* defaultStoreUri = HBufC::NewL(KInitialStoreUriSize); + TPtr ptr = defaultStoreUri->Des(); + TInt actualSize = 0; + TInt ret = iRepository->Get + (KPhonebookDefaultSavingStoreUri, ptr, actualSize); + if (ret == KErrOverflow || ret != KErrNone) + { + delete defaultStoreUri; + defaultStoreUri = NULL; + defaultStoreUri = HBufC::NewL(actualSize); + ptr.Set(defaultStoreUri->Des()); + TInt status = iRepository->Get(KPhonebookDefaultSavingStoreUri, ptr); + if(status == KErrNone) + { + TPtrC dbUri(VPbkContactStoreUris::DefaultCntDbUri()); + delete defaultStoreUri; + defaultStoreUri = NULL; + return dbUri; + } + delete defaultStoreUri; + defaultStoreUri = NULL; + } + dbUri.Set(ptr); + return dbUri; + } /* ----------------------------------------------------------------------------- @@ -1746,7 +1778,7 @@ User::Leave(err); } } - + CleanupStack::Pop(); CleanupStack::Pop(contact); } //end of if pMap else @@ -1774,8 +1806,7 @@ CleanupStack::PushL( TCleanupItem( TLiwVariant::VariantCleanup , &valueUri) ); //set the Db Uri to default database. - TPtrC dbUri(VPbkContactStoreUris::DefaultCntDbUri()); - + TPtrC dbUri = GetDefaultDBUri(); TPtrC grpIdUnicode(KNullDesC); TPtrC grpLabel(KNullDesC); @@ -2016,7 +2047,8 @@ const CLiwMap* pMap = paramImportData->Value().AsMap(); if(NULL != pMap) { - TPtrC dburi(VPbkContactStoreUris::DefaultCntDbUri()); + //TPtrC dburi(VPbkContactStoreUris::DefaultCntDbUri()); + TPtrC dburi = GetDefaultDBUri(); TLiwVariant valueFname; CleanupStack::PushL( TCleanupItem( TLiwVariant::VariantCleanup , &valueFname) ); @@ -2207,7 +2239,8 @@ TLiwVariant valueUri; CleanupStack::PushL( TCleanupItem( TLiwVariant::VariantCleanup , &valueUri) ); - TPtrC dburi(VPbkContactStoreUris::DefaultCntDbUri()); + //TPtrC dburi(VPbkContactStoreUris::DefaultCntDbUri()); + TPtrC dburi = GetDefaultDBUri(); if( EFalse != pMap->FindL(KDBUri,valueUri)) { if(EVariantTypeDesC != valueUri.TypeId()) @@ -2402,7 +2435,8 @@ TLiwVariant valueId; CleanupStack::PushL( TCleanupItem( TLiwVariant::VariantCleanup , &valueId) ); - TPtrC dbUri(VPbkContactStoreUris::DefaultCntDbUri()); + //TPtrC dbUri(VPbkContactStoreUris::DefaultCntDbUri()); + TPtrC dbUri = GetDefaultDBUri(); const CLiwList* contactIdList = NULL; if( EFalse != pMap->FindL(KDBUri,valueUri)) @@ -2596,7 +2630,8 @@ TLiwVariant valueUri; CleanupStack::PushL( TCleanupItem( TLiwVariant::VariantCleanup , &valueUri) ); - TPtrC dbUri(VPbkContactStoreUris::DefaultCntDbUri()); + //TPtrC dbUri(VPbkContactStoreUris::DefaultCntDbUri()); + TPtrC dbUri = GetDefaultDBUri(); TBool associateType = EFalse; HBufC8* groupId = NULL;