--- /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