uifw/AvKon/inc/AknInfoPopupNote.h
changeset 0 2f259fa3e83a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/uifw/AvKon/inc/AknInfoPopupNote.h	Tue Feb 02 01:00:49 2010 +0200
@@ -0,0 +1,264 @@
+/*
+* Copyright (c) 2005 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:  The view part of the info pop-up note 
+ *
+*/
+
+
+#ifndef CAKNINFOPOPUPNOTE_H
+#define CAKNINFOPOPUPNOTE_H
+
+//  INCLUDES
+#include <AknUtils.h>
+#include <e32std.h> // RPointerArray
+#include <coecntrl.h>
+
+// FORWARD DECLARATIONS
+class CAknsFrameBackgroundControlContext;
+class CAknTextControl;
+class CAknInfoPopupNoteController;
+class TAknWindowComponentLayout;
+class TAknLayoutScalableParameterLimits;
+
+// CLASS DECLARATION
+
+/**
+ * CAknInfoPopupNote is the view part of popup. 
+ * It draws frame, background and texts in popup. 
+ * @lib avkon.lib
+ * @since Series 60 3.0
+ */
+class CAknInfoPopupNote : public CCoeControl, public MCoeForegroundObserver
+    {    
+public:  // Constructors and destructor
+
+    /**
+     * Two-phased constructor.
+     */
+    static CAknInfoPopupNote* NewL( CAknInfoPopupNoteController& aController );
+        
+    /**
+     * Destructor.
+     */
+    virtual ~CAknInfoPopupNote();
+
+public: // New functions
+
+    /**           
+    * Popup will be shown after call to this function.
+    */
+    void ShowL();
+
+    /**
+    * Hides popup 
+    */
+    void Hide();
+    
+    /**
+    * Set text to show in popup (setted in text control, in member data). 
+    * If given text is too long for popup it is truncated.
+    * @param aText Text to show in popup.
+    */
+    void SetTextL( const TDesC& aText );
+
+    /**
+    * Return text to be show in popup.
+    * @return Popup text (setted in text control, in member data).
+    */
+    const TPtrC GetText() const;
+
+    /**
+    * Sets the position and alignment of the info pop-up note.
+    * @since 3.1
+    * @param aPosition The position where pop-up note is to be displayed.
+    * @param aAlignment Specifies the part of pop-up note, which will be aligned
+    *    with the given position.
+    */
+    void SetPositionAndAlignment( const TPoint& aPosition,
+                                  const TGulAlignmentValue& aAlignment );
+
+    /**
+    * Sets the position of the info pop-up note so that it is aligned with the
+    * given rectangle as specified in the LAF data. This is intented to be
+    * used in conjunction with lists and grids if the application wishes to
+    * implement a pop-up that follows lists/grids item highlight.
+    * @since 3.1
+    * @param aHighlightRect Screen-relative rectangle used to calculate 
+    *       pop-up's position.
+    */
+    void SetPositionByHighlight( const TRect& aHighlightRect );
+
+    /**
+    * Restores the info pop-up note's default position discarding previously
+    * set values to position and alignment.
+    * @since 3.1
+    */
+    void RestoreDefaultPosition();
+
+    /**
+    * Sets the tooltip mode. When tooltip mode is on, info pop-up note is
+    * displayed with only one line of text, and the width of the pop-up note
+    * depends on the text lenght.
+    * @since 3.1
+    * @param aTooltipMode ETrue to set tooltip mode on, EFalse to set it off.
+    */
+    void SetTooltipModeL( const TBool aTooltipMode );
+
+    /**
+    * Whether info popup note will be automatically hidden 
+    * or not when app ui is faded (true by default)
+    * @since 3.1
+    * @param aHide ETrue when hidden, EFalse when shown or controlled externally
+    */
+    void HideWhenAppFaded( const TBool aHide );
+
+public: // From CCoeControl, compound control methods
+
+    /**
+    * Return count of used components (from CCoeControl)
+    * @return Number of component controls, now returns always 1.
+    */
+    TInt CountComponentControls() const;    
+
+    /**
+    * Return pointer to used components (from CCoeControl)
+    * @param aIndex 
+    * @return Pointer to used components, now returns always iText member variable.
+    */
+    CCoeControl* ComponentControl( TInt /*aIndex*/ ) const;
+    
+    /**
+    * Hide popup immediately and gives key event forward without consuming it.
+    * @param aKeyEvent The key event.
+    * @param aType The type of key event: EEventKey, EEventKeyUp or EEventKeyDown.
+    * @return Indicates whether or not the key event was used by this control.
+    */
+    TKeyResponse OfferKeyEventL( const TKeyEvent& aKeyEvent, TEventCode aType );
+    
+    /**
+    * Sets this control as visible or invisible.
+    * @param aVisible ETrue to make the control visible, EFalse to make it invisible.
+    */
+    void MakeVisible( TBool aVisible );
+
+    /**
+    * Handles a change to the control's resources.
+    * @param aType A message UID value.
+    */
+    void HandleResourceChange( TInt aType );
+    
+    /**    
+    * Handles pointer events
+    */
+	void HandlePointerEventL( const TPointerEvent& aPointerEvent );
+	
+public: // From MCoeForegroundObserver
+    /**
+    * Empty implementation.
+    * @since S60 3.2
+    */    
+    void HandleGainingForeground();
+    
+    /**
+    * Hides info popup note if HideWhenAppFaded is enabled.
+    * @since S60 3.2
+    */
+    void HandleLosingForeground();
+
+private: // From CCoeControl
+
+    /**
+    * Set some of layout things.
+    */
+    void SizeChanged();
+    
+private:
+
+    /**
+     * C++ default constructor.
+     */
+    CAknInfoPopupNote( CAknInfoPopupNoteController& aController );
+
+    /**
+     * Symbian 2nd phase constructor (by default it is private).
+     */
+    void ConstructL();
+
+private: // From CCoeControl
+
+    /**
+    * Draw mainly the background of popup window
+    * @param  const TRect& aRect popup window rect
+    */
+    void Draw( const TRect& aRect ) const;
+
+private: // New functions
+
+    // Sets the correct layout for pop-up note.
+    void SetWindowLayoutL();
+
+    // Sets the info pop-up note layout.
+    void SetInfoPopupWindowLayoutL();
+
+    // Set the tooltip layout.
+    void SetTooltipWindowLayoutL();
+
+    // Moves pop-up note to set floating position.
+    void Relocate();
+
+    // Adjusts pop-up note's position so it will fit the screen.
+    void AdjustPosition( const TPoint& aFloatingPosition );
+
+    // Gets rect from layout data.
+    TRect RectFromLayout( const TRect& aParent,
+        const TAknWindowComponentLayout& aComponentLayout ) const;
+
+    // Selects the correct line variety depending on the number of lines.
+    TInt SelectLineVariety( const TInt aNumberOfLines,
+        const TAknLayoutScalableParameterLimits& aLimits ) const;
+        
+    // Selects the correct window variety depending on the number of lines.
+    TInt SelectWindowVariety( const TInt aNumberOfLines,
+        const TAknLayoutScalableParameterLimits& aLimits ) const; 
+
+private: // Data
+
+    // Skin context
+    CAknsFrameBackgroundControlContext* iBgContext; // Own
+
+    // Popoup frame rects
+    TRect iOuterRect;
+    TRect iInnerRect;
+
+    // Used text control inside popup
+    CAknTextControl* iText;
+
+    // Controller of the popup
+    CAknInfoPopupNoteController& iController;
+
+    // Flag for toolip usage
+    TBool iTooltipMode;
+
+    TBool iHideWhenAppFaded;
+
+    // Flag, position, and alignment for floating position usage
+    TBool iFloatingPositionUsed;
+    TPoint iFloatingPosition;
+    TGulAlignmentValue iAlignment;
+
+    };
+
+#endif      // CAKNINFOPOPUPNOTE_H   
+            
+// End of File