diff -r 000000000000 -r e686773b3f54 phonebookengines/VirtualPhonebook/VPbkSimStore/inc/CViewContact.h --- /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 +#include +#include +#include +#include +#include +#include + +// 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 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