diff -r 666f914201fb -r 2fe1408b6811 epoc32/include/app/cpbkaddressselect.h --- a/epoc32/include/app/cpbkaddressselect.h Tue Nov 24 13:55:44 2009 +0000 +++ b/epoc32/include/app/cpbkaddressselect.h Tue Mar 16 16:12:26 2010 +0000 @@ -1,1 +1,217 @@ -cpbkaddressselect.h +/* +* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members +* which accompanies this distribution, and is available +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* Generic Phonebook address selection dialog. Used for selecting recipient +* address from a contact for Call, Send SMS, email and MMS. +* +*/ + + +#ifndef __CPbkAddressSelect_H__ +#define __CPbkAddressSelect_H__ + +// INCLUDES +#include +#include // TKeyResponse +#include // TKeyEvent, TEventCode + + +// FORWARD DECLARATIONS +class CPbkContactItem; +class TPbkContactItemField; +class CPbkSelectFieldDlg; +class CPbkFieldArray; + + +// CLASS DECLARATION + +/** + * This class is the abstrack base class for Phonebook address selection + * dialogs. Address selection dialogs are used for selecting recipient + * address from a contact for Call, Send SMS, email and MMS. Select one + * of the derived classes for a particular concrete dialog implementation. + */ +class CPbkAddressSelect : public CBase + { + public: // Interface + /** + * Parameters for ExecuteLD(TBaseParams&). + * @see ExecuteLD(TBaseParams&) + */ + class TBaseParams + { + public: // Interface + /** + * Returns the contact supplied to constructor. + * @return Contact item. + */ + IMPORT_C const CPbkContactItem& ContactItem(); + + /** + * Sets the focused field of the contact item. If focused field + * is a non-empty address field it is returned directly by + * ExecuteLD. The default value is NULL. + * @param aFocusedField The focused field to set + */ + IMPORT_C void SetFocusedField(const TPbkContactItemField* aFocusedField); + + /** + * Set to ETrue to use default address of the contact directly. + * Focused field overrides default address if both are + * available. The default value is EFalse. + * @param aUseDefaultDirectly Defines whether the default address + * should be used directly + */ + IMPORT_C void SetUseDefaultDirectly(TBool aUseDefaultDirectly); + + /** + * Returns the selected field or NULL if no selection was made. + * @return Selected contact item field. + */ + IMPORT_C const TPbkContactItemField* SelectedField() const; + + /** + * Returns the focused field or NULL if there was no field + * level focus. + * @return Focused contact item field. + */ + IMPORT_C const TPbkContactItemField* FocusedField() const; + + protected: // Derived class interface + /** + * Constructor. + * + * @param aContact Contact from which to select an address. + * @param aDefaultField The field to use as the default. NULL if + * no default is set for aContact. + */ + IMPORT_C TBaseParams + (const CPbkContactItem& aContact, + const TPbkContactItemField* aDefaultField); + + private: // Data + /// Ref: the contact where to select an address + const CPbkContactItem& iContact; + /// Ref: the default field of the contact + const TPbkContactItemField* iDefaultField; + /// Ref: the focused field of the contact + const TPbkContactItemField* iFocusedField; + /// Own: is the default address to be used directly + TBool iUseDefaultDirectly; + /// Own: the selected field of the contact + const TPbkContactItemField* iSelectedField; + /// Spare data + TInt32 iSpare1; + /// Spare data + TInt32 iSpare2; + + private: // friends + friend class CPbkAddressSelect; + }; + + /** + * Destructor. Cancels address selection query if active. + */ + IMPORT_C ~CPbkAddressSelect(); + + protected: // Base class interface + /** + * Constructor. + */ + IMPORT_C CPbkAddressSelect(); + + /** + * Runs an address selection query (if necessary). + * + * @param aParams see TBaseParams. + * @return ETrue if query was accepted, EFalse if canceled. + */ + IMPORT_C TBool ExecuteLD(TBaseParams& aParams); + + /** + * Returns aItem passed to ExecuteLD. + * @return Contact item. + */ + IMPORT_C const CPbkContactItem& ContactItem() const; + + /** + * Exit any address selection query. Makes ExecuteLD return which means + * this object is destroyed after this function returns! + * @param aAccept ETrue means the query selection is accepted and + * EFalse that query is canceled. + */ + IMPORT_C void AttemptExitL(TBool aAccept); + + private: // Base class interface. Private because these functions are + // only to be called from this classes implementation. + /** + * Returns ETrue if aField is an applicable address field. + * @param aField Contact item field. + * @return ETrue if the contact item field is an applicable address field. + */ + virtual TBool AddressField(const TPbkContactItemField& aField) const = 0; + + /** + * Called if there are no applicable address fields in aItem passed + * to ExecuteLD. + */ + virtual void NoAddressesL() = 0; + + /** + * Returns title to use for the address selection list query. + * @return Title used for the address selection list query. + */ + virtual const TDesC& QueryTitleL() = 0; + + /** + * Returns a softkey resource id to use for the address + * selection list query. + * @return Softkey resource if that is used for the address + * selection list query. + */ + virtual TInt QuerySoftkeysResource() const = 0; + + /** + * Override to handle key events in the list query. + * The default implementation is empty. + * @param aKeyEvent The key event. + * @param aType The key event type. + */ + IMPORT_C virtual TKeyResponse PbkControlKeyEventL + (const TKeyEvent& aKeyEvent,TEventCode aType); + + // Spare virtual functions + IMPORT_C virtual void Reserved_1(); + IMPORT_C virtual void Reserved_2(); + + private: // data members + /// Ref: aItem passed to ExecuteLD + const CPbkContactItem* iContactItem; + /// Field selection dialog for this class + class CSelectFieldDlg; + friend class CSelectFieldDlg; + /// Own: field selection dialog + CPbkSelectFieldDlg* iFieldDlg; + /// Own: field array for iFieldDlg + CPbkFieldArray* iFields; + /// Ref: set to ETrue when exeuction enters destructor + TBool* iDestroyedPtr; + // Spare data + TInt32 iSpare1; + }; + + +#endif // __CPbkAddressSelect_H__ + +// End of File