phonebookui/Phonebook2/Presentation/src/CPbk2FieldProperty.cpp
changeset 0 e686773b3f54
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phonebookui/Phonebook2/Presentation/src/CPbk2FieldProperty.cpp	Tue Feb 02 10:12:17 2010 +0200
@@ -0,0 +1,300 @@
+/*
+* Copyright (c) 2005-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:  Phonebook 2 field property.
+*
+*/
+
+
+#include "CPbk2FieldProperty.h"
+
+// From Phonebook 2
+#include "CPbk2FieldOrderingManager.h"
+
+// From Virtual Phonebook
+#include <MVPbkFieldType.h>
+
+// System includes
+#include <barsread.h>
+#include <coemain.h>
+
+
+// --------------------------------------------------------------------------
+// CPbk2FieldProperty::CPbk2FieldProperty
+// --------------------------------------------------------------------------
+//    
+CPbk2FieldProperty::CPbk2FieldProperty()
+    {
+    }
+
+// --------------------------------------------------------------------------
+// CPbk2FieldProperty::~CPbk2FieldProperty
+// --------------------------------------------------------------------------
+//    
+CPbk2FieldProperty::~CPbk2FieldProperty()
+    {
+    delete iAddItemText;
+    delete iDefaultLabel;
+    delete iXSpName;
+    }
+
+// --------------------------------------------------------------------------
+// CPbk2FieldProperty::ConstructL
+// --------------------------------------------------------------------------
+//    
+inline void CPbk2FieldProperty::ConstructL
+        ( TResourceReader& aReader,
+          const MVPbkFieldTypeList& aSupportedFieldTypeList,
+          CPbk2FieldOrderingManager& aFieldOrderingManager )
+    {
+    aReader.ReadInt8(); // read version number
+    const TInt fieldTypeResId = aReader.ReadInt32();
+
+    iFieldType = aSupportedFieldTypeList.Find( fieldTypeResId );
+    iMultiplicity = aReader.ReadInt8();
+    iMaxLength = aReader.ReadInt16();
+    iEditMode = aReader.ReadInt8();
+    iDefaultCase = aReader.ReadInt8();
+    iIconId = TPbk2IconId( aReader );
+    iCtrlType = aReader.ReadInt8();
+    iFlags = aReader.ReadUint32();    
+    iAddItemText = aReader.ReadHBufCL();    
+    iLocation = aReader.ReadInt8();
+    iGroupId =  aReader.ReadInt8();
+    iDefaultLabel = aReader.ReadHBufCL();
+    iXSpName = NULL;
+
+    if ( iFieldType )
+        {
+        // If field type is supported get ordering items
+        iOrderingItem =
+            aFieldOrderingManager.OrderingItem( *iFieldType );
+        iAddItemOrdering =
+            aFieldOrderingManager.AddItemOrdering( *iFieldType );
+        }
+    }
+
+// --------------------------------------------------------------------------
+// CPbk2FieldProperty::NewLC
+// --------------------------------------------------------------------------
+//    
+CPbk2FieldProperty* CPbk2FieldProperty::NewLC
+        ( TResourceReader& aReader,
+          const MVPbkFieldTypeList& aSupportedFieldTypeList,
+          CPbk2FieldOrderingManager& aFieldOrderingManager )
+    {
+    CPbk2FieldProperty* self = new( ELeave ) CPbk2FieldProperty;
+    CleanupStack::PushL( self );
+    self->ConstructL( aReader, aSupportedFieldTypeList, 
+        aFieldOrderingManager );
+    return self;
+    }
+
+// --------------------------------------------------------------------------
+// CPbk2FieldProperty::IsSupported
+// --------------------------------------------------------------------------
+//    
+TBool CPbk2FieldProperty::IsSupported() const
+    {
+    TBool ret = EFalse;
+
+    if ( iFieldType )
+        {
+        ret = ETrue;
+        }
+
+    return ret;
+    }
+
+// --------------------------------------------------------------------------
+// CPbk2FieldProperty::IsSame
+// --------------------------------------------------------------------------
+//
+TBool CPbk2FieldProperty::IsSame( const MPbk2FieldProperty& aOther) const
+    {
+    MPbk2FieldProperty2* fieldPropertyExtension =
+        reinterpret_cast<MPbk2FieldProperty2*>( const_cast<MPbk2FieldProperty&>
+            ( aOther ).FieldPropertyExtension(
+                KMPbk2FieldPropertyExtension2Uid ) );
+    TBool xSpNameIsSame = ETrue;
+    if ( fieldPropertyExtension != NULL )
+        {
+        if ( fieldPropertyExtension->XSpName().CompareF( XSpName() ) != 0 )
+            {
+            xSpNameIsSame = EFalse;
+            }
+        }
+    
+    return ( aOther.FieldType().IsSame( *iFieldType ) && xSpNameIsSame );
+    }
+
+// --------------------------------------------------------------------------
+// CPbk2FieldProperty::FieldType
+// --------------------------------------------------------------------------
+//
+const MVPbkFieldType& CPbk2FieldProperty::FieldType() const
+    {
+    return *iFieldType;
+    }
+
+// --------------------------------------------------------------------------
+// CPbk2FieldProperty::Multiplicity
+// --------------------------------------------------------------------------
+//    
+TPbk2FieldMultiplicity CPbk2FieldProperty::Multiplicity() const
+    {
+    return static_cast<TPbk2FieldMultiplicity>(iMultiplicity);
+    }
+
+// --------------------------------------------------------------------------
+// CPbk2FieldProperty::MaxLength
+// --------------------------------------------------------------------------
+//
+TInt CPbk2FieldProperty::MaxLength() const
+    {
+    return iMaxLength;
+    }
+
+// --------------------------------------------------------------------------
+// CPbk2FieldProperty::EditMode
+// --------------------------------------------------------------------------
+//
+TPbk2FieldEditMode CPbk2FieldProperty::EditMode() const
+    {
+    return static_cast<TPbk2FieldEditMode>(iEditMode);
+    }
+
+// --------------------------------------------------------------------------
+// CPbk2FieldProperty::DefaultCase
+// --------------------------------------------------------------------------
+//
+TPbk2FieldDefaultCase CPbk2FieldProperty::DefaultCase() const
+    {
+    return static_cast<TPbk2FieldDefaultCase>(iDefaultCase);
+    }
+
+// --------------------------------------------------------------------------
+// CPbk2FieldProperty::IconId
+// --------------------------------------------------------------------------
+//
+const TPbk2IconId& CPbk2FieldProperty::IconId() const
+    {
+    return iIconId;
+    }
+
+// --------------------------------------------------------------------------
+// CPbk2FieldProperty::CtrlType
+// --------------------------------------------------------------------------
+//
+TPbk2FieldCtrlType CPbk2FieldProperty::CtrlType() const
+    {
+    return static_cast<TPbk2FieldCtrlType>(iCtrlType);
+    }
+
+// --------------------------------------------------------------------------
+// CPbk2FieldProperty::Flags
+// --------------------------------------------------------------------------
+//
+TUint CPbk2FieldProperty::Flags() const
+    {
+    return iFlags;
+    }
+
+// --------------------------------------------------------------------------
+// CPbk2FieldProperty::OrderingItem
+// --------------------------------------------------------------------------
+//
+TInt CPbk2FieldProperty::OrderingItem() const
+    {
+    return iOrderingItem;
+    }
+
+// --------------------------------------------------------------------------
+// CPbk2FieldProperty::AddItemOrdering
+// --------------------------------------------------------------------------
+//
+TInt CPbk2FieldProperty::AddItemOrdering() const
+    {
+    return iAddItemOrdering;
+    }
+
+// --------------------------------------------------------------------------
+// CPbk2FieldProperty::AddItemText
+// --------------------------------------------------------------------------
+//
+const TDesC& CPbk2FieldProperty::AddItemText() const
+    {
+    if (iAddItemText)
+        {
+        return *iAddItemText;
+        }
+   else if (iDefaultLabel)
+        {
+        return *iDefaultLabel;
+        }
+   else
+        {
+        return KNullDesC;
+        }
+    }
+
+// --------------------------------------------------------------------------
+// CPbk2FieldProperty::Location
+// --------------------------------------------------------------------------
+//
+TPbk2FieldLocation CPbk2FieldProperty::Location() const
+    {
+    return static_cast<TPbk2FieldLocation>(iLocation);
+    }
+
+// --------------------------------------------------------------------------
+// CPbk2FieldProperty::GroupId
+// --------------------------------------------------------------------------
+//
+TPbk2FieldGroupId CPbk2FieldProperty::GroupId() const
+    {
+    return static_cast<TPbk2FieldGroupId>(iGroupId);
+    }
+
+// --------------------------------------------------------------------------
+// CPbk2FieldProperty::DefaultLabel
+// --------------------------------------------------------------------------
+//
+const TDesC& CPbk2FieldProperty::DefaultLabel() const
+    {
+    return iDefaultLabel ? *iDefaultLabel : KNullDesC();
+    }
+
+// --------------------------------------------------------------------------
+// CPbk2FieldProperty::FieldPropertyExtension
+// --------------------------------------------------------------------------
+//
+TAny* CPbk2FieldProperty::FieldPropertyExtension( TUid aExtensionUid )
+    {
+    if ( aExtensionUid == KMPbk2FieldPropertyExtension2Uid )
+        {
+        return static_cast<MPbk2FieldProperty2*>( this );
+        }
+    return NULL;
+    }
+
+// --------------------------------------------------------------------------
+// CPbk2FieldProperty::XSpName
+// --------------------------------------------------------------------------
+//
+const TDesC& CPbk2FieldProperty::XSpName() const
+    {
+    return iXSpName ? *iXSpName : KNullDesC();
+    }
+
+// End of file