diff -r 2b7283837edb -r 3104fc151679 uiservicetab/vimpstdetailsviewplugin/src/cvimpstfieldpropertyarray.cpp --- a/uiservicetab/vimpstdetailsviewplugin/src/cvimpstfieldpropertyarray.cpp Thu Aug 19 09:41:53 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,209 +0,0 @@ -/* -* Copyright (c) 2008 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: a single field with type - * -*/ - - -#include "cvimpstfieldpropertyarray.h" - -#include "cvimpstfieldproperty.h" -#include "vimpstdetailsview.hrh" - -// Virtual Phonebook -#include -#include -#include -#include -// System includes -#include -#include "uiservicetabtracer.h" -_LIT(KColon,":"); - -// --------------------------------------------------------------------------- -// CVIMPSTFieldPropertyArray::CVIMPSTFieldPropertyArray -// --------------------------------------------------------------------------- -// -inline CVIMPSTFieldPropertyArray::CVIMPSTFieldPropertyArray(MVPbkStoreContact& aContact ): - iContact( aContact ) - { - } - -// --------------------------------------------------------------------------- -// CVIMPSTFieldPropertyArray::ConstructL -// --------------------------------------------------------------------------- -// -inline void CVIMPSTFieldPropertyArray::ConstructL( - const MVPbkFieldTypeList& aSupportedFieldTypeList,TResourceReader& aReader, - TBool aPresenceSupported, - TDesC& aServiceName, TStoreType aStoreType) - { - ReadFieldPropertiesL( aReader, aSupportedFieldTypeList, aPresenceSupported , aServiceName, aStoreType); - } - -// --------------------------------------------------------------------------- -// CVIMPSTFieldPropertyArray::NewL -// --------------------------------------------------------------------------- -// - CVIMPSTFieldPropertyArray* CVIMPSTFieldPropertyArray::NewL - (const MVPbkFieldTypeList& aSupportedFieldTypeList, MVPbkStoreContact& aContact, - TResourceReader& aReader, - TBool aPresenceSupported, - TDesC& aServiceName, TStoreType aStoreType ) - { - CVIMPSTFieldPropertyArray* self = new(ELeave) CVIMPSTFieldPropertyArray( aContact ); - CleanupStack::PushL(self); - self->ConstructL( aSupportedFieldTypeList ,aReader, aPresenceSupported, aServiceName, aStoreType); - CleanupStack::Pop(self); - return self; - } -// --------------------------------------------------------------------------- -// CVIMPSTFieldPropertyArray::~CVIMPSTFieldPropertyArray -// --------------------------------------------------------------------------- -// -CVIMPSTFieldPropertyArray::~CVIMPSTFieldPropertyArray() - { - iFieldProperties.ResetAndDestroy(); - } - -// --------------------------------------------------------------------------- -// CVIMPSTFieldPropertyArray::Count -// --------------------------------------------------------------------------- -// -TInt CVIMPSTFieldPropertyArray::Count() const - { - return iFieldProperties.Count(); - } - -// --------------------------------------------------------------------------- -// CVIMPSTFieldPropertyArray::At -// --------------------------------------------------------------------------- -// - CVIMPSTFieldProperty& CVIMPSTFieldPropertyArray::At - (TInt aIndex) const - { - return *iFieldProperties[aIndex]; - } - -// --------------------------------------------------------------------------- -// CVIMPSTFieldPropertyArray::GetFieldById -// --------------------------------------------------------------------------- -// - CVIMPSTFieldProperty* CVIMPSTFieldPropertyArray::GetFieldById( TInt aFieldId ) - { - CVIMPSTFieldProperty* retField = NULL; - - TInt count = Count(); - - for( TInt i=0; i< count; i++ ) - { - CVIMPSTFieldProperty* field = iFieldProperties[i]; - if( field && field->FieldId() == aFieldId ) - { - retField = field; - break; - } - } - return retField; - } - - -// --------------------------------------------------------------------------- -// CVIMPSTFieldPropertyArray::ReadFieldPropertiesL -// --------------------------------------------------------------------------- -// - void CVIMPSTFieldPropertyArray::ReadFieldPropertiesL( - TResourceReader& aReader, - const MVPbkFieldTypeList& aSupportedFieldTypeList, - TBool aPresenceSupported, - TDesC& aServiceName, TStoreType aStoreType) - { - TRACER_AUTO; - // aSupportedFieldTypeList is a list of the supported field type of the used store - const TInt count = aReader.ReadInt16(); - - for (TInt i = 0; i < count; ++i) - { - // do not change the order of reading from aReader - const TInt fieldTypeResId = aReader.ReadInt32(); - TInt fieldId = aReader.ReadInt8(); - TInt maxLength = aReader.ReadInt16(); - TInt iconId = aReader.ReadInt8(); - HBufC* defaultLabel = aReader.ReadHBufCL(); - if( !defaultLabel ) - { - defaultLabel = KNullDesC().AllocL(); - } - CleanupStack::PushL(defaultLabel); - const MVPbkFieldType* fieldType = aSupportedFieldTypeList.Find( fieldTypeResId ); - - if( fieldId == EVIMPSTFieldIdStatusMsg && aPresenceSupported ) // currently not supported - { - CVIMPSTFieldProperty* property = CVIMPSTFieldProperty::NewLC( fieldId, iconId, maxLength, *defaultLabel ); - iFieldProperties.AppendL( property ); - CleanupStack::Pop(property);// property - } - else if( fieldType ) - { - MVPbkStoreContactFieldCollection& fieldCollection = iContact.Fields(); - TInt fieldCount = fieldCollection.FieldCount(); - for( TInt i=0; i< fieldCount; i++ ) - { - MVPbkStoreContactField& field = fieldCollection.FieldAt( i ); - const MVPbkFieldType* type = field.BestMatchingFieldType() ; - if( fieldType == type ) - { - if( fieldId == EVIMPSTFieldIdImpp ) - { - const MVPbkContactFieldData& fieldData = field.FieldData(); - const MVPbkContactFieldUriData& uri = MVPbkContactFieldUriData::Cast(fieldData); - TPtrC xspId = uri.Uri(); - TInt index = xspId.Find( KColon ); - if( index>0 ) - { - TPtrC servicename = xspId.Left(index); - if( servicename.Compare(aServiceName) == 0) - { - CVIMPSTFieldProperty* property = CVIMPSTFieldProperty::NewLC( fieldId, iconId, maxLength, *defaultLabel ); - property->SetStoredFieldL( field ); - iFieldProperties.AppendL( property ); - CleanupStack::Pop(property); //property - } - } - } - else if( fieldId == EVIMPSTFieldIdDisplayName || - fieldId == EVIMPSTFieldIdFirstName || - fieldId == EVIMPSTFieldIdLastName ) - { - CVIMPSTFieldProperty* property = CVIMPSTFieldProperty::NewLC( fieldId, iconId, maxLength, *defaultLabel ); - property->SetStoredFieldL( field ); - iFieldProperties.AppendL( property ); - CleanupStack::Pop(property); //property - } - else if( aStoreType == EStoreServer ) //append all fields to details view if it is server store - { - CVIMPSTFieldProperty* property = CVIMPSTFieldProperty::NewLC( fieldId, iconId, maxLength, *defaultLabel ); - property->SetStoredFieldL( field ); - iFieldProperties.AppendL( property ); - CleanupStack::Pop(property); //property - } - } - } - } - CleanupStack::PopAndDestroy(defaultLabel); - } - - } - -// End of File