--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/phonebookengines/VirtualPhonebook/VPbkEng/src/CVPbkContactViewDefinition.cpp Wed Sep 01 12:29:52 2010 +0100
@@ -0,0 +1,462 @@
+/*
+* Copyright (c) 2002-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: A view defintion for view creation.
+* see structure VPBK_CONTACT_VIEW in VPbkContactView.rh
+*
+*/
+
+
+#include "CVPbkContactViewDefinition.h"
+
+// Virtual Phonebook
+#include <CVPbkFieldTypeSelector.h>
+#include <MVPbkContactSelector.h>
+
+// System includes
+#include <barsread.h>
+
+
+// ---------------------------------------------------------------------------
+// CVPbkContactViewDefinition::CVPbkContactViewDefinition
+// ---------------------------------------------------------------------------
+//
+CVPbkContactViewDefinition::CVPbkContactViewDefinition()
+ : iSharing( EVPbkViewSharingUndefined )
+ {
+ }
+
+// ---------------------------------------------------------------------------
+// CVPbkContactViewDefinition::~CVPbkContactViewDefinition
+// ---------------------------------------------------------------------------
+//
+CVPbkContactViewDefinition::~CVPbkContactViewDefinition()
+ {
+ iSubViews.ResetAndDestroy();
+ delete iUri;
+ delete iName;
+ delete iFilter;
+ }
+
+// ---------------------------------------------------------------------------
+// CVPbkContactViewDefinition::NewL
+// ---------------------------------------------------------------------------
+//
+EXPORT_C CVPbkContactViewDefinition* CVPbkContactViewDefinition::NewL(
+ TResourceReader& aReader)
+ {
+ CVPbkContactViewDefinition* self = NewLC( aReader );
+ CleanupStack::Pop(self);
+ return self;
+ }
+
+// ---------------------------------------------------------------------------
+// CVPbkContactViewDefinition::NewL
+// ---------------------------------------------------------------------------
+//
+EXPORT_C CVPbkContactViewDefinition* CVPbkContactViewDefinition::NewL()
+ {
+ CVPbkContactViewDefinition* self = NewLC();
+ CleanupStack::Pop(self);
+ return self;
+ }
+
+// ---------------------------------------------------------------------------
+// CVPbkContactViewDefinition::NewL
+// ---------------------------------------------------------------------------
+//
+EXPORT_C CVPbkContactViewDefinition* CVPbkContactViewDefinition::NewL(
+ const CVPbkContactViewDefinition& aViewDef )
+ {
+ CVPbkContactViewDefinition* self = NewLC( aViewDef );
+ CleanupStack::Pop(self);
+ return self;
+ }
+
+// ---------------------------------------------------------------------------
+// CVPbkContactViewDefinition::NewLC
+// ---------------------------------------------------------------------------
+//
+EXPORT_C CVPbkContactViewDefinition* CVPbkContactViewDefinition::NewLC(
+ TResourceReader& aReader)
+ {
+ CVPbkContactViewDefinition* self = new(ELeave) CVPbkContactViewDefinition;
+ CleanupStack::PushL(self);
+ self->ConstructFromResourceL(aReader);
+ return self;
+ }
+
+// ---------------------------------------------------------------------------
+// CVPbkContactViewDefinition::NewLC
+// ---------------------------------------------------------------------------
+//
+EXPORT_C CVPbkContactViewDefinition* CVPbkContactViewDefinition::NewLC()
+ {
+ CVPbkContactViewDefinition* self = new(ELeave) CVPbkContactViewDefinition;
+ CleanupStack::PushL(self);
+ self->ConstructL();
+ return self;
+ }
+
+// ---------------------------------------------------------------------------
+// CVPbkContactViewDefinition::NewLC
+// ---------------------------------------------------------------------------
+//
+EXPORT_C CVPbkContactViewDefinition* CVPbkContactViewDefinition::NewLC(
+ const CVPbkContactViewDefinition& aViewDef )
+ {
+ CVPbkContactViewDefinition* self = new(ELeave) CVPbkContactViewDefinition;
+ CleanupStack::PushL(self);
+ self->ConstructL(aViewDef);
+ return self;
+ }
+
+// ---------------------------------------------------------------------------
+// CVPbkContactViewDefinition::ConstructL
+// ---------------------------------------------------------------------------
+//
+void CVPbkContactViewDefinition::ConstructL()
+ {
+ InitializeSharing();
+ }
+
+// ---------------------------------------------------------------------------
+// CVPbkContactViewDefinition::ConstructL
+// ---------------------------------------------------------------------------
+//
+void CVPbkContactViewDefinition::ConstructL
+ ( const CVPbkContactViewDefinition& aViewDef )
+ {
+ if (aViewDef.iUri)
+ {
+ iUri = aViewDef.iUri->AllocL();
+ }
+ if (aViewDef.iName)
+ {
+ iName = aViewDef.iName->AllocL();
+ }
+ iType = aViewDef.iType;
+ iId = aViewDef.iId;
+ iFlags = aViewDef.iFlags;
+ iSortPolicy = aViewDef.iSortPolicy;
+
+ const TInt count = aViewDef.SubViewCount();
+ for (TInt i = 0; i < count; ++i)
+ {
+ CVPbkContactViewDefinition* subView =
+ CVPbkContactViewDefinition::NewL( aViewDef.SubViewAt( i ) );
+ CleanupStack::PushL( subView );
+ iSubViews.AppendL( subView );
+ CleanupStack::Pop( subView );
+ }
+
+ if ( aViewDef.iFilter )
+ {
+ iFilter = CVPbkFieldTypeSelector::NewL
+ ( aViewDef.iFilter->FieldTypeList() );
+ // No copy constructor currently available,
+ // so lets initialize by internalizing
+ HBufC8* filterBuf = aViewDef.iFilter->ExternalizeLC();
+ iFilter->InternalizeL( *filterBuf );
+ CleanupStack::PopAndDestroy(); // filterBuf
+ }
+
+ iContactSelector = aViewDef.iContactSelector; // not owned
+
+ iSharing = aViewDef.iSharing;
+
+ InitializeSharing();
+ }
+
+// ---------------------------------------------------------------------------
+// CVPbkContactViewDefinition::ConstructFromResourceL
+// ---------------------------------------------------------------------------
+//
+void CVPbkContactViewDefinition::ConstructFromResourceL
+ ( TResourceReader& aReader )
+ {
+ TUint8 version = aReader.ReadUint8();
+
+ iId = KVPbkDefaultViewId;
+ if( version >= EVPbkContactViewV3 )
+ {
+ iId = aReader.ReadInt16();
+ }
+
+ iUri = aReader.ReadHBufC16L();
+ iName = aReader.ReadHBufC16L();
+ iType = TVPbkContactViewType(aReader.ReadUint16());
+ iFlags = aReader.ReadUint32();
+ iSortPolicy = TVPbkContactViewSortPolicy(aReader.ReadInt16());
+
+ const TInt count = aReader.ReadInt16();
+ for (TInt i = 0; i < count; ++i)
+ {
+ CVPbkContactViewDefinition* subView =
+ CVPbkContactViewDefinition::NewL( aReader );
+ CleanupStack::PushL( subView );
+ User::LeaveIfError( iSubViews.Append( subView ) );
+ CleanupStack::Pop( subView );
+ }
+
+ if ( version >= EVPbkContactViewV2 )
+ {
+ iSharing = TVPbkContactViewSharing( aReader.ReadUint16() );
+ }
+
+ InitializeSharing();
+ }
+
+// ---------------------------------------------------------------------------
+// CVPbkContactViewDefinition::SubViewCount
+// ---------------------------------------------------------------------------
+//
+EXPORT_C TInt CVPbkContactViewDefinition::SubViewCount() const
+ {
+ return iSubViews.Count();
+ }
+
+// ---------------------------------------------------------------------------
+// CVPbkContactViewDefinition::SubViewAt
+// ---------------------------------------------------------------------------
+//
+EXPORT_C const CVPbkContactViewDefinition&
+ CVPbkContactViewDefinition::SubViewAt( TInt aIndex ) const
+ {
+ return *iSubViews[aIndex];
+ }
+
+// ---------------------------------------------------------------------------
+// CVPbkContactViewDefinition::SubViewAt
+// ---------------------------------------------------------------------------
+//
+EXPORT_C CVPbkContactViewDefinition&
+ CVPbkContactViewDefinition::SubViewAt( TInt aIndex )
+ {
+ return *iSubViews[aIndex];
+ }
+
+// ---------------------------------------------------------------------------
+// CVPbkContactViewDefinition::Type
+// ---------------------------------------------------------------------------
+//
+EXPORT_C TVPbkContactViewType CVPbkContactViewDefinition::Type() const
+ {
+ return iType;
+ }
+
+// ---------------------------------------------------------------------------
+// CVPbkContactViewDefinition::Id
+// ---------------------------------------------------------------------------
+//
+EXPORT_C TInt CVPbkContactViewDefinition::Id() const
+ {
+ return iId;
+ }
+
+// ---------------------------------------------------------------------------
+// CVPbkContactViewDefinition::FlagIsOn
+// ---------------------------------------------------------------------------
+//
+EXPORT_C TBool CVPbkContactViewDefinition::FlagIsOn
+ ( TVPbkContactViewFlag aFlag ) const
+ {
+ return (iFlags & aFlag);
+ }
+
+// ---------------------------------------------------------------------------
+// CVPbkContactViewDefinition::Uri
+// ---------------------------------------------------------------------------
+//
+EXPORT_C const TDesC& CVPbkContactViewDefinition::Uri() const
+ {
+ if (iUri)
+ {
+ return *iUri;
+ }
+ return KNullDesC;
+ }
+
+// ---------------------------------------------------------------------------
+// CVPbkContactViewDefinition::SortPolicy
+// ---------------------------------------------------------------------------
+//
+EXPORT_C TVPbkContactViewSortPolicy
+ CVPbkContactViewDefinition::SortPolicy() const
+ {
+ return iSortPolicy;
+ }
+
+// ---------------------------------------------------------------------------
+// CVPbkContactViewDefinition::Name
+// ---------------------------------------------------------------------------
+//
+EXPORT_C const TDesC& CVPbkContactViewDefinition::Name() const
+ {
+ if (iName)
+ {
+ return *iName;
+ }
+ return KNullDesC;
+ }
+
+// ---------------------------------------------------------------------------
+// CVPbkContactViewDefinition::Sharing
+// ---------------------------------------------------------------------------
+//
+EXPORT_C TVPbkContactViewSharing CVPbkContactViewDefinition::Sharing() const
+ {
+ return iSharing;
+ }
+
+// ---------------------------------------------------------------------------
+// CVPbkContactViewDefinition::FieldTypeFilter
+// ---------------------------------------------------------------------------
+//
+EXPORT_C CVPbkFieldTypeSelector*
+ CVPbkContactViewDefinition::FieldTypeFilter() const
+ {
+ return iFilter;
+ }
+
+// ---------------------------------------------------------------------------
+// CVPbkContactViewDefinition::AddSubViewL
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CVPbkContactViewDefinition::AddSubViewL(
+ CVPbkContactViewDefinition* aSubView)
+ {
+ iSubViews.AppendL(aSubView);
+ }
+
+// ---------------------------------------------------------------------------
+// CVPbkContactViewDefinition::SetType
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CVPbkContactViewDefinition::SetType(TVPbkContactViewType aType)
+ {
+ iType = aType;
+ }
+
+// ---------------------------------------------------------------------------
+// CVPbkContactViewDefinition::SetId
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CVPbkContactViewDefinition::SetId(TInt aId)
+ {
+ iId = aId;
+ }
+
+// ---------------------------------------------------------------------------
+// CVPbkContactViewDefinition::SetFlag
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CVPbkContactViewDefinition::SetFlag(TVPbkContactViewFlag aFlag,
+ TBool aState)
+ {
+ if (aState)
+ {
+ iFlags |= aFlag;
+ }
+ else
+ {
+ iFlags &= ~aFlag;
+ }
+ }
+
+// ---------------------------------------------------------------------------
+// CVPbkContactViewDefinition::SetUriL
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CVPbkContactViewDefinition::SetUriL(const TDesC& aUri)
+ {
+ HBufC* uri = aUri.AllocL();
+ delete iUri;
+ iUri = uri;
+ }
+
+// ---------------------------------------------------------------------------
+// CVPbkContactViewDefinition::SetSortPolicy
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CVPbkContactViewDefinition::SetSortPolicy(
+ TVPbkContactViewSortPolicy aSortPolicy)
+ {
+ iSortPolicy = aSortPolicy;
+ }
+
+// ---------------------------------------------------------------------------
+// CVPbkContactViewDefinition::SetNameL
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CVPbkContactViewDefinition::SetNameL(const TDesC& aName)
+ {
+ HBufC* name = aName.AllocL();
+ delete iName;
+ iName = name;
+ }
+
+// ---------------------------------------------------------------------------
+// CVPbkContactViewDefinition::SetSharing
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CVPbkContactViewDefinition::SetSharing(
+ TVPbkContactViewSharing aViewSharing )
+ {
+ iSharing = aViewSharing;
+ }
+
+// ---------------------------------------------------------------------------
+// CVPbkContactViewDefinition::SetFieldTypeFilterL
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CVPbkContactViewDefinition::SetFieldTypeFilterL(
+ CVPbkFieldTypeSelector* aFilter )
+ {
+ delete iFilter;
+ iFilter = NULL;
+
+ if ( aFilter )
+ {
+ iFilter = CVPbkFieldTypeSelector::NewL( *aFilter );
+ }
+ }
+
+EXPORT_C void CVPbkContactViewDefinition::SetContactSelector( MVPbkContactSelector* aContactSelector )
+ {
+ iContactSelector = aContactSelector;
+ }
+
+EXPORT_C MVPbkContactSelector* CVPbkContactViewDefinition::ContactSelector() const
+ {
+ return iContactSelector;
+ }
+
+// ---------------------------------------------------------------------------
+// CVPbkContactViewDefinition::InitializeSharing
+// ---------------------------------------------------------------------------
+//
+void CVPbkContactViewDefinition::InitializeSharing()
+ {
+ if ( iSharing == EVPbkViewSharingUndefined )
+ {
+ iSharing = EVPbkLocalView;
+ // Default contacts or groups view is a shared view.
+ if ( iType == EVPbkContactsView ||
+ iType == EVPbkGroupsView )
+ {
+ iSharing = EVPbkSharedView;
+ }
+ }
+ }
+// End of File