classicui_plat/title_pane_api/inc/akntitle.h
changeset 45 667edd0b8678
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/classicui_plat/title_pane_api/inc/akntitle.h	Fri Jul 23 17:08:56 2010 +0800
@@ -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 <AknControl.h>
+#include <coeccntx.h>
+
+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