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: * Heading pane williamr@2: * williamr@2: */ williamr@2: williamr@2: williamr@2: #ifndef AKNPOPUPHEADINGPANE_H williamr@2: #define AKNPOPUPHEADINGPANE_H williamr@2: williamr@2: // INCLUDES williamr@2: #include williamr@2: williamr@2: #include williamr@2: #include williamr@2: williamr@2: williamr@2: #include williamr@2: #include williamr@2: #include williamr@2: williamr@2: // FORWARD DECLARATIONS williamr@2: class CAknTextControl; williamr@2: class CEikImage; williamr@2: class CAknBitmapAnimation; williamr@2: class CAknPopupHeadingAttributes; williamr@2: class CAknPopupHeadingPaneExtension; williamr@2: class MAknHeadingPaneTouchObserver; williamr@2: williamr@2: // CLASS DECLARATION williamr@2: williamr@2: /** williamr@2: * Header control for queries. williamr@2: * Defines properties of the header of the pop-up menu. williamr@2: * williamr@2: * @since Series 60 0.9 williamr@2: */ williamr@2: class CAknPopupHeadingPane : public CAknControl williamr@2: { williamr@2: public: williamr@2: /** williamr@2: * Enumeration for different layouts williamr@2: */ williamr@2: enum THeadingPaneLayout williamr@2: { williamr@2: /** Query mode layout for heading pane */ williamr@2: EQueryHeadingPane, williamr@2: /** List mode layout for heading pane */ williamr@2: EListHeadingPane, williamr@2: /** Heading pane for colour selection list. @since 3.0 */ williamr@2: EColourSelectionGridHeadingPane, williamr@2: /** Heading pane for message query. @since 3.0 */ williamr@2: EMessageQueryHeadingPane williamr@2: }; williamr@2: williamr@2: williamr@2: public: williamr@2: /** williamr@2: * Constructor. williamr@2: */ williamr@2: IMPORT_C CAknPopupHeadingPane(); williamr@2: williamr@2: /** williamr@2: * Destructor. williamr@2: */ williamr@2: IMPORT_C ~CAknPopupHeadingPane(); williamr@2: williamr@2: /** williamr@2: * From @c CCoeControl. williamr@2: * Responds to size changes to sets the size and position of the williamr@2: * contents of the heading pane. williamr@2: */ williamr@2: IMPORT_C void SizeChanged(); williamr@2: williamr@2: /** williamr@2: * From @c CCoeControl. williamr@2: * Get the minimum required size of heading pane. williamr@2: * @return The minimum required size of heading pane. williamr@2: */ williamr@2: IMPORT_C TSize MinimumSize(); williamr@2: williamr@2: /** williamr@2: * Completes the construction of the @c CAknPopupHeadingPane object. williamr@2: * Layout is set to @c EQueryHeadingPane by default. williamr@2: * @param aText Header text. williamr@2: */ williamr@2: IMPORT_C void ConstructL(TPtrC aText); williamr@2: williamr@2: /** williamr@2: * From @c CCoeControl. williamr@2: * Constructs heading pane from a resource file. williamr@2: * Current resource reader position must point to @c AVKON_HEADING williamr@2: * resource. williamr@2: * @param aReader The resource reader with which to access the header williamr@2: * resource values. williamr@2: */ williamr@2: IMPORT_C void ConstructFromResourceL(TResourceReader &aReader); williamr@2: williamr@2: /** williamr@2: * Get pointer to the prompt control. williamr@2: * @return A pointer to the prompt control. williamr@2: */ williamr@2: IMPORT_C CEikLabel *Prompt() const; williamr@2: williamr@2: /** williamr@2: * Get prompt text. williamr@2: * @return A prompt text. williamr@2: */ williamr@2: IMPORT_C TPtr PromptText() const; williamr@2: williamr@2: /** williamr@2: * Set header text. williamr@2: * @param aText A header text. williamr@2: */ williamr@2: IMPORT_C void SetTextL(TPtrC aText); williamr@2: williamr@2: williamr@2: /** williamr@2: * Set header image. Gets the ownership of the image. williamr@2: * @param aImage A header image. williamr@2: */ williamr@2: IMPORT_C void SetHeaderImageOwnedL(CEikImage *aImage); williamr@2: williamr@2: /** williamr@2: * Set header image. williamr@2: * @param aImage A header image. williamr@2: */ williamr@2: IMPORT_C void SetHeaderImageL(CEikImage *aImage); williamr@2: williamr@2: /** williamr@2: * Set header animation by reading @c BMPANIM_DATA resource. williamr@2: * @param aResourceId A resource identifier for the header animation. williamr@2: */ williamr@2: IMPORT_C void SetHeaderAnimationL(TInt aResourceId); williamr@2: williamr@2: /** williamr@2: * Set layout of the heading pane. williamr@2: * @param aLayout A layout of the heading pane. williamr@2: */ williamr@2: IMPORT_C void SetLayout( THeadingPaneLayout aLayout ); williamr@2: williamr@2: /** williamr@2: * Start the animation. williamr@2: */ williamr@2: IMPORT_C void StartAnimationL(); williamr@2: williamr@2: /** williamr@2: * Cancel the animation. williamr@2: * Calls @c RBitmapAnim::CommandReply(EBitmapAnimCommandStopAnimation). williamr@2: * @return A value defined by the animation writer. The value may, williamr@2: * in some cases, be defined to be an error code. williamr@2: */ williamr@2: IMPORT_C TInt CancelAnimation(); williamr@2: williamr@2: public: williamr@2: /** williamr@2: * From @c CCoeControl. williamr@2: * Activates popup heading. Calls @c CCoeControl::ActivateL(). williamr@2: */ williamr@2: virtual void ActivateL(); williamr@2: IMPORT_C void HandlePointerEventL(const TPointerEvent& aPointerEvent); williamr@2: williamr@2: /** williamr@2: * Handles a change to the control's resources of type aType williamr@2: * which are shared across the environment, e.g. colors or fonts. williamr@2: * williamr@2: * @since 3.1 williamr@2: */ williamr@2: IMPORT_C void HandleResourceChange(TInt aType); williamr@2: williamr@2: private: williamr@2: /** williamr@2: * From CAknControl williamr@2: */ williamr@2: IMPORT_C void* ExtensionInterface( TUid aInterface ); williamr@2: williamr@2: private: williamr@2: TInt CountComponentControls() const; williamr@2: CCoeControl* ComponentControl(TInt anIndex) const; williamr@2: IMPORT_C virtual void Draw(const TRect& aRect) const; williamr@2: williamr@2: void DoSetPromptL(); williamr@2: void LayoutQueryHeadingPane(); williamr@2: void LayoutListHeadingPane(); williamr@2: void LayoutColourSelectionGridHeadingPane(); williamr@2: void LayoutMessageQueryHeadingPane(); williamr@2: williamr@2: private: williamr@2: //TAknLayoutRect iLayoutLine; // Not used williamr@2: CAknPopupHeadingPaneExtension* iExtension; // was TAknLayoutRect iLayoutLine williamr@2: TAknLayoutRect iLayoutHeading; williamr@2: CAknTextControl* iPrompt; williamr@2: CEikImage* iHeaderImage; williamr@2: CAknBitmapAnimation* iAnimation; williamr@2: TInt iHeadingLayoutRef; williamr@2: CAknPopupHeadingAttributes* iAttributes; // was THeadingPaneLayout iLayout; williamr@2: williamr@2: private: // new methods williamr@2: void SetAnimationBackGroundFrameL(); williamr@2: williamr@2: public: // new methods williamr@2: void SetPageL(TInt aCurrent, TInt aMax=0); williamr@2: williamr@2: /** williamr@2: * Set heading frame ids. These can be used to override default ids. williamr@2: * @param aFrameId / aFrameCenterId Ids of heading's frame.. williamr@2: */ williamr@2: IMPORT_C void SetSkinFrameId(const TAknsItemID &aFrameId); williamr@2: IMPORT_C void SetSkinFrameCenterId(const TAknsItemID &aFrameCenterId); williamr@2: williamr@2: /** williamr@2: * Set the heading pane touch observer. The observer must derive from MAknHeadingPaneTouchObserver williamr@2: * and implement method HandleHeadingPanePointerEventL(). williamr@2: */ williamr@2: void SetTouchObserver( MAknHeadingPaneTouchObserver* aTouchObserver ); williamr@2: williamr@2: williamr@2: private: williamr@2: HBufC* PageTextL() const; williamr@2: }; williamr@2: williamr@2: #endif williamr@2: