--- 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 <centralrepository.h>
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;