--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/phonebookui/Phonebook2/Presentation/src/CPbk2StoreProperty.cpp Tue Feb 02 10:12:17 2010 +0200
@@ -0,0 +1,355 @@
+/*
+* 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 store property.
+*
+*/
+
+
+#include <CPbk2StoreProperty.h>
+
+// Phonebook 2
+#include "CPbk2LocalizedText.h"
+#include <CPbk2StoreViewDefinition.h>
+#include <CPbk2FieldPropertyArray.h>
+#include <CPbk2StorePropertyContentStoreName.h>
+
+// System includes
+#include <barsread.h>
+#include <coemain.h>
+
+
+// --------------------------------------------------------------------------
+// CPbk2StoreProperty::CPbk2StoreProperty
+// --------------------------------------------------------------------------
+//
+CPbk2StoreProperty::CPbk2StoreProperty()
+ {
+ }
+
+// --------------------------------------------------------------------------
+// CPbk2StoreProperty::~CPbk2StoreProperty
+// --------------------------------------------------------------------------
+//
+CPbk2StoreProperty::~CPbk2StoreProperty()
+ {
+ delete iStoreUri;
+ delete iStoreName;
+ iStoreViews.ResetAndDestroy();
+ iLocalizedTexts.ResetAndDestroy();
+ }
+
+// --------------------------------------------------------------------------
+// CPbk2StoreProperty::NewL
+// --------------------------------------------------------------------------
+//
+EXPORT_C CPbk2StoreProperty* CPbk2StoreProperty::NewL()
+ {
+ return new ( ELeave ) CPbk2StoreProperty;
+ }
+
+// --------------------------------------------------------------------------
+// CPbk2StoreProperty::NewLC
+// --------------------------------------------------------------------------
+//
+EXPORT_C CPbk2StoreProperty* CPbk2StoreProperty::NewLC
+ ( TResourceReader& aReader )
+ {
+ CPbk2StoreProperty* self = new ( ELeave ) CPbk2StoreProperty;
+ CleanupStack::PushL( self );
+ self->ConstructL( aReader );
+ return self;
+ }
+
+// --------------------------------------------------------------------------
+// CPbk2StoreProperty::NewLC
+// --------------------------------------------------------------------------
+//
+EXPORT_C CPbk2StoreProperty* CPbk2StoreProperty::NewLC
+ ( const CPbk2StoreProperty& aProperty )
+ {
+ CPbk2StoreProperty* self = new ( ELeave ) CPbk2StoreProperty;
+ CleanupStack::PushL( self );
+ self->ConstructL( aProperty );
+ return self;
+ }
+
+// --------------------------------------------------------------------------
+// CPbk2StoreProperty::ConstructL
+// --------------------------------------------------------------------------
+//
+void CPbk2StoreProperty::ConstructL( TResourceReader& aReader )
+ {
+ aReader.ReadInt8(); // read version number
+ iStoreUri = aReader.ReadHBufCL();
+ iStoreName = aReader.ReadHBufCL();
+ iFlags = aReader.ReadUint32();
+ TInt viewCount = aReader.ReadInt16();
+ while (viewCount-- > 0 )
+ {
+ iStoreViews.AppendL(CPbk2StoreViewDefinition::NewLC(aReader));
+ CleanupStack::Pop(); // CPbk2StoreView::NewLC(aReader)
+ }
+ iMemoryInfoTypes = aReader.ReadUint32();
+ iFieldPropertiesResId = aReader.ReadInt32();
+ TInt textCount = aReader.ReadInt16();
+ while ( textCount-- > 0 )
+ {
+ iLocalizedTexts.AppendL( CPbk2LocalizedText::NewL( aReader ) );
+ }
+ }
+
+// --------------------------------------------------------------------------
+// CPbk2StoreProperty::ConstructL
+// --------------------------------------------------------------------------
+//
+void CPbk2StoreProperty::ConstructL( const CPbk2StoreProperty& aProperty )
+ {
+ iStoreUri = aProperty.StoreUri().UriDes().AllocL();
+ iStoreName = aProperty.StoreName().AllocL();
+
+ iFlags = aProperty.Flags();
+ TArray<const CPbk2StoreViewDefinition*> views = aProperty.Views();
+ TInt viewCount = views.Count();
+ for (TInt i = 0; i < viewCount; ++i)
+ {
+ iStoreViews.AppendL(CPbk2StoreViewDefinition::NewLC(*views[i]));
+ CleanupStack::Pop(); // CPbk2StoreView::NewLC(aReader)
+ }
+ iMemoryInfoTypes = aProperty.MemoryInfoTypes();
+ iFieldPropertiesResId = aProperty.FieldPropertiesResId();
+ CreateLocalizedTextsL( aProperty );
+ }
+
+// --------------------------------------------------------------------------
+// CPbk2StoreProperty::StoreUri
+// --------------------------------------------------------------------------
+//
+EXPORT_C TVPbkContactStoreUriPtr CPbk2StoreProperty::StoreUri() const
+ {
+ return TVPbkContactStoreUriPtr(*iStoreUri);
+ }
+
+// --------------------------------------------------------------------------
+// CPbk2StoreProperty::StoreName
+// --------------------------------------------------------------------------
+//
+EXPORT_C const TDesC& CPbk2StoreProperty::StoreName() const
+ {
+ return *iStoreName;
+ }
+
+// --------------------------------------------------------------------------
+// CPbk2StoreProperty::MemoryInfoTypes
+// --------------------------------------------------------------------------
+//
+EXPORT_C TUint32 CPbk2StoreProperty::MemoryInfoTypes() const
+ {
+ return iMemoryInfoTypes;
+ }
+
+// --------------------------------------------------------------------------
+// CPbk2StoreProperty::Views
+// --------------------------------------------------------------------------
+//
+EXPORT_C TArray<const CPbk2StoreViewDefinition*>
+ CPbk2StoreProperty::Views() const
+ {
+ return iStoreViews.Array();
+ }
+
+// --------------------------------------------------------------------------
+// CPbk2StoreProperty::Flags
+// --------------------------------------------------------------------------
+//
+EXPORT_C TUint32 CPbk2StoreProperty::Flags() const
+ {
+ return iFlags;
+ }
+
+// --------------------------------------------------------------------------
+// CPbk2StoreProperty::FieldPropertiesResId
+// --------------------------------------------------------------------------
+//
+EXPORT_C TInt CPbk2StoreProperty::FieldPropertiesResId() const
+ {
+ return iFieldPropertiesResId;
+ }
+
+// --------------------------------------------------------------------------
+// CPbk2StoreProperty::SetStoreUriL
+// --------------------------------------------------------------------------
+//
+EXPORT_C void CPbk2StoreProperty::SetStoreUriL(const TDesC& aStoreUri)
+ {
+ HBufC* temp = aStoreUri.AllocL();
+ delete iStoreUri;
+ iStoreUri = temp;
+ }
+
+// --------------------------------------------------------------------------
+// CPbk2StoreProperty::SetStoreNameL
+// --------------------------------------------------------------------------
+//
+EXPORT_C void CPbk2StoreProperty::SetStoreNameL(const TDesC& aStoreName)
+ {
+ HBufC* temp = aStoreName.AllocL();
+ delete iStoreName;
+ iStoreName = temp;
+ }
+
+// --------------------------------------------------------------------------
+// CPbk2StoreProperty::AppendViewDefinitionL
+// --------------------------------------------------------------------------
+//
+EXPORT_C void CPbk2StoreProperty::AppendViewDefinitionL
+ ( CPbk2StoreViewDefinition* aViewDefinition )
+ {
+ iStoreViews.AppendL( aViewDefinition );
+ }
+
+// --------------------------------------------------------------------------
+// CPbk2StoreProperty::SetMemoryInfoTypes
+// --------------------------------------------------------------------------
+//
+EXPORT_C void CPbk2StoreProperty::SetMemoryInfoTypes(TUint32 aInfoTypes)
+ {
+ iMemoryInfoTypes = aInfoTypes;
+ }
+
+// --------------------------------------------------------------------------
+// CPbk2StoreProperty::SetFlags
+// --------------------------------------------------------------------------
+//
+EXPORT_C void CPbk2StoreProperty::SetFlags(TUint32 aFlags)
+ {
+ iFlags = aFlags;
+ }
+
+// --------------------------------------------------------------------------
+// CPbk2StoreProperty::SetFieldPropertiesResId
+// --------------------------------------------------------------------------
+//
+EXPORT_C void CPbk2StoreProperty::SetFieldPropertiesResId
+ ( TInt aFieldPropertiesResId )
+ {
+ iFieldPropertiesResId = aFieldPropertiesResId;
+ }
+
+// --------------------------------------------------------------------------
+// CPbk2StoreProperty::FindView
+// --------------------------------------------------------------------------
+//
+EXPORT_C const CPbk2StoreViewDefinition* CPbk2StoreProperty::FindView
+ ( TPbk2ContactViewType aViewType ) const
+ {
+ const CPbk2StoreViewDefinition* result = NULL;
+
+ const TInt count = iStoreViews.Count();
+ for (TInt i = 0; i < count; ++i)
+ {
+ if (iStoreViews[i]->ViewType() == aViewType)
+ {
+ result = iStoreViews[i];
+ break;
+ }
+ }
+
+ return result;
+ }
+
+// --------------------------------------------------------------------------
+// CPbk2StoreProperty::CreateStoreSpecificFieldPropertiesL
+// --------------------------------------------------------------------------
+//
+EXPORT_C MPbk2FieldPropertyArray*
+ CPbk2StoreProperty::CreateStoreSpecificFieldPropertiesL
+ ( const MVPbkFieldTypeList& aFieldTypeList ) const
+ {
+ CPbk2FieldPropertyArray* props = NULL;
+ if ( iFieldPropertiesResId )
+ {
+ TResourceReader reader;
+ CCoeEnv::Static()->CreateResourceReaderLC
+ (reader, iFieldPropertiesResId);
+ props = CPbk2FieldPropertyArray::NewL(aFieldTypeList, reader,
+ CCoeEnv::Static()->FsSession() );
+ CleanupStack::PopAndDestroy(); // reader
+ }
+ return props;
+ }
+
+// --------------------------------------------------------------------------
+// CPbk2StoreProperty::RetrieveContentLC
+// --------------------------------------------------------------------------
+//
+EXPORT_C CPbk2Content* CPbk2StoreProperty::RetrieveContentLC
+ ( TPbk2ContentId aContext ) const
+ {
+ CPbk2Content* content = NULL;
+
+ if ( aContext == EPbk2MemInfoPhone || aContext == EPbk2CopyQueryItem )
+ {
+ // Both EPbk2MemInfoPhone and EPbk2CopyQueryItem use same kind of
+ // content
+ content = new ( ELeave ) CPbk2StorePropertyContentStoreName
+ ( iLocalizedTexts.Array(), aContext );
+ CleanupStack::PushL( content );
+ }
+
+ return content;
+ }
+
+// --------------------------------------------------------------------------
+// CPbk2StoreProperty::CreateLocalizedTextsL
+// --------------------------------------------------------------------------
+//
+void CPbk2StoreProperty::CreateLocalizedTextsL(
+ const CPbk2StoreProperty& aProperty )
+ {
+ // Remember to make copies of all supported content types.
+ // Check RetrieveContentLC() to see all supported types.
+
+ // Copy EPbk2MemInfoPhone
+ CPbk2Content* content =
+ aProperty.RetrieveContentLC( EPbk2MemInfoPhone );
+ CPbk2StorePropertyContentStoreName* propContent =
+ dynamic_cast<CPbk2StorePropertyContentStoreName*>( content );
+ if ( propContent )
+ {
+ TInt uid = propContent->Uid();
+ HBufC* text = propContent->StoreName().AllocLC();
+ iLocalizedTexts.AppendL( CPbk2LocalizedText::NewL( uid, text ) );
+ CleanupStack::Pop( text );
+ // CPbk2LocalizedText::NewL has taken the ownership of text
+ }
+ CleanupStack::PopAndDestroy( content );
+
+ // Copy EPbk2CopyQueryItem
+ content =
+ aProperty.RetrieveContentLC( EPbk2CopyQueryItem );
+ propContent =
+ dynamic_cast<CPbk2StorePropertyContentStoreName*>( content );
+ if ( propContent )
+ {
+ TInt uid = propContent->Uid();
+ HBufC* text = propContent->StoreName().AllocLC();
+ iLocalizedTexts.AppendL( CPbk2LocalizedText::NewL( uid, text ) );
+ CleanupStack::Pop( text );
+ // CPbk2LocalizedText::NewL has taken the ownership of text
+ }
+ CleanupStack::PopAndDestroy( content );
+
+ }
+
+// End of File