--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/creator/engine/src/creator_phonebookwrapper.cpp Tue Aug 31 15:15:20 2010 +0300
@@ -0,0 +1,654 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+
+#include "engine.h"
+#include "enginewrapper.h"
+#include "creator_contactsetcache.h"
+
+#include "creator_phonebookwrapper.h"
+#include "creator_traces.h"
+
+#include <bautils.h>
+
+_LIT(KTempPath, "C:\\Data\\Creator\\");
+
+typedef struct {
+TInt iFieldCode;
+QString iDetail;
+QString iFieldContext;
+QString iFieldString;
+} QDetailFieldInfo;
+//static const TInt RND_TYPE_UNDEF = -99;
+QDetailFieldInfo CreatorPbkTextFields[] = {
+ { (TInt)CCreatorPhonebookWrapper::EFirstName,(QContactName::DefinitionName).operator QString(), (QContactDetail::ContextHome).operator QString(), (QContactName::FieldFirstName).operator QString()},
+ { (TInt)CCreatorPhonebookWrapper::ELastName,(QContactName::DefinitionName).operator QString(), (QContactDetail::ContextHome).operator QString(), (QContactName::FieldLastName).operator QString()},
+ { (TInt)CCreatorPhonebookWrapper::ECompanyName,(QContactOrganization::DefinitionName).operator QString(), (QContactDetail::ContextWork).operator QString(), (QContactOrganization::FieldName).operator QString()},
+ { (TInt)CCreatorPhonebookWrapper::EJobTitle,(QContactOrganization::DefinitionName).operator QString(), (QContactDetail::ContextWork).operator QString(), (QContactOrganization::FieldTitle).operator QString()},
+ { (TInt)CCreatorPhonebookWrapper::EPrefix,(QContactName::DefinitionName).operator QString(), (QContactDetail::ContextHome).operator QString(), (QContactName::FieldPrefix).operator QString()},
+ { (TInt)CCreatorPhonebookWrapper::ESuffix,(QContactName::DefinitionName).operator QString(), (QContactDetail::ContextHome).operator QString(), (QContactName::FieldSuffix).operator QString()},
+ { (TInt)CCreatorPhonebookWrapper::EMiddleName,(QContactName::DefinitionName).operator QString(), (QContactDetail::ContextHome).operator QString(), (QContactName::FieldMiddleName).operator QString()},
+ { (TInt)CCreatorPhonebookWrapper::EAddrStreetHome,(QContactAddress::DefinitionName).operator QString(), (QContactDetail::ContextHome).operator QString(), (QContactAddress::FieldStreet).operator QString()},
+ { (TInt)CCreatorPhonebookWrapper::EAddrLocalHome,(QContactAddress::DefinitionName).operator QString(), (QContactDetail::ContextHome).operator QString(), (QContactAddress::FieldLocality).operator QString()},
+ { (TInt)CCreatorPhonebookWrapper::EAddrRegionHome,(QContactAddress::DefinitionName).operator QString(), (QContactDetail::ContextHome).operator QString(), (QContactAddress::FieldRegion).operator QString()},
+ { (TInt)CCreatorPhonebookWrapper::EAddrPostCodeHome,(QContactAddress::DefinitionName).operator QString(), (QContactDetail::ContextHome).operator QString(), (QContactAddress::FieldPostcode).operator QString()},
+ { (TInt)CCreatorPhonebookWrapper::EAddrCountryHome,(QContactAddress::DefinitionName).operator QString(), (QContactDetail::ContextHome).operator QString(), (QContactAddress::FieldCountry).operator QString()},
+ { (TInt)CCreatorPhonebookWrapper::EAddrStreetGen,(QContactAddress::DefinitionName).operator QString(), "", (QContactAddress::FieldStreet).operator QString()},
+ { (TInt)CCreatorPhonebookWrapper::EAddrLocalGen,(QContactAddress::DefinitionName).operator QString(), "", (QContactAddress::FieldLocality).operator QString()},
+ { (TInt)CCreatorPhonebookWrapper::EAddrRegionGen,(QContactAddress::DefinitionName).operator QString(), "", (QContactAddress::FieldRegion).operator QString()},
+ { (TInt)CCreatorPhonebookWrapper::EAddrPostCodeGen,(QContactAddress::DefinitionName).operator QString(), "", (QContactAddress::FieldPostcode).operator QString()},
+ { (TInt)CCreatorPhonebookWrapper::EAddrCountryGen,(QContactAddress::DefinitionName).operator QString(), "", (QContactAddress::FieldCountry).operator QString()},
+ { (TInt)CCreatorPhonebookWrapper::EAddrStreetWork,(QContactAddress::DefinitionName).operator QString(), (QContactDetail::ContextWork).operator QString(), (QContactAddress::FieldStreet).operator QString()},
+ { (TInt)CCreatorPhonebookWrapper::EAddrLocalWork,(QContactAddress::DefinitionName).operator QString(), (QContactDetail::ContextWork).operator QString(), (QContactAddress::FieldLocality).operator QString()},
+ { (TInt)CCreatorPhonebookWrapper::EAddrRegionWork,(QContactAddress::DefinitionName).operator QString(), (QContactDetail::ContextWork).operator QString(), (QContactAddress::FieldRegion).operator QString()},
+ { (TInt)CCreatorPhonebookWrapper::EAddrPostCodeWork,(QContactAddress::DefinitionName).operator QString(), (QContactDetail::ContextWork).operator QString(), (QContactAddress::FieldPostcode).operator QString()},
+ { (TInt)CCreatorPhonebookWrapper::EAddrCountryWork,(QContactAddress::DefinitionName).operator QString(), (QContactDetail::ContextWork).operator QString(), (QContactAddress::FieldCountry).operator QString()},
+ { (TInt)CCreatorPhonebookWrapper::EMobilePhoneWork,(QContactPhoneNumber::DefinitionName).operator QString(), (QContactDetail::ContextWork).operator QString(), (QContactPhoneNumber::SubTypeMobile).operator QString()},
+ { (TInt)CCreatorPhonebookWrapper::ELandPhoneWork,(QContactPhoneNumber::DefinitionName).operator QString(), (QContactDetail::ContextWork).operator QString(), (QContactPhoneNumber::SubTypeLandline).operator QString()},
+ { (TInt)CCreatorPhonebookWrapper::ENote,(QContactNote::DefinitionName).operator QString(), (QContactDetail::ContextHome).operator QString(), (QContactNote::FieldNote).operator QString()},
+ { (TInt)CCreatorPhonebookWrapper::EDepartment,(QContactOrganization::DefinitionName).operator QString(), (QContactDetail::ContextWork).operator QString(), (QContactOrganization::FieldDepartment).operator QString()},
+ { (TInt)CCreatorPhonebookWrapper::EAsstName,(QContactOrganization::DefinitionName).operator QString(), (QContactDetail::ContextWork).operator QString(), (QContactOrganization::FieldAssistantName).operator QString()},
+ { (TInt)CCreatorPhonebookWrapper::ESpouse,(QContactFamily::DefinitionName).operator QString(), (QContactDetail::ContextHome).operator QString(), (QContactFamily::FieldSpouse).operator QString()},
+ { (TInt)CCreatorPhonebookWrapper::EChildren,(QContactFamily::DefinitionName).operator QString(), (QContactDetail::ContextHome).operator QString(), (QContactFamily::FieldChildren).operator QString()},
+ { (TInt)CCreatorPhonebookWrapper::EGenLabel,(QContactName::DefinitionName).operator QString(), (QContactDetail::ContextHome).operator QString(), (QContactName::FieldCustomLabel).operator QString()}
+ };
+
+
+typedef struct{
+TInt iFieldCode;
+QString iFieldContext;
+QString iFieldString;
+}PhoneNumInfo;
+PhoneNumInfo CreatorPhoneNumberFields[] =
+ {
+ { CCreatorPhonebookWrapper::ELandPhoneGen,"", "Landline"},
+ { CCreatorPhonebookWrapper::ELandPhoneHome,"Home", "Landline"},
+ { CCreatorPhonebookWrapper::ELandPhoneWork,"Work", "Landline"},
+ { CCreatorPhonebookWrapper::EMobilePhoneGen,"","Mobile"},
+ { CCreatorPhonebookWrapper::EMobilePhoneHome,"Home","Mobile"},
+ { CCreatorPhonebookWrapper::EMobilePhoneWork,"Work", "Mobile"},
+ { CCreatorPhonebookWrapper::EFaxNumberGen, "", "Facsimile"},
+ { CCreatorPhonebookWrapper::EFaxNumberHome, "Home", "Facsimile"},
+ { CCreatorPhonebookWrapper::EFaxNumberWork, "Work", "Facsimile"},
+ { CCreatorPhonebookWrapper::EPagerNumber, "Work", "Pager"},
+ { CCreatorPhonebookWrapper::EVideoNumberGen, "", "Video"},
+ { CCreatorPhonebookWrapper::EVideoNumberHome, "Home", "Video"},
+ { CCreatorPhonebookWrapper::EVideoNumberWork, "Work", "Video"}, //{ "Home", "Voice" },//{ "Work", "Voice" },
+ { CCreatorPhonebookWrapper::EAsstPhone, "Work", "Assistant" },
+ { CCreatorPhonebookWrapper::ECarPhone, "Home", "Car" }
+ };
+
+
+typedef struct{
+ TInt iFieldCode;
+ QString iFieldContext;
+}EmailInfo;
+EmailInfo CreatorEmailFields[] =
+ {
+ {CCreatorPhonebookWrapper::EEmailGen,""},
+ {CCreatorPhonebookWrapper::EEmailHome,(QContactDetail::ContextHome).operator QString()},
+ {CCreatorPhonebookWrapper::EEmailWork,(QContactDetail::ContextWork).operator QString()}
+ };
+
+typedef struct{
+ TInt iFieldCode;
+ QString iFieldContext;
+}UrlInfo;
+UrlInfo CreatorUrlFields[] =
+ {
+ {CCreatorPhonebookWrapper::EUrlGen,""},
+ {CCreatorPhonebookWrapper::EUrlHome,(QContactDetail::ContextHome).operator QString()},
+ {CCreatorPhonebookWrapper::EUrlWork,(QContactDetail::ContextWork).operator QString()}
+ };
+
+CCreatorPhonebookWrapper* CCreatorPhonebookWrapper::NewL()
+ {
+ CCreatorPhonebookWrapper* self = CCreatorPhonebookWrapper::NewLC();
+ CleanupStack::Pop(self);
+ return self;
+ }
+
+CCreatorPhonebookWrapper* CCreatorPhonebookWrapper::NewLC()
+ {
+ CCreatorPhonebookWrapper* self = new (ELeave) CCreatorPhonebookWrapper();
+ CleanupStack::PushL(self);
+ self->ConstructL();
+ return self;
+ }
+
+
+CCreatorPhonebookWrapper::CCreatorPhonebookWrapper()
+ {
+ }
+
+void CCreatorPhonebookWrapper::ConstructL()
+ {
+ LOGSTRING("Creator: CCreatorPhonebookWrapper::ConstructL");
+
+ QT_TRYCATCH_LEAVING( iPhonebookAPI = new CCreatorPhonebookAPI() );
+
+ }
+
+
+CCreatorPhonebookWrapper::~CCreatorPhonebookWrapper()
+ {
+ LOGSTRING("Creator: CCreatorPhonebookWrapper::~CCreatorPhonebookWrapper");
+ if( iPhonebookAPI )
+ {
+ delete iPhonebookAPI;
+ iPhonebookAPI = NULL;
+ }
+ }
+
+//----------------------------------------------------------------------------
+
+QList<QContactDetail> CCreatorPhonebookWrapper::CreateContactDetailsFromParameters( const TCreatorContactFields& aFields )
+ {
+ QList<QContactDetail> contDetList;
+ QString content;
+ HBufC* temp;
+ TInt arraySize = sizeof(CreatorPbkTextFields)/sizeof(QDetailFieldInfo);
+ for (TInt i = 0; i < arraySize; i++)
+ {
+ TCreatorContactFields::const_iterator it = aFields.find(CreatorPbkTextFields[i].iFieldCode);
+ if( it != aFields.end() )
+ {
+ temp = (*it).second;
+ content = QString::fromUtf16( temp->Des().Ptr(), temp->Length() );
+ QContactDetail contactDetail = CreateContactDetail(contDetList, CreatorPbkTextFields[i].iDetail,CreatorPbkTextFields[i].iFieldContext,CreatorPbkTextFields[i].iFieldString, content );
+ AddFieldToList( contDetList, contactDetail );
+ }
+
+ }
+ arraySize = sizeof(CreatorPhoneNumberFields)/sizeof(PhoneNumInfo);
+ for (TInt i = 0; i < arraySize; i++)
+ {
+ TCreatorContactFields::const_iterator it = aFields.find(CreatorPhoneNumberFields[i].iFieldCode);
+ if( it != aFields.end() )
+ {
+ temp = (*it).second;
+ content = QString::fromUtf16( temp->Des().Ptr(), temp->Length() );
+ QContactDetail contactDetail = CreateContactDetail(contDetList, QContactPhoneNumber::DefinitionName ,CreatorPhoneNumberFields[i].iFieldContext,CreatorPhoneNumberFields[i].iFieldString, content );
+ AddFieldToList( contDetList, contactDetail );
+ }
+ }
+
+ arraySize = sizeof(CreatorEmailFields)/sizeof(EmailInfo);
+ for (TInt i = 0; i < arraySize; i++)
+ {
+ TCreatorContactFields::const_iterator it = aFields.find(CreatorEmailFields[i].iFieldCode);
+ if( it != aFields.end() )
+ {
+ temp = (*it).second;
+ content = QString::fromUtf16( temp->Des().Ptr(), temp->Length() );
+ QContactDetail contactDetail = CreateContactDetail(contDetList, QContactEmailAddress::DefinitionName ,CreatorEmailFields[i].iFieldContext,"", content );
+ AddFieldToList( contDetList, contactDetail );
+ }
+ }
+
+ arraySize = sizeof(CreatorUrlFields)/sizeof(UrlInfo);
+ for (TInt i = 0; i < arraySize; i++)
+ {
+ TCreatorContactFields::const_iterator it = aFields.find(CreatorUrlFields[i].iFieldCode);
+ if( it != aFields.end() )
+ {
+ temp = (*it).second;
+ content = QString::fromUtf16( temp->Des().Ptr(), temp->Length() );
+ QContactDetail contactDetail = CreateContactDetail(contDetList, QContactUrl::DefinitionName ,CreatorUrlFields[i].iFieldContext,"", content );
+ AddFieldToList( contDetList, contactDetail );
+ }
+ }
+ arraySize = sizeof(CreatorUrlFields)/sizeof(UrlInfo);
+ for (TInt i = 0; i < arraySize; i++)
+ {
+ TCreatorContactFields::const_iterator it = aFields.find(CreatorUrlFields[i].iFieldCode);
+ if( it != aFields.end() )
+ {
+ temp = (*it).second;
+ content = QString::fromUtf16( temp->Des().Ptr(), temp->Length() );
+ QContactDetail contactDetail = CreateContactDetail(contDetList, QContactUrl::DefinitionName ,CreatorUrlFields[i].iFieldContext,"", content );
+ AddFieldToList( contDetList, contactDetail );
+ }
+ }
+
+ TCreatorContactFields::const_iterator it = aFields.find(CCreatorPhonebookWrapper::EThumbnailPic);
+ if( it != aFields.end() )
+ {
+ temp = (*it).second;
+ if(temp)
+ {
+ content = QString::fromUtf16( temp->Des().Ptr(), temp->Length() );
+ QContactDetail contactDetail = CreateContactDetail(contDetList, QContactAvatar::DefinitionName ,"","", content );
+ AddFieldToList( contDetList, contactDetail );
+ }
+ }
+ it = aFields.find(CCreatorPhonebookWrapper::EAnniversary);
+ if( it != aFields.end() )
+ {
+ temp = (*it).second;
+ if(temp)
+ {
+ content = QString::fromUtf16( temp->Des().Ptr(), temp->Length() );
+ QContactDetail contactDetail = CreateContactDetail(contDetList, QContactAnniversary::DefinitionName ,"","", content );
+ AddFieldToList( contDetList, contactDetail );
+ }
+ }
+
+ return contDetList;
+ }
+QContactDetail CCreatorPhonebookWrapper::CreateContactDetail( QList<QContactDetail>& aContactDetailList,QString aDetail, QString aFieldContext, QString aFieldString, QString aData )
+ {
+ QContactDetail contactDetail;
+
+ if( aDetail == QContactPhoneNumber::DefinitionName)
+ {
+ QContactPhoneNumber phoneNumber;// = contactDetail;
+ if(!aFieldContext.isEmpty())
+ {
+ phoneNumber.setContexts(aFieldContext);
+ }
+ phoneNumber.setSubTypes(aFieldString);
+ //QString number = QString::fromUtf16(aData.Ptr(),aData.Length());
+ phoneNumber.setNumber(aData);
+ return phoneNumber;
+ }
+ else if( aDetail == QContactName::DefinitionName ) //--Contact NAME-----------------------------
+ {
+ QContactName contactName;
+ for(int i = 0 ; i < aContactDetailList.count() ; i++ ) //go through all contact details to check if there is already Contact Name to set other details
+ {
+ if(aContactDetailList.at(i).definitionName() == QContactName::DefinitionName )
+ {
+ contactName = aContactDetailList.at(i);
+ }
+ }
+ //QString name = QString::fromUtf16(aData.Ptr(),aData.Length());
+ if(aFieldString == QContactName::FieldFirstName)
+ {
+ if(contactName.firstName().isEmpty())
+ {
+ contactName.setFirstName( aData );
+ }
+ }
+ else if(aFieldString == QContactName::FieldLastName)
+ {
+ if(contactName.lastName().isEmpty())
+ {
+ contactName.setLastName( aData );
+ }
+ }
+ else if(aFieldString == QContactName::FieldMiddleName)
+ {
+ if(contactName.middleName().isEmpty())
+ {
+ contactName.setMiddleName( aData );
+ }
+ }
+ else if(aFieldString == QContactName::FieldPrefix)
+ {
+ if(contactName.prefix().isEmpty())
+ {
+ contactName.setPrefix( aData );
+ }
+ }
+ else if(aFieldString == QContactName::FieldSuffix)
+ {
+ if(contactName.suffix().isEmpty())
+ {
+ contactName.setSuffix( aData );
+ }
+ }
+ else //QContactName::FieldCustomLabel:
+ {
+ if(contactName.customLabel().isEmpty())
+ {
+ contactName.setCustomLabel( aData );
+ }
+ }
+ return contactName;
+ }
+ else if( aDetail == QContactOrganization::DefinitionName ) //--Contact Company-----------------------------
+ {
+ QContactOrganization contactCompany;
+
+ for(int i = 0 ; i < aContactDetailList.count() ; i++ ) //go through all contact details to check if there is already Contact Name to set other details
+ {
+ if(aContactDetailList.at(i).definitionName() == QContactOrganization::DefinitionName )
+ {
+ contactCompany = aContactDetailList.at(i);
+ }
+ }
+
+ //QString company = QString::fromUtf16(aData.Ptr(),aData.Length());
+ if(aFieldString == QContactOrganization::FieldName)
+ {
+ if(contactCompany.name().isEmpty())
+ {
+ contactCompany.setName( aData );
+ }
+ }
+ if(aFieldString == QContactOrganization::FieldTitle)
+ {
+ if(contactCompany.title().isEmpty())
+ {
+ contactCompany.setTitle( aData );
+ }
+ }
+ if(aFieldString == QContactOrganization::FieldDepartment)
+ {
+ QStringList depList = contactCompany.department();
+ depList.append(aData);
+ contactCompany.setDepartment(depList);
+ }
+ if(aFieldString == QContactOrganization::FieldAssistantName)
+ {
+ if(contactCompany.assistantName().isEmpty())
+ {
+ contactCompany.setAssistantName( aData );
+ }
+ }
+ return contactCompany;
+ }
+ else if( aDetail == QContactAddress::DefinitionName ) //--Contact Address-----------------------------
+ {
+ QContactAddress contactAddress;
+
+ for(int i = 0 ; i < aContactDetailList.count() ; i++ ) //go through all contact details to check if there is already Contact Name to set other details
+ {
+ if(aContactDetailList.at(i).definitionName() == QContactAddress::DefinitionName && aContactDetailList.at(i).value(QContactDetail::FieldContext) == aFieldContext )
+ {
+ contactAddress = aContactDetailList.at(i);
+ }
+ }
+ if( !aFieldContext.isEmpty() )
+ {
+ contactAddress.setContexts( aFieldContext );
+ }
+ //QString address = QString::fromUtf16(aData.Ptr(),aData.Length());
+ if(aFieldString == QContactAddress::FieldStreet )
+ {
+ if( contactAddress.street().isEmpty() )
+ {
+ contactAddress.setStreet( aData );
+ }
+ }
+ else if(aFieldString == QContactAddress::FieldLocality )
+ {
+ if( contactAddress.locality().isEmpty() )
+ {
+ contactAddress.setLocality( aData );
+ }
+ }
+ else if(aFieldString == QContactAddress::FieldRegion )
+ {
+ if( contactAddress.region().isEmpty() )
+ {
+ contactAddress.setRegion( aData );
+ }
+ }
+ else if(aFieldString == QContactAddress::FieldPostcode )
+ {
+ if( contactAddress.postcode().isEmpty() )
+ {
+ contactAddress.setPostcode( aData );
+ }
+ }
+ else if(aFieldString == QContactAddress::FieldCountry )
+ {
+ if( contactAddress.country().isEmpty() )
+ {
+ contactAddress.setCountry( aData );
+ }
+ }
+ else
+ {
+ return contactDetail;
+ }
+ return contactAddress;
+ }
+ else if( aDetail == QContactNote::DefinitionName ) //--Contact Note-----------------------------
+ {
+ QContactNote contactNote;
+ //QString note = QString::fromUtf16(aData.Ptr(),aData.Length());
+ contactNote.setNote(aData);
+ return contactNote;
+ }
+ else if( aDetail == QContactFamily::DefinitionName ) //--Contact Family-----------------------------
+ {
+ QContactFamily contactFamily;
+
+ for(int i = 0 ; i < aContactDetailList.count() ; i++ ) //go through all contact details to check if there is already Contact Name to set other details
+ {
+ if(aContactDetailList.at(i).definitionName() == QContactFamily::DefinitionName && aContactDetailList.at(i).value(QContactDetail::FieldContext) == aFieldContext )
+ {
+ contactFamily = aContactDetailList.at(i);
+ }
+ }
+
+ //QString familyData = QString::fromUtf16(aData.Ptr(),aData.Length());
+ if(aFieldString == QContactFamily::FieldSpouse )
+ {
+ if( contactFamily.spouse().isEmpty() )
+ {
+ contactFamily.setSpouse( aData );
+ }
+ }
+ if(aFieldString == QContactFamily::FieldChildren )
+ {
+ QStringList children = contactFamily.children();
+ children.append( aData );
+ contactFamily.setChildren( children );
+ }
+
+ return contactFamily;
+ }
+
+ if( aDetail == QContactAvatar::DefinitionName) //--Contact Picture-----------------------------
+ {
+ QContactAvatar contactAvatar;
+ /*TBuf<KMaxFileName> srcPath;
+ aEngine->RandomPictureFileL(srcPath);
+ TBuf<KMaxFileName> destPath(KTempPath);
+
+ if(!BaflUtils::FolderExists( fs, destPath ))
+ {
+ BaflUtils::EnsurePathExistsL( fs, destPath );
+ }
+
+ TInt err=BaflUtils::CopyFile( fs, srcPath, destPath );
+
+ TParse temp;
+ temp.Set( srcPath,NULL,NULL );
+ destPath.Append(temp.NameAndExt());
+
+ QString avatarFile = QString::fromUtf16( destPath.Ptr(),destPath.Length() );
+ */
+ QUrl imageUrl;
+ imageUrl.setUrl(aData);
+ contactAvatar.setImageUrl(imageUrl);
+
+ return contactAvatar;
+ }
+ if( aDetail == QContactAnniversary::DefinitionName) //--Anniversary------------------------------
+ {
+ QContactAnniversary contactAnniversary;
+ aData.replace(QChar('/'), QChar('-'));
+ QDate date = QDate::fromString(aData, "dd-MM-yyyy");
+ //TTime datetime = aEngine->RandomDate( CCreatorEngine::EDateFuture );
+ //date.setDate( datetime.DateTime().Year(),(int) (datetime.DateTime().Month()+1), datetime.DateTime().Day() );
+ contactAnniversary.setOriginalDate( date );
+ return contactAnniversary;
+ }
+ if( aDetail == QContactEmailAddress::DefinitionName) //--Email------------------------------------
+ {
+ QContactEmailAddress email;
+ //QString emailAddr = QString::fromUtf16(aData.Ptr(),aData.Length());
+ if( !aFieldContext.isEmpty() )
+ {
+ email.setContexts( aFieldContext );
+ }
+ email.setEmailAddress( aData );
+ return email;
+ }
+ if( aDetail == QContactUrl::DefinitionName ) //--Url-------------------------------------------
+ {
+ QContactUrl url;
+ //QString urlStr = QString::fromUtf16(aData.Ptr(),aData.Length());
+ if( !aFieldContext.isEmpty() )
+ {
+ url.setContexts( aFieldContext );
+ }
+ url.setUrl(aData);
+ return url;
+ }
+ if( aDetail == QContactBirthday::DefinitionName ) //--Birthday-----------------------------------
+ {
+ QContactBirthday birthday;
+ QDate date = QDate::fromString(aData);
+ //TTime datetime = aEngine->RandomDate( CCreatorEngine::EDatePast );
+ //date.setDate( datetime.DateTime().Year(),(int) (datetime.DateTime().Month()+1), datetime.DateTime().Day() );
+ birthday.setDate( date );
+ return birthday;
+ }
+
+ return contactDetail;
+ }
+
+void CCreatorPhonebookWrapper::AddFieldToList( QList<QContactDetail>& aDetailList, QContactDetail aDetail)
+ {
+ bool replace = false;
+ for(int i = 0 ; i< aDetailList.count() ; i++) //go through
+ {
+ if( !aDetail.isEmpty() && aDetail.definitionName() == aDetailList.at(i).definitionName()
+ && aDetail.definitionName() != QContactPhoneNumber::DefinitionName
+ && aDetail.definitionName() != QContactEmailAddress::DefinitionName
+ && aDetail.definitionName() != QContactUrl::DefinitionName )
+ {
+ QString context = aDetail.value(QContactDetail::FieldContext);
+ bool isContextEmpty = context.isEmpty();
+ if( isContextEmpty || ( aDetail.value(QContactDetail::FieldContext) == aDetailList.at(i).value(QContactDetail::FieldContext)) )
+ {
+ //replace
+ aDetailList.replace(i,aDetail);
+ replace = true;
+ }
+ }
+ }
+ if(!replace)
+ {
+ if(!aDetail.isEmpty())
+ {
+ aDetailList.append(aDetail);
+ }
+ }
+
+ }
+
+TUint32 CCreatorPhonebookWrapper::CreateContactEntryL(const TCreatorContactFields& aFields)
+ {
+ QList<QContactDetail> list = CreateContactDetailsFromParameters( aFields );
+
+ return iPhonebookAPI->saveContact( list );
+ }
+
+
+//----------------------------------------------------------------------------
+
+
+
+//----------------------------------------------------------------------------
+
+void CCreatorPhonebookWrapper::DeleteAllL()
+ {
+ iPhonebookAPI->deleteAllContacts();
+ }
+
+//----------------------------------------------------------------------------
+void CCreatorPhonebookWrapper::DeleteAllGroupsL()
+ {
+ LOGSTRING("Creator: CCreatorPhonebookWrapper::DeleteAllGroupsL");
+
+ iPhonebookAPI->deleteAllContacts( QContactType::TypeGroup );
+
+ }
+
+//----------------------------------------------------------------------------
+void CCreatorPhonebookWrapper::DeleteContactsL( RArray<TUint32>& aContactsToDelete, TUid aStoreUid )
+ {
+ QList<QContactLocalId> contacts;
+ for( TInt i = 0; i < aContactsToDelete.Count(); ++i )
+ {
+ QContact contact = iPhonebookAPI->contact( QContactLocalId( aContactsToDelete[i] ) );
+ if( (contact.type() == QContactType::TypeGroup && aStoreUid == KUidDictionaryUidContactGroups ) || (contact.type() != QContactType::TypeGroup && aStoreUid != KUidDictionaryUidContactGroups) )
+ {
+ contacts.append( QContactLocalId( aContactsToDelete[i] ) );
+ }
+ }
+ QMap<int, QContactManager::Error> errorMap;
+ iPhonebookAPI->deleteContacts( contacts );
+ }
+
+//----------------------------------------------------------------------------
+TBool CCreatorPhonebookWrapper::HasOtherThanGroupsL()
+ {
+ LOGSTRING("Creator: CCreatorPhonebookWrapper::HasOtherThanGroupsL");
+ TBool result( EFalse );
+ return result;
+ }
+
+
+TUint32 CCreatorPhonebookWrapper::CreateGroupEntryL( HBufC* aGroupName )
+ {
+ TUint32 id = 0;
+ QString groupName = QString::fromUtf16( aGroupName->Des().Ptr(), aGroupName->Length() );
+
+ id = iPhonebookAPI->createGroup( groupName );
+
+ return id;
+ }
+TInt CCreatorPhonebookWrapper::NumberOfContacts()
+ {
+ //return all stored contacts
+ return iPhonebookAPI->numberOfContacts();
+ }
+
+TInt CCreatorPhonebookWrapper::AddContactToGroup( TUint32 aGroupId, TUint32 aContact )
+ {
+ QContactLocalId group = QContactLocalId(aGroupId);
+ QContactLocalId contact = QContactLocalId(aContact);
+
+ TInt ret = iPhonebookAPI->addContactToGroup(group, contact);
+
+ return ret;
+ }
+TInt CCreatorPhonebookWrapper::AddToGroup( TUint32 aGroupId, TInt aAmount )
+ {
+ QContactLocalId group = QContactLocalId(aGroupId);
+ TInt ret = iPhonebookAPI->addToGroup( group, (int) aAmount );
+ return ret;
+ }
+
+
+//----------------------------------------------------------------------------
+
+TInt CCreatorPhonebookWrapper::CreateSubscribedContactEntryL()
+ {
+ LOGSTRING("Creator: CCreatorPhonebookWrapper::CreateSubscribedContactEntryL");
+
+ return KErrNotSupported;
+ }
+