--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/phonebookengines/VirtualPhonebook/VPbkSimStore/inc/CViewContact.h Tue Feb 02 10:12:17 2010 +0200
@@ -0,0 +1,398 @@
+/*
+* 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 virtual phonebook view contact implementation
+*
+*/
+
+
+
+#ifndef VPBKSIMSTORE_CVIEWCONTACT_H
+#define VPBKSIMSTORE_CVIEWCONTACT_H
+
+// INCLUDES
+#include <e32base.h>
+#include <MVPbkViewContact.h>
+#include <MVPbkViewContactFieldCollection.h>
+#include <MVPbkViewContactField.h>
+#include <MVPbkContactFieldTextData.h>
+#include <MVPbkContactObserver.h>
+#include <MVPbkSimContactObserver.h>
+
+// FORWARD DECLARATIONS
+class MVPbkSimContact;
+class MVPbkSimStoreOperation;
+
+namespace VPbkEngUtils {
+class CVPbkAsyncOperation;
+}
+
+namespace VPbkSimStore {
+
+// FORWARD DECLARATIONS
+class CViewContact;
+class CContactView;
+
+// CLASS DECLARATION
+
+/**
+* A simple field data class for the view contact
+*
+*/
+NONSHARABLE_CLASS( TViewContactFieldData ):
+ public MVPbkContactFieldTextData
+ {
+ public: // Constructors and destructor
+
+ /**
+ * C++ constructor
+ * @param aData the field data
+ */
+ TViewContactFieldData( const TDesC& aData );
+
+ public: // Functions from base classes
+
+ /**
+ * From MVPbkContactFieldData
+ */
+ TBool IsEmpty() const;
+
+ /**
+ * From MVPbkContactFieldData
+ */
+ void CopyL( const MVPbkContactFieldData& aFieldData );
+
+ /**
+ * From MVPbkContactFieldTextData
+ */
+ TPtrC Text() const;
+
+ /**
+ * From MVPbkContactFieldTextData
+ */
+ void SetTextL( const TDesC& aText );
+
+ /**
+ * From MVPbkContactFieldTextData
+ */
+ TInt MaxLength() const;
+
+ private: // Data
+ /// The field data
+ TPtrC iData;
+ };
+
+/**
+* A simple view contact field class for the view contact
+*
+*/
+NONSHARABLE_CLASS( TViewContactField ):
+ public MVPbkViewContactField
+ {
+ public: // Constructors and destructor
+
+ /**
+ * C++ constructor
+ * @param aParentContact the parent view contact of this field
+ * @param aFieldType the field type of this field
+ */
+ TViewContactField( CViewContact& aParentContact,
+ const MVPbkFieldType& aFieldType,
+ const TDesC& aData );
+
+ public: // New functions
+
+ /**
+ * Returns the field data
+ */
+ TViewContactFieldData& FieldData() { return iFieldData; }
+
+ public: // Functions from base classes
+
+ /**
+ * From MVPbkObjectHierarchy
+ */
+ MVPbkObjectHierarchy& ParentObject() const;
+
+ /**
+ * From MVPbkBaseContactField
+ */
+ MVPbkBaseContact& ParentContact() const;
+
+ /**
+ * From MVPbkBaseContactField
+ */
+ const MVPbkFieldType* MatchFieldType( TInt aMatchPriority ) const;
+
+ /**
+ * From MVPbkBaseContactField
+ */
+ const MVPbkFieldType* BestMatchingFieldType() const;
+
+ /**
+ * From MVPbkBaseContactField
+ */
+ const MVPbkContactFieldData& FieldData() const;
+
+ /**
+ * From MVPbkBaseContactField
+ */
+ TBool IsSame(const MVPbkBaseContactField& aOther) const;
+
+ private: // Data
+ /// The parent contact
+ CViewContact& iParentContact;
+ /// The field type of the field
+ const MVPbkFieldType& iFieldType;
+ /// The data of the field
+ TViewContactFieldData iFieldData;
+ };
+
+/**
+* A simple view contact field collection class for the view contact
+*
+*/
+NONSHARABLE_CLASS( CViewContactFieldCollection ):
+ public CBase,
+ public MVPbkViewContactFieldCollection
+ {
+ public: // Constructors and destructor
+
+ /**
+ * Destructor.
+ */
+ virtual ~CViewContactFieldCollection();
+
+ public: // New functions
+
+ /**
+ * Sets the parent contact
+ * @param aParentContact the contact that owns field collection
+ */
+ void SetParentContact( CViewContact& aParentContact );
+
+ /**
+ * Resets field collection
+ */
+ void ResetFields();
+
+ /**
+ * Appends a new field to the field collection
+ * @param aNewField the new view contact field
+ */
+ void AppendFieldL( TViewContactField& aNewField );
+
+ public: // Functions from base classes
+
+ /**
+ * From MVPbkViewContactFieldCollection
+ */
+ MVPbkBaseContact& ParentContact() const;
+
+ /**
+ * From MVPbkViewContactFieldCollection
+ */
+ TInt FieldCount() const;
+
+ /**
+ * From MVPbkViewContactFieldCollection
+ */
+ const MVPbkBaseContactField& FieldAt( TInt aIndex ) const;
+ private: // Data
+ /// Ref: the parent contact of the collection
+ CViewContact* iParentContact;
+ /// An array of fields
+ RArray<TViewContactField> iFields;
+ };
+
+/**
+* A virtual phonebook view contact implementation
+*
+*/
+NONSHARABLE_CLASS( CViewContact ):
+ public CBase,
+ public MVPbkViewContact,
+ private MVPbkSimContactObserver
+ {
+ public: // Constructors and destructor
+
+ /**
+ * Two-phased constructor.
+ * @param the parent view of the contact
+ * @param aSortOrder the sort order of the view
+ * @return a new instance of this class
+ */
+ static CViewContact* NewL( CContactView& aView,
+ const MVPbkFieldTypeList& aSortOrder );
+
+ /**
+ * Destructor.
+ */
+ virtual ~CViewContact();
+
+ public: // New functions
+
+ /**
+ * Sets the sim contact for this view contact
+ * @param aSimContact the sim contact for the view contact
+ */
+ void SetSimContactL( MVPbkSimContact& aSimContact );
+
+ /**
+ * Returns the sim index of this contact
+ * @return the sim index of this contact
+ */
+ TInt SimIndex() const;
+
+ /**
+ * Set field sort order for the view contact
+ */
+ void SetSortOrder( const MVPbkFieldTypeList& aSortOrder );
+
+ /**
+ * Returns a reference to the native contact if set by
+ * SetSimContactL. Otherwise returns NULL
+ */
+ const MVPbkSimContact* NativeContact() const;
+
+ /**
+ * Returns the view that this contact belongs.
+ */
+ CContactView& View() const;
+
+ public: // Functions from base classes
+
+ /**
+ * From MVPbkBaseContact
+ */
+ const MVPbkBaseContactFieldCollection& Fields() const;
+
+ /**
+ * From MVPbkBaseContact
+ */
+ TBool IsSame( const MVPbkStoreContact& aOtherContact ) const;
+
+ /**
+ * From MVPbkBaseContact
+ */
+ TBool IsSame( const MVPbkViewContact& aOtherContact ) const;
+
+ /**
+ * From MVPbkBaseContact
+ */
+ MVPbkContactLink* CreateLinkLC() const;
+
+ /**
+ * From MVPbkBaseContact
+ */
+ void DeleteL(MVPbkContactObserver& aObserver) const;
+
+ /**
+ * From MVPbkBaseContact
+ */
+ TBool MatchContactStore(const TDesC& aContactStoreUri) const;
+
+ /**
+ * From MVPbkBaseContact
+ */
+ TBool MatchContactStoreDomain(const TDesC& aContactStoreDomain) const;
+
+ /**
+ * From MVPbkBaseContact
+ */
+ MVPbkContactBookmark* CreateBookmarkLC() const;
+
+ /**
+ * From MVPbkViewContact
+ */
+ MVPbkContactViewBase& ParentView() const;
+
+ /**
+ * From MVPbkViewContact
+ */
+ void ReadL(MVPbkContactObserver& aObserver) const;
+
+ /**
+ * From MVPbkViewContact
+ */
+ void ReadAndLockL(MVPbkContactObserver& aObserver) const;
+
+ /**
+ * From MVPbkViewContact
+ */
+ MVPbkExpandable* Expandable() const;
+
+ /**
+ * From MVPbkViewContact
+ */
+ TBool IsSame(const MVPbkViewContact& aOtherContact,
+ const MVPbkContactStore* aContactStore) const;
+
+ /**
+ * From MVPbkViewContact
+ */
+ TBool IsSame(const MVPbkStoreContact& aOtherContact,
+ const MVPbkContactStore* aContactStore) const;
+
+ private: // Construction
+
+ /**
+ * C++ constructor.
+ */
+ CViewContact( CContactView& aView,
+ const MVPbkFieldTypeList& aSortOrder );
+
+ /**
+ * By default Symbian 2nd phase constructor is private.
+ */
+ void ConstructL();
+
+ private: // Functions from base classes
+
+ /**
+ * From MVPbkViewContact
+ */
+ void ContactEventComplete( TEvent aEvent,
+ CVPbkSimContact* aContact );
+
+ /**
+ * From MVPbkViewContact
+ */
+ void ContactEventError( TEvent aEvent,
+ CVPbkSimContact* aContact, TInt aError );
+
+ private: // New functions
+ void CreateReadCallbackL( MVPbkContactObserver& aObserver,
+ MVPbkContactObserver::TContactOpResult& aOpResult ) const;
+ private: // Data
+ /// The parent view of the contact
+ CContactView& iView;
+ /// Field collection
+ CViewContactFieldCollection iFieldCollection;
+ /// The view sort order
+ const MVPbkFieldTypeList* iSortOrder;
+ /// Not Own: the native sim contact set by SetSimContactL
+ MVPbkSimContact* iSimContact;
+ /// Own: an asynchronous call back that is needed if observer
+ /// must be notified e.g from ReadL
+ VPbkEngUtils::CVPbkAsyncOperation* iAsyncOp;
+ /// Ref: an observer of DeleteL
+ mutable MVPbkContactObserver* iObserver;
+ /// Own: an async operation handle.
+ mutable MVPbkSimStoreOperation* iStoreOperation;
+ };
+
+} // namespace VPbkSimStore
+#endif // VPBKSIMSTORE_CVIEWCONTACT_H
+
+// End of File