williamr@4: /* williamr@4: * Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies). williamr@4: * All rights reserved. williamr@4: * This component and the accompanying materials are made available williamr@4: * under the terms of "Eclipse Public License v1.0" williamr@4: * which accompanies this distribution, and is available williamr@4: * at the URL "http://www.eclipse.org/legal/epl-v10.html". williamr@4: * williamr@4: * Initial Contributors: williamr@4: * Nokia Corporation - initial contribution. williamr@4: * williamr@4: * Contributors: williamr@4: * williamr@4: * Description: williamr@4: * Field type selection dialog for Phonebook's Create New / Edit Memory entry williamr@4: * functions. williamr@4: * williamr@4: */ williamr@4: williamr@4: williamr@4: #ifndef __CPbkMemoryEntryAddItemDlg_H__ williamr@4: #define __CPbkMemoryEntryAddItemDlg_H__ williamr@4: williamr@4: // INCLUDES williamr@4: #include williamr@4: williamr@4: // FORWARD DECLARATIONS williamr@4: class CPbkFieldInfo; williamr@4: class CEikFormattedCellListBox; williamr@4: class CAknPopupList; williamr@4: williamr@4: // CLASS DECLARATION williamr@4: williamr@4: /** williamr@4: * Field type selection dialog for Phonebook's Create New- and Edit Memory williamr@4: * entry-functions. williamr@4: * Also used externally for Create New Entry- and Add to Existing williamr@4: * Entry-services. williamr@4: */ williamr@4: class CPbkMemoryEntryAddItemDlg : public CBase williamr@4: { williamr@4: public: // Interface williamr@4: /** williamr@4: * Constructor. williamr@4: */ williamr@4: IMPORT_C CPbkMemoryEntryAddItemDlg(); williamr@4: williamr@4: /** williamr@4: * Sets *aSelfPtr to NULL when this dialog is destroyed. williamr@4: * @precond !aSelfPtr || *aSelfPtr==this williamr@4: */ williamr@4: IMPORT_C void ResetWhenDestroyed(CPbkMemoryEntryAddItemDlg** aSelfPtr); williamr@4: williamr@4: /** williamr@4: * Run the dialog and return selected field info. williamr@4: * williamr@4: * @param aFieldInfos An array of field info objects to select from. williamr@4: * @param aCbaResource Cba buttons to use with the dialog. williamr@4: * @return Pointer to a field info in aFieldInfos or NULL if canceled. williamr@4: */ williamr@4: IMPORT_C CPbkFieldInfo* ExecuteLD williamr@4: (CArrayPtrFlat& aFieldInfos, TInt aCbaResource); williamr@4: williamr@4: /** williamr@4: * Run the dialog and return selected field info. williamr@4: * williamr@4: * @param aFieldInfos An array of field info objects to select from. williamr@4: * @param aCbaResource Cba buttons to use with the dialog. williamr@4: * @param aTitleText Text to put into popup list's title. No title williamr@4: * pane if aTitleText is empty. williamr@4: * @return Pointer to a field info in aFieldInfos or NULL if canceled. williamr@4: */ williamr@4: IMPORT_C CPbkFieldInfo* ExecuteLD williamr@4: (CArrayPtr& aFieldInfos, williamr@4: TInt aCbaResource, williamr@4: const TDesC& aTitleText); williamr@4: williamr@4: /** williamr@4: * Basic ExecuteLD for derived classes to override. williamr@4: * @param aFieldInfos An array of field info objects to select from. williamr@4: */ williamr@4: IMPORT_C virtual CPbkFieldInfo* ExecuteLD williamr@4: (CArrayPtr& aFieldInfos); williamr@4: williamr@4: /** williamr@4: * Destructor. williamr@4: * Also cancels and dismisses this popup list, in other words makes williamr@4: * ExecuteLD return just like cancel was pressed. williamr@4: */ williamr@4: IMPORT_C ~CPbkMemoryEntryAddItemDlg(); williamr@4: williamr@4: public: // internal implementation williamr@4: /** williamr@4: * @internal williamr@4: * Sorts the field info objects according to Phonebook specific rules. williamr@4: */ williamr@4: void SortFieldInfoArray(); williamr@4: williamr@4: protected: // Interface for derived classes williamr@4: /** williamr@4: * Creates list items, sets Cba and title. williamr@4: * Executed before RunLD. williamr@4: * First part of ExecuteLD. williamr@4: * @param aFieldInfos An array of field info objects to select from. williamr@4: * @param aCbaResource Cba buttons to use with the dialog williamr@4: * @param aTitle Text to put into popup list's title williamr@4: */ williamr@4: void PrepareLC(CArrayPtr& aFieldInfos, williamr@4: TInt aCbaResource, const TDesC& aTitle); williamr@4: williamr@4: /** williamr@4: * Execute the initialized dialog. williamr@4: * Second part of ExecuteLD. williamr@4: * @return Pointer to a field info williamr@4: */ williamr@4: CPbkFieldInfo* RunLD(); williamr@4: williamr@4: private: // Spare virtual functions williamr@4: IMPORT_C virtual void Reserved_1(); williamr@4: IMPORT_C virtual void Reserved_2(); williamr@4: williamr@4: private: // Data types williamr@4: class CListBoxModel; williamr@4: williamr@4: private: // Data members williamr@4: /// Own: list box. williamr@4: CEikFormattedCellListBox* iListBox; williamr@4: /// Own: popup listbox. williamr@4: CAknPopupList* iPopupList; williamr@4: /// Ref: Referred boolean is set to ETrue when this object is destroyed. williamr@4: TBool* iDestroyedPtr; williamr@4: /// Ref: set to NULL from destructor williamr@4: CPbkMemoryEntryAddItemDlg** iSelfPtr; williamr@4: // Own: Sort Field Infos williamr@4: TBool iSortFieldInfos; williamr@4: }; williamr@4: williamr@4: williamr@4: /** williamr@4: * Field type selection dialog for Phonebook's Create New service. williamr@4: * This service can be used to show a popup dialog of Phonebook field williamr@4: * types and then let the user select a particular field type from it. williamr@4: */ williamr@4: class CPbkItemTypeSelectCreateNew : public CPbkMemoryEntryAddItemDlg williamr@4: { williamr@4: public: // Interface williamr@4: /** williamr@4: * Constructor. williamr@4: */ williamr@4: IMPORT_C CPbkItemTypeSelectCreateNew(); williamr@4: williamr@4: /** williamr@4: * Destructor. williamr@4: * Also cancels and dismisses this popup list, in other words makes williamr@4: * ExecuteLD return just like cancel was pressed. williamr@4: */ williamr@4: IMPORT_C ~CPbkItemTypeSelectCreateNew(); williamr@4: williamr@4: public: // from CPbkMemoryEntryAddItemDlg williamr@4: /** williamr@4: * Runs this dialog and returns the selected field info. williamr@4: * williamr@4: * @param aFieldInfos An array of field info objects to select from. williamr@4: * @return Pointer to a field info in aFieldInfos or NULL if canceled. williamr@4: */ williamr@4: IMPORT_C CPbkFieldInfo* ExecuteLD(CArrayPtr& aFieldInfos); williamr@4: williamr@4: private: // Data williamr@4: /// Own: popup list title text williamr@4: HBufC* iTitleBuf; williamr@4: // Spare data williamr@4: TInt32 iSpare1; williamr@4: }; williamr@4: williamr@4: williamr@4: /** williamr@4: * Field type selection dialog for Phonebook's Add to Existing-service. williamr@4: * This service can be used to show a popup dialog of Phonebook field williamr@4: * types and then let the user select a particular field type from it. williamr@4: */ williamr@4: class CPbkItemTypeSelectAddToExisting : public CPbkMemoryEntryAddItemDlg williamr@4: { williamr@4: public: // Interface williamr@4: /** williamr@4: * Constructor. williamr@4: */ williamr@4: IMPORT_C CPbkItemTypeSelectAddToExisting(); williamr@4: williamr@4: /** williamr@4: * Destructor. williamr@4: * Also cancels and dismisses this popup list, in other words makes williamr@4: * ExecuteLD return just like cancel was pressed. williamr@4: */ williamr@4: IMPORT_C ~CPbkItemTypeSelectAddToExisting(); williamr@4: williamr@4: public: // from CPbkMemoryEntryAddItemDlg williamr@4: /** williamr@4: * Run this dialog and return selected field info. williamr@4: * williamr@4: * @param aFieldInfos An array of field info objects to select from. williamr@4: * @return Pointer to a field info in aFieldInfos or NULL if canceled. williamr@4: */ williamr@4: IMPORT_C CPbkFieldInfo* ExecuteLD(CArrayPtr& aFieldInfos); williamr@4: williamr@4: private: // Data williamr@4: /// Own: popup list title text williamr@4: HBufC* iTitleBuf; williamr@4: // Spare data williamr@4: TInt32 iSpare1; williamr@4: }; williamr@4: williamr@4: #endif // __CPbkMemoryEntryAddItemDlg_H__ williamr@4: williamr@4: // End of File