diff -r 1fc85118c3ae -r 870918037e16 landmarksui/uicontrols/inc/CLmkDlgCombiSelectorImpl.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/landmarksui/uicontrols/inc/CLmkDlgCombiSelectorImpl.h Wed Sep 01 12:31:27 2010 +0100 @@ -0,0 +1,241 @@ +/* +* Copyright (c) 2004 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: LandmarksUi Content File - Common UI's (dialog-based) landmark selector impl class. +* +*/ + + + + + + + +#ifndef CLMKDLGCOMBISELECTORIMPL_H +#define CLMKDLGCOMBISELECTORIMPL_H + +// INCLUDES +#include "CLmkDlgSelectorImplBase.h" +#include "MLmkListProviderObserver.h" +#include "MLmkListMemento.h" +#include // MEikCommandObserver +#include +// FORWARD DECLARATIONS +class CLmkSelectorDialog; +class CAknNavigationControlContainer; +class CAknTabGroup; +class CAknNavigationDecorator; + +// CLASS DECLARATION + +/** +* Common UI's (dialog-based) landmark selector impl class. +* This selector contains both landmark by name & by category tabs +* and it utilizes landmark and category selectors to do that. +* +*/ +class CLmkDlgCombiSelectorImpl : public CLmkDlgSelectorImplBase, public MAknTabObserver + { + private: // Type definitions + + enum TLmkSelectorState + { + ELmkLandmarkSelector = 0, // used as index in iSelectors + ELmkCategorySelector, // used as index in iSelectors + ELmkFilteredLmSelector, // used as index in iSelectors + ELmkInitialState, + ELmkFinalState, + }; + + enum TLmkSelectorStateEvent + { + ELmkSelectorStart = 0, + ELmkSelectorStop, + ELmkSelectorNavigating, + ELmkSelectorAbort, + ELmkSelectorNoEvent + }; + + public: // Constructors and destructor + /** + * Two-phased constructor. + * @param aDb database reference + * @return newly instantiated object + */ + IMPORT_C static CLmkDlgCombiSelectorImpl* NewL( + CPosLandmarkDatabase& aDb ); + + /** + * Destructor. + */ + ~CLmkDlgCombiSelectorImpl(); + + public: // From CLmkSelectorImplBase + void StopExecutionL(); + TInt ExecuteL( TPosLmItemId& aOpenedItem, + TBool aAlwaysModifyOpened = EFalse ); + TInt ExecuteL( RArray& aSelectedItems, + TBool aAlwaysModifySelected = EFalse ); + + void SetupListProviderL(); + const CLmkListProviderBase& ListProvider() const; + void GetDlgResources( TBool aIsSingleSelector, + TInt& aTitlePaneResource, + TInt& aMenuBarResource, + TInt& aDialogResource ) const; + + void SetDialogTitleL(const TDesC& aTitle); + + protected: // From CLmkDlgSelectorImplBase + void StoreMemento(); + void RestoreMemento(); + + protected: // From MEikCommandObserver + void ProcessCommandL( TInt aCommandId ); + + protected: // From MLmkNavigationObserver + TKeyResponse HandleNavigationEventL( const TKeyEvent& aKeyEvent ); + void HandleLaunchingEventL(); + void HandleClosingEventL(); + + protected: // From MAknTabObserver + void TabChangedL( TInt aIndex ); + + protected: // New functions + /** + * Handle any state event. + * @param aEvent + * @return TLmkSelectorStateEvent + */ + TLmkSelectorStateEvent HandleAnyStateEventL( + TLmkSelectorStateEvent aEvent ); + + /** + * Handle initial state event. + * @param aEvent + * @return TLmkSelectorStateEvent + */ + TLmkSelectorStateEvent HandleInitialStateEventL( + TLmkSelectorStateEvent aEvent ); + + /** + * Handle landmark selector state event. + * @param aEvent + * @return TLmkSelectorStateEvent + */ + TLmkSelectorStateEvent HandleLandmarkSelectorStateEventL( + TLmkSelectorStateEvent aEvent ); + + /** + * Handle category selector state event. + * @param aEvent + * @return TLmkSelectorStateEvent + */ + TLmkSelectorStateEvent HandleCategorySelectorStateEventL( + TLmkSelectorStateEvent aEvent ); + + /** + * Handle filtered selector state event. + * @param aEvent + * @return TLmkSelectorStateEvent + */ + TLmkSelectorStateEvent HandleFilteredLmSelectorStateEventL( + TLmkSelectorStateEvent aEvent ); + + /** + * Handle default state state evelt. + * @param aEvent + * @return TLmkSelectorStateEvent + */ + TLmkSelectorStateEvent HandleDefaultStateStateEventL( + TLmkSelectorStateEvent aEvent ); + + /** + * Helper method for getting selector corresponding to the + * current state. If it doesn't exist yet it is created. + * @param aCategoryId is only used when creating filtered lm + * selector which requires a category id for criteria + */ + CLmkDlgSelectorImplBase& CurrentStateSelectorL( + TPosLmItemId aCategoryId = KPosLmNullItemId ); + + protected: // Constructors and destructor + /** + * C++ default constructor. + * @param aDb + * @return newly instantiated object + */ + CLmkDlgCombiSelectorImpl( CPosLandmarkDatabase& aDb ); + + /** + * By default Symbian 2nd phase constructor is private. + */ + void ConstructL(); + private: + + /** + * Add the individual tabs to tabgroup of NaviPane + * @param aaTabGroup + * @ + */ + void AddTabsL(CAknTabGroup& aTabGroup); + + /** + * Fetch the name of the Bitmap file + * + * @return pointer to name of bitmap file containing tab icons + */ + HBufC* GetBitmapFilenameLC(); + + private: // Data + /// Current state of this class + TLmkSelectorState iSelectorState; + + /// used when opening a category contents view + TInt iCategoryIndex; + + /// dialog return value + TInt iDlgRetVal; + + RPointerArray iSelectors; + + RPointerArray iMementos; + + /// Is user currently navigating between tabs? + TBool iNavigating; + + /// Is user interested in return values even if dialog was cancelled? + TBool iAlwaysModify; + + ///Ref: used in multi selector mode + RArray* iSelectedItems; + + ///Ref: used in single selector mode + TPosLmItemId* iOpenedItem; + + ///Ref: navi pane reference + CAknNavigationControlContainer* iNaviPane; + + ///Ref: tab group + CAknTabGroup* iTabGroup; + + ///Own: navi decorator + CAknNavigationDecorator* iNaviDeco; + + /// Own: custom title for the landmark selection dialog + HBufC* iCustomLandmarksTitle; + }; + +#endif // CLMKDLGCOMBISELECTORIMPL_H + +// End of File