diff -r 000000000000 -r 72b543305e3a mobilemessaging/postcard/postcardinc/PostcardContact.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mobilemessaging/postcard/postcardinc/PostcardContact.h Thu Dec 17 08:44:11 2009 +0200 @@ -0,0 +1,231 @@ +/* +* Copyright (c) 2006 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: +* Postcard application's interface to contacts (Phonebook2 and +* virtual phonebook) +* +*/ + + + +#ifndef __POSTCARDCONTACT_H__ +#define __POSTCARDCONTACT_H__ + +#include +#include +#include + +#include "Postcard.hrh" +#include "PostcardPanic.h" + +class CAiwServiceHandler; +class CAiwGenericParamList; +class CVPbkContactStoreUriArray; +class CContactMatcher; +class MVPbkStoreContact; + +/** + * Postcard contact + */ +class CPostcardContact : public CBase, + public MAiwNotifyCallback, + public MAknInputBlockCancelHandler + { + public: // constants + + enum TLocation // address location + { + ELocationPreferred, + ELocationHome, + ELocationWork + }; + static const TInt KNumLocations = ELocationWork + 1; + + enum TAddressField // address field + { + EAddressFieldStreet, + EAddressFieldExtendedAddress, + EAddressFieldPostalCode, + EAddressFieldLocality, + EAddressFieldRegion, + EAddressFieldCountry + }; + static const TInt KNumAddressFields = EAddressFieldCountry + 1; + + public: // Constructors and destructor + + /** + * Two-phased constructor. + * @return pointer to created CPostcardContact + */ + static CPostcardContact* NewL( RFs& aFs ); + + /** + * Destructor. + */ + ~CPostcardContact(); + + public: + + /** + * Checks if the contact refers to a valid contact (contact was found) + */ + inline TBool IsValid() const; + + /** + * Checks if the contact includes any of Extended Info, Street, City, + * Zip, Region or Country fields with location aLocation. + * @param aLocation Location Preferred/Home/Work to check + * @return ETrue if the contact has address information for the location + */ + TBool HasLocationL(TLocation aLocation) const; + + /** + * Creates a contact string of aContactItem's address field with + * location aAddressLocation + * (in practise "") + * @param aBuffer Contains the contact string on return + * @param aAddressLocation Location Preferred/Home/Work to get + */ + void GetContactStringL(TDes& aBuffer, TLocation aAddressLocation) const; + + /** + * Get address field from a contact + * @param aLocation Location Preferred/Home/Work to get + * @param aAddressField Address field to get + * @return Address field text or "empty" descriptor + */ + HBufC* GetAddressFieldLC(TLocation aLocation, + TAddressField aAddressField) const; + + /** + * Get name from a contact. Uses Phonebook2 name formatter. + * @return Contact name text or "empty" descriptor + */ + HBufC* GetNameLC() const; + + /** + * Fetch contact from using Phonebook2 UI services + */ + void FetchContactL(); + + /** + * Fetch contact from a contact link in a file + * @param aFile File containing a contact link packed into a descriptor + */ + void FetchContactL(RFile& aFile); + + /** + * Convert from TPostcardControls to TAddressField + * @param aControlId Control ID to convert + * @return Address field + */ + static inline TAddressField ControlIdToAddrField(TInt aControlId); + + public: // Functions from base classes + + /** + * from MAiwNotifyCallback + * Handles notifications caused by an asynchronous AIW commands + */ + TInt HandleNotifyL(TInt aCmdId, TInt aEventId, + CAiwGenericParamList& aEventParamList, + const CAiwGenericParamList& aInParamList); + + /** + * from MAknInputBlockCancelHandler + * Handles cancellation of AIW call to phonebook. + */ + void AknInputBlockCancel(); + + private: // new functions + + /** + * Handles asynchronous AIW command completed event notification + * @param aEventParamList Event parameters + */ + void HandleAiwEventCompletedL(CAiwGenericParamList& aEventParamList); + + /** + * Convert location to Virtual Phonebook field type parameter + * @param aLocation Location to convert + * @return Field type parameter + */ + static inline TVPbkFieldTypeParameter LocToFieldTypeParam( + TLocation aLocation); + + /** + * Convert address field to Virtual Phonebook subfield type + * @param aAddressField Address field to convert + * @return Subfield type + */ + static inline TVPbkSubFieldType AddrFieldToSubFieldType( + TAddressField aAddressField); + + /** + * Initializes AIW single item contact fetch parameter list + * @param aParamList Parameter list to initialize with parameters + */ + void InitAiwContactFetchParamL( + CAiwGenericParamList& aParamList) const; + + /** + * Read a field from a contact + * @param aFieldType Virtual Phonebook field type + * @param aSubFieldType Virtual Phonebook subfield type + * @param aFieldTypeParameter Virtual Phonebook field type parameter + * @return Contact field text or "empty" descriptor + */ + HBufC* GetContactFieldLC( TVPbkFieldTypeName aFieldType, + TVPbkSubFieldType aSubFieldType, + TVPbkFieldTypeParameter aFieldTypeParameter) const; + + private: // constructors + CPostcardContact( RFs& aFs ); + + /** + * EPOC constructor + */ + void ConstructL(); + + private: // data + // Table to convert from TLocation to virtual phonebook field + // type parameter + static const TVPbkFieldTypeParameter + iLocToFieldTypeParam[KNumLocations]; + + // Table to convert from TAddressField to virtual phonebook subfield + // type + static const TVPbkSubFieldType + iAddrFieldToSubFieldType[KNumAddressFields]; + + // Table to convert from TPostcardControls to TAddressField + static const TAddressField + iControlIdToAddrField[KNumAddressFields]; + + CAiwServiceHandler* iAiwServiceHandler; // for contact fetch + CVPbkContactStoreUriArray* iUriArray; // opened contact stores + CContactMatcher* iContactMatcher; // contact matcher + MVPbkStoreContact* iStoreContact; // contact selected by user + CActiveSchedulerWait iActSchedWait; // to hide the asynchronity + TBool iShutdown; + + RFs& iFs; + }; + +#include "PostcardContact.inl" + +#endif // __POSTCARDCONTACT_H__ + +// End of File