--- /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 <e32base.h>
+#include <AiwCommon.h>
+#include <MVPbkFieldType.h>
+
+#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 "<street><extended><zip><city><region><country>")
+ * @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