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: * Phonebook Single Item Fetch API. williamr@2: * williamr@2: */ williamr@2: williamr@2: williamr@2: #ifndef __CPbkSingleItemFetchDlg_H__ williamr@2: #define __CPbkSingleItemFetchDlg_H__ williamr@2: williamr@2: // INCLUDES williamr@2: #include // CBase williamr@2: #include // TContactItemId williamr@2: williamr@2: // FORWARD DECLARATIONS williamr@2: class CContactViewBase; williamr@2: class CPbkFetchDlg; williamr@2: class CPbkSelectFieldDlg; williamr@2: class CPbkContactEngine; williamr@2: class CPbkFieldIdArray; williamr@2: class CPbkContactItem; williamr@2: class TPbkContactItemField; williamr@2: class MObjectProvider; williamr@2: williamr@2: williamr@2: // CLASS DECLARATION williamr@2: williamr@2: /** williamr@2: * Phonebook Single Item Fetch API. This class is used to construct williamr@2: * a Phonebook UI dialog where the user is able to select a single williamr@2: * contact entry from a contact list. Then the user must select a williamr@2: * particular field of that selected contact. The selected contact williamr@2: * item and field are then returned to the client. williamr@2: */ williamr@2: class CPbkSingleItemFetchDlg : public CBase williamr@2: { williamr@2: public: // Types williamr@2: /** williamr@2: * Single item fetch parameter class. williamr@2: */ williamr@2: class TParams williamr@2: { williamr@2: public: // Input parameters williamr@2: /** williamr@2: * Contact view to display. If NULL, loads the default williamr@2: * contact view containing all names in the contact williamr@2: * database. williamr@2: */ williamr@2: CContactViewBase* iContactView; williamr@2: williamr@2: /** williamr@2: * Array of field types to fetch. williamr@2: */ williamr@2: const CPbkFieldIdArray* iFieldIdArray; williamr@2: williamr@2: public: // Output parameters williamr@2: /** williamr@2: * Returns an contact item of the selected entry, undefined williamr@2: * if the dialog is canceled. Caller is responsible of williamr@2: * deleting iContactItem. williamr@2: */ williamr@2: CPbkContactItem* iContactItem; williamr@2: williamr@2: /** williamr@2: * Returns a field of the selected entry, undefined if the williamr@2: * dialog is canceled. This is iContactItem's field so it williamr@2: * is deleted when iContactItem is deleted. williamr@2: */ williamr@2: TPbkContactItemField* iContactItemField; williamr@2: williamr@2: public: // Additional input parameters williamr@2: /** williamr@2: * OPTIONAL: Fetch softkey resource ID. williamr@2: * If 0, Default softkeys are used. williamr@2: */ williamr@2: TInt iCbaId; williamr@2: williamr@2: public: // Constructors williamr@2: /** williamr@2: * C++ constructor. williamr@2: */ williamr@2: IMPORT_C TParams(); williamr@2: williamr@2: // Compiler-generated destructor is ok for this class williamr@2: williamr@2: /** williamr@2: * Returns a cleanup item which will handle cleanup of this williamr@2: * object in case a leave occurs. williamr@2: */ williamr@2: IMPORT_C operator TCleanupItem(); williamr@2: williamr@2: private: // Implementation williamr@2: static void Cleanup(TAny* aSelf); williamr@2: williamr@2: private: // Unimplemented functions williamr@2: /// Unimplemented copy constructor williamr@2: TParams(const TParams&); williamr@2: /// Unimplemented assignment operator williamr@2: TParams& operator=(const TParams&); williamr@2: williamr@2: private: // data williamr@2: /// Own: spare data williamr@2: TInt32 iSpare1; williamr@2: }; williamr@2: williamr@2: public: // Interface williamr@2: /** williamr@2: * Creates a new single entry fetch dialog. williamr@2: * williamr@2: * @param aParams Fetch parameters, @see TParams williamr@2: * @param aEngine Phonebook engine williamr@2: */ williamr@2: IMPORT_C static CPbkSingleItemFetchDlg* NewL williamr@2: (TParams& aParams, CPbkContactEngine& aEngine); williamr@2: williamr@2: /** williamr@2: * @see CCoeControl::SetMopParent(MObjectProvider* aParent) williamr@2: */ williamr@2: IMPORT_C void SetMopParent(MObjectProvider* aParent); williamr@2: williamr@2: /** williamr@2: * Executes this dialog. williamr@2: * NOTE: this object is deleted when ExecuteLD returns or leaves! williamr@2: * NOTE: current status pane layout is replaced with the Phonebook williamr@2: * one. Restoring the original pane is left to be the responsibility williamr@2: * of the caller. williamr@2: * williamr@2: * @return A non-zero value if not canceled. williamr@2: */ williamr@2: IMPORT_C TInt ExecuteLD(); williamr@2: williamr@2: /** williamr@2: * Destructor. Also cancels this dialog if ExecuteLD() has been called. williamr@2: */ williamr@2: ~CPbkSingleItemFetchDlg(); williamr@2: williamr@2: private: // Implementation williamr@2: CPbkSingleItemFetchDlg(TParams& aParams, CPbkContactEngine& aEngine); williamr@2: void ConstructL(); williamr@2: TBool EntryFetchAcceptedL(TContactItemId aCid); williamr@2: class TFetchCallback; williamr@2: friend class TFetchCallback; williamr@2: williamr@2: private: // Data williamr@2: /// Own: parameters williamr@2: TParams& iParams; williamr@2: /// Ref: contact view containing contacts to choose from williamr@2: CContactViewBase* iContactView; williamr@2: /// Own: fetch dialog williamr@2: CPbkFetchDlg* iFetchDlg; williamr@2: /// Own: field selection dialog williamr@2: CPbkSelectFieldDlg* iFieldDlg; williamr@2: /// Own: Phonebook engine williamr@2: CPbkContactEngine& iPbkEngine; williamr@2: /// Own: contact item to return to user via iParams williamr@2: CPbkContactItem* iContactItem; williamr@2: /// Own: contact item field to return to user via iParams williamr@2: TPbkContactItemField* iContactItemField; williamr@2: /// Ref: set to ETrue in destructor williamr@2: TBool* iDestroyedPtr; williamr@2: /// Own: object provicer williamr@2: MObjectProvider* iObjectProvider; williamr@2: }; williamr@2: williamr@2: #endif // __CPbkSingleItemFetchDlg_H__ williamr@2: williamr@2: // End of File