diff -r 000000000000 -r e686773b3f54 phonebookui/Phonebook/View/inc/CPbkFetchDlg.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phonebookui/Phonebook/View/inc/CPbkFetchDlg.h Tue Feb 02 10:12:17 2010 +0200 @@ -0,0 +1,258 @@ +/* +* 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 "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* Fetch dialog for Phonebook. +* +*/ + + +#ifndef __CPbkFetchDlg_H__ +#define __CPbkFetchDlg_H__ + +// INCLUDES +#include // CEikDialog +#include "MPbkFetchDlg.h" +#include +#include +#include + + +// FORWARD DECLARATIONS +class CAknNavigationDecorator; +class CPbkContactEngine; +class CPbkContactIdSet; +class MPbkFetchDlgAccept; +class CPbkContextPaneIcon; +class MPbkFetchDlgPages; +class MPbkFetchKeyCallback; +class CPbkExtGlobals; +class MPbkFetchDlgSelection; + + +// CLASS DECLARATION + +/** + * Generic Phonebook fetch dialog -- do not use directly! + * Use CPbkSingleEntryFetch for Single Entry Fetch or + * CPbkMultipleEntryFetch for Multiple entry Fetch. + */ +NONSHARABLE_CLASS(CPbkFetchDlg) : + public CAknDialog, + private MPbkFetchDlg, + private MPbkContactViewListControlObserver + { + public: // data structures + /** + * Fetch parameter flags. + */ + enum TFetchFlags + { + FETCH_FOCUSED = 0x0001, + FETCH_MARKED = 0x0002 + }; + + /** + * Fetch paramters struct. + * Parameters specify the fetch return value. + */ + class TParams + { + public: // Input parameters + /** + * Fetch flags, see TFetchFlags. + * Defaults to FETCH_FOCUSED. + */ + TUint iFlags; + + /** + * PBK_FETCHENTRY_DIALOG resource id. + * Defaults to Single entry fetch. + */ + TInt iResId; + + /** + * MANDATORY: Contacts to display. + */ + CContactViewBase* iContactView; + + /** + * Optional fetch key event callback. + */ + MPbkFetchKeyCallback* iKeyCallback; + + /** + * Optional fetch accept callback. + */ + MPbkFetchDlgAccept* iAcceptCallback; + + /** + * Optional fetch selection callback. + */ + MPbkFetchDlgSelection* iFetchSelection; + + /** + * Optional Fetch Softkey resource ID + */ + TInt iCbaId; + + public: // Output parameters + /** + * Returns the focused entry if iFlags has FETCH_FOCUSED set. + */ + TContactItemId iFocusedEntry; + + /** + * Returns the marked entries if iFlags has FETCH_MARKED set. + * Caller must delete iMarkedEntries when no longer needed. + */ + CContactIdArray* iMarkedEntries; + + public: // Interface + /** + * C++ Constructor. Inits this object for single entry fetch. + */ + TParams(); + + /** + * Returns a cleanup item which will release all resources + * held by this object in case a leave occurs. + */ + operator TCleanupItem(); + + // Compiler-generated destructor is ok for this class + + private: // Implementation + static void Cleanup(TAny* aPtr); + + private: // Unimplemented + /// Unimplemented copy constructor + TParams(const TParams&); + /// Unimplemented assignment operator + TParams& operator=(const TParams&); + }; + + public: // Constructors and destructor + /** + * Creates a fetch dialog with specified parameters. + * + * @param aParams Fetch parameters, see TParams. + * @param aEngine Phonebook engine. + * @return a new instace of this class. + */ + static CPbkFetchDlg* NewL(TParams& aParams, CPbkContactEngine& aEngine); + + /** + * Sets aSelfPtr to NULL when this dialog is destroyed. + * @precond !aSelfPtr || *aSelfPtr==this + */ + void ResetWhenDestroyed(CPbkFetchDlg** aSelfPtr); + + /** + * Destructor. + */ + ~CPbkFetchDlg(); + + public: // Interface + /** + * Executes and deletes (also if a leave occurs) this dialog. + * + * @return !=0 if dialog was accepted, 0 if canceled. + */ + TInt ExecuteLD(); + + private: // from CEikDialog + SEikControlInfo CreateCustomControlL(TInt aControlType); + void PreLayoutDynInitL(); + TBool OkToExitL(TInt aButtonId); + void PageChangedL(TInt aPageId); + TKeyResponse OfferKeyEventL(const TKeyEvent& aKeyEvent,TEventCode aType); + void HandleResourceChange(TInt aType); + void LineChangedL(TInt aControlId); + public: // MEikCommandObserver + void ProcessCommandL(TInt aCommandId); + + private: // from MPbkFetchDlg + CCoeControl* FetchDlgControl(TInt aCtrlId) const; + CContactViewBase& FetchDlgNamesView() const; + CPbkContactIdSet& FetchDlgSelection(); + void FetchDlgHandleError(TInt aError); + TRect FetchDlgClientRect() const; + CPbkContactEngine& PbkEngine(); + void FetchDlgPageChangedL(MPbkFetchDlgPage& aPage); + void UpdateMSKL( TInt aIndex ); + + private: // from MPbkContactViewListControlObserver + void HandleContactViewListControlEventL( + CPbkContactViewListControl& aControl, + const TPbkContactViewListControlEvent& aEvent); + + private: // Implementation + CPbkFetchDlg(TParams& aParams, CPbkContactEngine& aEngine); + void ConstructL(); + void SetCbaCommandSetL(TInt aResourceId); + void SetupStatusPaneL(); + void UpdateCbasL(); + static TInt TryAcceptSelectionL( TAny* aSelf ); + void SkinTabsL(); + static TInt DelaySkinning(TAny* aFetchDlg); + + private: // types + /** + * Resource data, see PBK_FETCHENTRY_DIALOG. + */ + struct TResData + { + TInt iDialogId; + TInt iCbaId; + TInt iEmptyCbaId; + TInt iNaviPaneId; + void ReadFromResource(TResourceReader& aReader); + }; + + private: // data + /// Ref: paramters + TParams& iParams; + /// Ref: Contact engine + CPbkContactEngine& iEngine; + /// Own: Resource data + TResData iResData; + /// Own: Navi pane control + CAknNavigationDecorator* iNaviDecorator; + /// Own: Selected contacts array + CPbkContactIdSet* iSelectedIdSet; + /// Ref: is the dialog canceled + TBool* iCanceledPtr; + /// Ref: Set to NULL when this dialog is destroyed. + CPbkFetchDlg** iSelfPtr; + /// Own: Phonebooks application icon + CPbkContextPaneIcon* iContextPaneIcon; + /// Own: dialog pages + MPbkFetchDlgPages* iPages; + /// Ref: currently active page + MPbkFetchDlgPage* iCurrentPage; + /// Own: current CBA command set + TInt iCbaCommandSet; + /// Own: handle to UI extension factory + CPbkExtGlobals* iExtGlobals; + /// Own: Resource id of the caller's status pane + TInt iPreviousStatusPaneLayout; + /// Own: Asynchronous dialog accepter callback + CAsyncCallBack* iDialogAccepter; + /// Own: Delay for tab skinning + CIdle* iTabSkinDelay; + }; + +#endif // __CPbkFetchDlg_H__ + +// End of File