diff -r 000000000000 -r 8466d47a6819 emailcontacts/remotecontactlookup/engine/src/pbkxrclutils.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/emailcontacts/remotecontactlookup/engine/src/pbkxrclutils.cpp Thu Dec 17 08:39:21 2009 +0200 @@ -0,0 +1,178 @@ +/* +* Copyright (c) 2007 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: Implementation of the class PbkxRclUtils. +* +*/ + + +#include "emailtrace.h" +#include +#include +#include +#include +#include + +#include "pbkxrclutils.h" +#include "pbkxrclsettings.hrh" +#include "pbkxrclengineconstants.h" + +// ======== MEMBER FUNCTIONS ======== + +// --------------------------------------------------------------------------- +// PbkxRclUtils::FieldTextL +// --------------------------------------------------------------------------- +// +HBufC* PbkxRclUtils::FieldTextL( const CPbkContactItem* aItem, TPbkFieldId aId ) + { + FUNC_LOG; + + TPbkContactItemField* field = aItem->FindField( aId ); + if ( field != NULL ) + { + return PbkxRclUtils::FieldTextL( *field ); + } + return KNullDesC().AllocL(); + } + +// --------------------------------------------------------------------------- +// PbkxRclUtils::FieldTextL +// --------------------------------------------------------------------------- +// +HBufC* PbkxRclUtils::FieldTextL( TPbkContactItemField& aField ) + { + FUNC_LOG; + if ( aField.StorageType() == KStorageTypeText ) + { + TPtrC text = aField.Text(); + HBufC* textBuffer = HBufC::NewL( text.Length() ); + textBuffer->Des() = text; + return textBuffer; + } + else if ( aField.StorageType() == KStorageTypeDateTime ) + { + HBufC* textBuffer = HBufC::NewL( 50 ); + TPtr des = textBuffer->Des(); + TTime time = aField.Time(); + time.FormatL( des, _L("%D%M%Y%/0%1%/1%2%/2%3%/3") ); + return textBuffer; + } + else + { + return KNullDesC().AllocL(); + } + } + +// --------------------------------------------------------------------------- +// PbkxRclUtils::FieldText +// --------------------------------------------------------------------------- +// +TPtrC PbkxRclUtils::FieldText( const CContactCard* aCard, TFieldType aFieldType ) + { + FUNC_LOG; + CContactItemFieldSet& fields = aCard->CardFields(); + + TInt index = fields.Find( aFieldType ); + if ( index != KErrNotFound ) + { + const CContactItemField& field = fields[index]; + if ( field.StorageType() == KStorageTypeText ) + { + return field.TextStorage()->Text(); + } + } + TPtrC empty; + return empty; + } + +// --------------------------------------------------------------------------- +// PbkxRclUtils::DefaultProtocolAccountIdL +// --------------------------------------------------------------------------- +// +TPbkxRemoteContactLookupProtocolAccountId PbkxRclUtils::DefaultProtocolAccountIdL() + { + FUNC_LOG; + CRepository *cr = CRepository::NewLC( TUid::Uid( KPbkxRclCrUid ) ); + + TInt protocolUid( 0 ); + User::LeaveIfError( cr->Get( KPbkxRclProtocolUidKey, protocolUid ) ); + + TInt accountId( 0 ); + User::LeaveIfError( cr->Get( KPbkxRclAccountUidKey, accountId ) ); + + CleanupStack::PopAndDestroy( cr ); + + TPbkxRemoteContactLookupProtocolAccountId account( + TUid::Uid( protocolUid ), + accountId ); + + return account; + } + +// --------------------------------------------------------------------------- +// PbkxRclUtils::StoreDefaultProtocolAccountIdL +// --------------------------------------------------------------------------- +// +void PbkxRclUtils::StoreDefaultProtocolAccountIdL( + TPbkxRemoteContactLookupProtocolAccountId aId ) + { + FUNC_LOG; + CRepository* cr = CRepository::NewLC( TUid::Uid( KPbkxRclCrUid ) ); + TInt uidValue = aId.iProtocolUid.iUid; + TInt accountValue = ( TInt )aId.iAccountId; + + User::LeaveIfError( cr->Set( KPbkxRclProtocolUidKey, uidValue ) ); + User::LeaveIfError( cr->Set( KPbkxRclAccountUidKey, accountValue ) ); + + CleanupStack::PopAndDestroy( cr ); + } + +// --------------------------------------------------------------------------- +// PbkxRclUtils::IsAlphaString +// --------------------------------------------------------------------------- +// +TBool PbkxRclUtils::HasAlphaCharsInString( const TDesC& aText ) + { + FUNC_LOG; + for ( TInt i = 0; i < aText.Length(); i++ ) + { + TChar c( aText[i] ); + if ( c.IsAlpha() ) + { + return ETrue; + } + } + return ETrue; + } + +// --------------------------------------------------------------------------- +// PbkxRclUtils::CreateContactItemL +// --------------------------------------------------------------------------- +// +CPbkContactItem* PbkxRclUtils::CreateContactItemL( + CContactCard* aCard, + CPbkContactEngine& aEngine ) + { + FUNC_LOG; + CContactCard* copy = CContactCard::NewLC( aCard ); + + CPbkContactItem* contactItem = CPbkContactItem::NewL( + copy, + aEngine.FieldsInfo(), + aEngine.ContactNameFormat() ); + + CleanupStack::Pop( copy ); + + return contactItem; + } +