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 Entry Fetch dialog API.
williamr@2: *
williamr@2: */
williamr@2: 
williamr@2: 
williamr@2: #ifndef __CPbkSingleEntryFetchDlg_H__
williamr@2: #define __CPbkSingleEntryFetchDlg_H__
williamr@2: 
williamr@2: //  INCLUDES
williamr@2: #include <e32base.h>    // CBase
williamr@2: #include <cntdef.h>     // TContactItemId
williamr@2: 
williamr@2: //  FORWARD DECLARATIONS
williamr@2: class CContactViewBase;
williamr@2: class CPbkFetchDlg;
williamr@2: class CPbkContactEngine;
williamr@2: class MObjectProvider;
williamr@2: class MPbkFetchKeyCallback;
williamr@2: class MPbkFetchDlgAccept;
williamr@2: 
williamr@2: 
williamr@2: // CLASS DECLARATION
williamr@2: /**
williamr@2:  * Phonebook Single Entry 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. The user selection is then returned 
williamr@2:  * to the client.
williamr@2:  */
williamr@2: class CPbkSingleEntryFetchDlg : 
williamr@2:         public CBase
williamr@2:     {
williamr@2:     public:  // Types
williamr@2:         /**
williamr@2:          * Single entry fetch parameter class. 
williamr@2:          */
williamr@2:         class TParams
williamr@2:             {
williamr@2:             public:  // Input parameters
williamr@2:                 /**
williamr@2:                  * Contact database. If NULL, the contact database is 
williamr@2:                  * retrieved from TLS or constructed if not available.
williamr@2:                  * If you have a Contact database on the client side
williamr@2:                  * please supply it here. 
williamr@2:                  */
williamr@2:                 CPbkContactEngine* iPbkEngine;
williamr@2: 
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:                  * @see CPbkContactEngine::AllContactsView()
williamr@2:                  * @see CPbkContactEngine::FilteredContactsViewL()
williamr@2:                  */
williamr@2:                 CContactViewBase* iContactView;
williamr@2: 
williamr@2:                 /**
williamr@2:                  * OPTIONAL: Fetch key event callback. 
williamr@2:                  * If NULL, not applicable.
williamr@2:                  */
williamr@2:                 MPbkFetchKeyCallback* iFetchKeyCallback;
williamr@2: 
williamr@2:                 /**
williamr@2:                  * OPTIONAL: Fetch accept callback.
williamr@2:                  * If NULL, not applicable.
williamr@2:                  */
williamr@2:                 MPbkFetchDlgAccept* iFetchDlgAccept;
williamr@2: 
williamr@2:             public:  // Output parameters
williamr@2:                 /**
williamr@2:                  * Returns the id of the selected entry, undefined if the dialog
williamr@2:                  * is canceled.
williamr@2:                  */
williamr@2:                 TContactItemId iSelectedEntry;
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:             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:          * @return New instance of this class.
williamr@2:          */
williamr@2:         IMPORT_C static CPbkSingleEntryFetchDlg* NewL(TParams& aParams);
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:          * Sets *aSelfPtr to NULL when this dialog is destroyed.
williamr@2:          * @precond !aSelfPtr || *aSelfPtr==this
williamr@2:          */
williamr@2:         IMPORT_C void ResetWhenDestroyed(CPbkSingleEntryFetchDlg** aSelfPtr);
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 accepted, 0 if canceled.
williamr@2:          */
williamr@2:         IMPORT_C TInt ExecuteLD();
williamr@2: 
williamr@2:         /**
williamr@2:          * Destructor. Also cancels this dialog and makes ExecuteLD return.
williamr@2:          */
williamr@2:         ~CPbkSingleEntryFetchDlg();
williamr@2: 
williamr@2:     private:  // Implementation
williamr@2:         CPbkSingleEntryFetchDlg(TParams& aParams);
williamr@2:         void ConstructL();
williamr@2:         static void Panic(TInt aReason);
williamr@2: 
williamr@2:     private:  // Data
williamr@2:         /// Own: parameters
williamr@2:         TParams& iParams;
williamr@2:         /// Own: fetch dialog
williamr@2:         CPbkFetchDlg* iFetchDlg;
williamr@2:         /// Ref: Phonebook engine
williamr@2:         CPbkContactEngine* iPbkEngine;
williamr@2:         /// Own: Phonebook engine
williamr@2:         CPbkContactEngine* iOwnPbkEngine;
williamr@2:         /// Ref: contact view to use for fetcing
williamr@2:         CContactViewBase* iContactView;
williamr@2:         /// Ref: set to ETrue in destructor
williamr@2:         TBool* iDestroyedPtr;
williamr@2:         /// Ref: pointer to self
williamr@2:         CPbkSingleEntryFetchDlg** iSelfPtr;
williamr@2:         /// Own: Object Provider
williamr@2:         MObjectProvider* iObjectProvider;
williamr@2:     };
williamr@2: 
williamr@2: #endif // __CPbkSingleEntryFetchDlg_H__
williamr@2: 
williamr@2: // End of File