diff -r e1b950c65cb4 -r 837f303aceeb epoc32/include/mw/akntitle.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/epoc32/include/mw/akntitle.h Wed Mar 31 12:33:34 2010 +0100 @@ -0,0 +1,328 @@ +/* +* Copyright (c) 2002-2008 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: A default control in the status pane's title pane. +* +*/ + + +#ifndef C_AKNTITLE_H +#define C_AKNTITLE_H + +#include +#include + +class CEikLabel; +class CEikImage; +class CAknTitlePaneExtension; +class CAknTitlePaneLabel; +class MAknTitlePaneObserver; +class TAknTextLineLayout; + +/** + * A default control in the status pane's title pane. + * + * @lib avkon.lib + */ +class CAknTitlePane : public CAknControl, public MCoeControlContext + { +public: + /** + * Constructor. + */ + IMPORT_C CAknTitlePane(); + + /** + * Destructor. + */ + IMPORT_C ~CAknTitlePane(); + + /** + * 2nd phase constructor. + */ + IMPORT_C void ConstructL(); + + /** + * Read title pane data from resource file and show it in + * the status pane's title pane. + */ + IMPORT_C void ConstructFromResourceL( TResourceReader& aReader ); + + /** + * Set a text and show it in the status pane's title pane. + * Descriptor is copied to the title pane control and ownership of + * the original descriptor is left to the application. + * + * @param aText Text to be shown on the title pane. + */ + IMPORT_C void SetTextL( const TDesC& aText ); + + /** + * Sets text to the title pane. + * + * @param aText New text. This object takes ownership of @c aText. + */ + IMPORT_C void SetText( HBufC* aText ); + + /** + * Set a text and show it in the status pane's title pane. + * If whole text does not fit into titlepane, it will be scrolled once + * and then shown in truncated form. + * + * Descriptor is copied to the title pane control and ownership + * of the original descriptor is left to the application. + * + * @since 3.0 + * + * @param aText Text to be shown on the title pane. + * @param aScroll If @c ETrue text is scrolled when needed, otherwise not. + * + */ + IMPORT_C void SetTextL( const TDesC& aText, TBool aScroll ); + + /** + * Sets text to the title pane. If whole text does not fit into titlepane, + * it will be scrolled once and then shown in truncated form. + * + * @since 3.0 + * + * @param aText New text. This object takes ownership of @c aText. + * If @c NULL is given then already existing text's + * scrollability will be changed according to @c aScroll. + * @param aScroll If ETrue text is scrolled when needed, otherwise not. + */ + IMPORT_C void SetText( HBufC* aText, TBool aScroll ); + + /** + * Returns text currently in the status pane's title pane. + * Ownership is not transferred. + * + * @return Text currently shown in the title pane. + */ + inline const TDesC* Text() const; + + /** + * Set a picture to the title pane and show it in the + * status pane's title pane. + * Title pane object takes ownership of the picture. + * If @c NULL bitmap is passed, previously set image is shown. + * + * @param aBitmap Bitmap to be set on the title pane. + * @param aMaskBitmap Mask of the bitmap. + */ + IMPORT_C void SetPicture( const CFbsBitmap* aBitmap, + const CFbsBitmap* aMaskBitmap = NULL ); + + /** + * Set a picture from file and show it in the status pane's title pane. + * + * @param aFileName Name of the bitmap file. + * @param aMainId Index of the bitmap in the bitmap file. + * @param aMaskId Index of the bitmap's mask in the bitmap file. + */ + IMPORT_C void SetPictureFromFileL( const TDesC& aFileName, + TInt aMainId, + TInt aMaskId = -1 ); + + /** + * Set a small picture to the title pane and show it in the + * status pane's title pane together with text. + * + * Title pane object takes ownership of the picture. + * + * If @c NULL bitmap is passed, previously set image is used. + * + * @since 3.0 + * + * @param aBitmap Bitmap to be set on the title pane. + * @param aMaskBitmap Mask of the bitmap. + * @param aVisible If @c ETrue, picture is set visible. Otherwise only text is shown. + */ + IMPORT_C void SetSmallPicture( const CFbsBitmap* aBitmap, + const CFbsBitmap* aMaskBitmap, + TBool aVisible ); + + /** + * Set data from resource file and show it in the status pane's title pane. + * + * @param aReader Resource reader of the title pane data. + */ + IMPORT_C void SetFromResourceL( TResourceReader& aReader ); + + /** + * Set default value to the status pane's title pane. + * Default value is the name of currently active application. + */ + IMPORT_C void SetTextToDefaultL(); + + /** + * Gets the maximum amount of text rows that title pane is able to display simultaneously + * in the currently active status pane layout. Typically the return value is + * either 2 (default portrait mode layout) or 1 (landscape mode layouts). + * In the extended status pane layouts the maximum number of lines is always 1. + * + * Since release 3.2, regardless of the status pane layout, + * the maximum number of lines is always 1. + * + * @since 3.1 + * + * @return Maximum number of visible text lines. + */ + IMPORT_C TInt MaxNumberOfVisibleTextRows() const; + + /** + * Sets the number of text rows that can be used to display the text. + * The largest allowed value is the the value returned from MaxNumberOfVisibleTextRows() and + * the minimum value is always 1. + * + * @since 3.1 + * + * @param aRows Number of rows that can be used to display the text. + */ + IMPORT_C void SetNumberOfVisibleTextRows( TInt aRows ); + +public: // From base class @c MCoeControlContext. + + /** + * Allows to modify graphics context before @c Draw. + * + * @param aGc Graphics context to be modified. + */ + IMPORT_C virtual void PrepareContext( CWindowGc& aGc ) const; + +protected: // From base class @c CCoeControl. + + /** + * Handles the size change events. + */ + IMPORT_C virtual void SizeChanged(); + + /** + * Handles the position change events. + */ + IMPORT_C virtual void PositionChanged(); + + /** + * Handles a change to the control's resources which are shared across + * the environment, e.g. skin change. + * + * @param aType Event type. + */ + IMPORT_C virtual void HandleResourceChange( TInt aType ); + + /** + * Returns number of controls inside the title pane control. + * + * @return Number of component controls. + */ + IMPORT_C virtual TInt CountComponentControls() const; + + /** + * Returns a control determined by control index. + * + * @param aIndex Index of a control to be returned. + * + * @return Pointer to the control. + */ + IMPORT_C virtual CCoeControl* ComponentControl(TInt aIndex) const; + +public: // From base class @c CCoeControl. + + /** + * Handles pointer events. + * + * @param aPointerEvent Pointer event to be handled. + */ + IMPORT_C void HandlePointerEventL( const TPointerEvent& aPointerEvent ); + +public: // New methods + + /** + * Sets observer for title pane events. + * + * @param aObserver Pointer to title pane observer. + */ + IMPORT_C void SetTitlePaneObserver( MAknTitlePaneObserver* aObserver ); + +private: // From base class @c CAknControl. + + IMPORT_C void* ExtensionInterface( TUid aInterface ); + +public: + + /** + * Gets title text label. + * @internal + */ + CEikLabel* TextLabel(); + + /** + * Gets the title image. + * @internal + */ + CEikImage* TitleImage(); + +private: + + void CommonConstructL(); + TUid AppUid() const; + + TInt FormatTitlePaneLabelL( const TInt aOneLineLayoutWidth, + const TInt aTwoLineLayoutWidth, + const CFont* aOneLineFont, + const CFont* aTwoLineFont ); + + void ReadFromResourceFileL( TResourceReader& aReader ); + void SetSmallPictureFromFileL( const TDesC& aFileName, TInt aMainId, TInt aMaskId = -1 ); + +private: // From base class @c CCoeControl. + + IMPORT_C virtual void Draw( const TRect& aRect ) const; + +protected: + + MAknTitlePaneObserver* iTitlePaneObserver; + +private: + void SizeChangedInNormalStatusPane(); + void SizeChangedInExtendedStatusPane(); + void SizeChangedInFlatStatusPane(); + void SizeChangedInStaconPane(); + RWindow* StatuspaneContainerWindow() const; + void SetupTitleLabelEffectL(); + void SetContainerWindowNonFading( TBool aNonFading ); + + void SetupStaconPaneScrollEffectL(); + void SetupFlatStatusPaneScrollEffectL(); + void SetupNormalStatusPaneScrollEffectL(); + void SetupFlatStatusPaneFadeEffectL(); + void SetupExtendedStatusPaneScrollEffectL(); + void SetupNoEffectL(); + + TBool TextFits( TAknTextLineLayout& aTextLayout ); + +private: // Member data + + HBufC* iTitleText; + HBufC* iDefaultTitleText; + CAknTitlePaneLabel* iTitleLabel; + TBool iImageShown; + CAknTitlePaneExtension* iExtension; + }; + +inline const TDesC* CAknTitlePane::Text() const + { + return( iTitleText ); + } + +#endif // C_AKNTITLE_H