--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/phonebookengines/contactsmodel/cntmatchlog/src/CntMatchLog.cpp Tue Feb 02 10:12:17 2010 +0200
@@ -0,0 +1,134 @@
+// Copyright (c) 2006-2009 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 "CntMatchLog.h"
+#include <e32def.h>
+#include <ecom/implementationproxy.h>
+
+CCntMatchLog* CCntMatchLog::NewL()
+ /** Creates a CCntMatchLog object for accessing the contacts model.
+ @capability None */
+ {
+ CCntMatchLog* self = new (ELeave) CCntMatchLog;
+ return self;
+ }
+
+void CCntMatchLog::OpenContactsL()
+ /** Opens the contacts DB and stores a pointer to the DB in iContactDb.
+ @capability ReadUserData WriteUserData*/
+ {
+ if( iContactDb)
+ {
+ return;
+ }
+
+ TRAPD(err, iContactDb = CContactDatabase::OpenL());
+ if(err == KErrNotFound)
+ {
+ iContactDb = CContactDatabase::CreateL();
+ }
+ else
+ {
+ User::LeaveIfError(err);
+ }
+ }
+
+void CCntMatchLog::CloseContacts()
+ /** Closes the contacts DB and deletes the pointer to the DB.
+ @capability None */
+ {
+ if( iContactDb)
+ {
+ delete iContactDb;
+ iContactDb = NULL;
+ }
+ }
+
+CCntMatchLog::~CCntMatchLog()
+ /** Closes the contacts DB */
+ {
+ this->CloseContacts();
+ }
+
+TLogContactItemId CCntMatchLog::MatchPhoneNumberL(const TDesC& aNumber, TInt aMatchLengthFromRight)
+ /** Attempts to find a contact item ID for the contact items which contains
+ the specified telephone number in a telephone, fax or SMS type field.
+ If more than one contact item contains the telephone number this should be
+ treated the same as no contact found.
+
+ @capability ReadUserData
+ @param aNumber Phone number string
+ @param aMatchLengthFromRight Number of digits from the right of the phone number to use
+ @return The contact Id found that contains the phone number. KLogNullContactId if none or more than one is found. */
+ {
+ CContactIdArray* array = NULL;
+ TLogContactItemId contactId=KLogNullContactId;
+
+ array = iContactDb->MatchPhoneNumberL(aNumber, aMatchLengthFromRight);
+
+ // Only set contactId if we have exactly one match
+ if (array->Count() == 1)
+ {
+ // we have only one match so set the contact id
+ contactId = static_cast<TLogContactItemId>((*array)[0]);
+ }
+ delete array;
+ return contactId;
+ }
+
+void CCntMatchLog::ReadContactNameL(TLogContactItemId aContactId, TDes &aName, TLogContactNameFormat aNameFormat)
+ /** Gets the text data for the family and given name fields of a given contact Id.
+
+ @capability ReadUserData
+ @param aContactId Contact Id to find data for
+ @param aName On return contains the family and given name in the desired format if found, a 0 length string otherwise.
+ @param aNameFormat Desired format of returned string - Chinese or Western format */
+ {
+
+ // Specify what fields to fetch and concatenate
+ CContactTextDef* textDef = CContactTextDef::NewLC();
+ _LIT(KRemotePartyNameSeparator, " ");
+
+ if(ELogChineseFormat == aNameFormat)
+ {
+ textDef->AppendL(TContactTextDefItem(KUidContactFieldFamilyName, KRemotePartyNameSeparator));
+ textDef->AppendL(TContactTextDefItem(KUidContactFieldGivenName));
+ }
+ else //ELogWesternFormat == iContactNameFormat
+ {
+ textDef->AppendL(TContactTextDefItem(KUidContactFieldGivenName, KRemotePartyNameSeparator));
+ textDef->AppendL(TContactTextDefItem(KUidContactFieldFamilyName));
+ }
+ textDef->SetExactMatchOnly(ETrue);
+ iContactDb->ReadContactTextDefL(aContactId, aName, textDef);
+ CleanupStack::PopAndDestroy(textDef);
+ }
+
+
+CCntMatchLog::CCntMatchLog()
+ {
+ }
+
+const TImplementationProxy ImplementationTable[] =
+ {
+ IMPLEMENTATION_PROXY_ENTRY(0x2000862C, CCntMatchLog::NewL)
+ };
+
+EXPORT_C const TImplementationProxy* ImplementationGroupProxy(TInt& aTableCount)
+ {
+ aTableCount = sizeof(ImplementationTable) / sizeof(TImplementationProxy);
+ return ImplementationTable;
+ }
+