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