textinput/peninputarc/inc/peninputlayoutcontrolinc/peninputlayoutcandidatewnd.h
changeset 0 eb1f2e154e89
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/textinput/peninputarc/inc/peninputlayoutcontrolinc/peninputlayoutcandidatewnd.h	Tue Feb 02 01:02:04 2010 +0200
@@ -0,0 +1,350 @@
+/*
+* Copyright (c) 2005-2006 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:  header file of candidate window 
+*
+*/
+
+#ifndef C_CCANDIDATEWND_H
+#define C_CCANDIDATEWND_H
+
+#include <peninputlayoutbasecontrol.h>
+
+/**
+ *  CCandidateWnd
+ *
+ *  Candidate window.
+ *
+ *  @lib feplayoutcontrol.lib
+ *  @since S60 V4.0
+ */
+class CCandidateWnd : public CFepUiBaseCtrl, public MCandidateBuffer, 
+                      public MTimerHandler
+    {
+public:
+
+    /**
+     * Destructor.        
+     *
+     * @since S60 V4.0        
+     */           
+    IMPORT_C ~CCandidateWnd();
+
+    /**
+     * Factory function.        
+     *
+     * @since S60 V4.0        
+     * @param aRect The rectangle area for this control
+     * @param aCandidateRectNum Number of candidates in one page
+     * @param aUiLayout Ui layout who contains this control
+     * @param aControlId control Id
+     * @param aHideTimer Auto hide timer delay
+     * @return An instance of CCandiadateWnd class        
+     */                       
+    IMPORT_C static CCandidateWnd* NewL(const TRect& aRect, TInt aCandidateRectNum,
+                        CFepUiLayout* aUiLayout, TInt aCtrlId,
+                        TTimeIntervalMicroSeconds32 aHideTimer = 0 );
+    /**
+     * Get Selected candidates.
+     *
+     * @since S60 V4.0
+     * @return Current selected candidate
+     */                           
+    IMPORT_C const TDesC& GetSelCandidate();
+    
+    /**
+     * Set autohide timer delay.
+     *
+     * @since S60 V4.0
+     * @param aDelay The timer delay. If delay interval is 0, then disable auto hide
+     */                                   
+    IMPORT_C void SetAutoHideDelay(TTimeIntervalMicroSeconds32 aDelay);
+    
+    /**
+     * Set number of candiates in one line
+     * The cell rect and text rect is then caculted. text rect = cell rect
+     *
+     * @since S60 V4.0
+     * @param aNumInLine The number of candiates in one page line
+     */                                           
+    IMPORT_C void SetCandidateNumL(TInt aNumInLine);       
+   
+    /**
+     * Set number of candiates in one line and cell rect and text rect size.
+     *
+     * @since S60 V4.0
+     * @param aNumInLine The number of candiates in one page line
+     * @param aCellRectSize The cell rect size for one candidate
+     * @param aTextRect The text rect for candidate drawing. This is relative 
+     *                  to the cell rect.
+     */                                                      
+    IMPORT_C void SetCandidateNumL(TInt aNumInLine,const TSize& aCellRectSize,
+    												const TRect& aTextRect);
+    /**
+     * Set the font for candidate
+     *
+     * @since S60 V4.0
+     * @param aFontSpec the font spec to be used.
+     */                                                   
+    IMPORT_C void SetFont(const TFontSpec& aFontSpec);
+    
+    /**
+     * Set the font for candidate
+     *
+     * @since S60 V4.0
+     * @param aFont the font to be used.Ownership not transferred.
+     */                                                   
+    IMPORT_C void SetFont(const CFont* aFont);    
+
+    /**
+     * Set the baseline for text drawing
+     *
+     * @since S60 V4.0
+     * @param aBaseline The baseline used for candidate drawing
+     */                                         
+    inline void SetBaseline(TInt aBaseline);    
+    
+    /**
+     * get the baseline for text drawing
+     *
+     * @since S60 V4.0
+     * @return The baseline
+     */                                         
+    inline TInt Baseline();        
+    
+    //from base class CFepUiBaseCtrl
+    
+    /**
+     * From CFepUiBaseCtrl
+     * Draw control
+     *
+     * @since S60 V4.0
+     */                       
+    IMPORT_C void Draw();
+
+    /**
+     * From CFepUiBaseCtrl
+     * Update control and it's components rect
+     *
+     * @since S60 V4.0
+     * @param aOffset The offset to be moved
+     */                
+    IMPORT_C void Move(const TPoint& aOffset);    
+    
+    /**
+     * From CFepUiBaseCtrl
+     * Handle pointer levae event. 
+     * This will be called only when it's got pointer down event before and 
+     * now pointer leaves without pointer up event
+     *
+     * @since S60 V4.0
+     * @param aPoint current pointer position
+     */
+    virtual IMPORT_C void HandlePointerLeave(const TPoint& aPoint);
+    
+    /**
+     * From CFepUiBaseCtrl
+     * Call back function when layout starts dragging
+     *
+     * @since S60 V4.0
+     */
+    virtual IMPORT_C void OnLayoutDraggingStart();
+
+    /**
+     * From CFepUiBaseCtrl    
+     * Call back function when layout ends dragging
+     *
+     * @since S60 V4.0
+     */
+    virtual IMPORT_C void OnLayoutDraggingEnd();
+       
+    /**
+     * OnActivate. Called when the layout is going to be shown.
+     *
+     * @since S60 v4.0
+     */        
+    virtual IMPORT_C void OnActivate();
+    
+    /**
+     * OnDeActivate. Called when the layout is going to be hidden
+     *
+     * @since S60 v4.0
+     */        
+    virtual IMPORT_C void OnDeActivate();
+       
+    //from base class MTimerHandler
+    /**
+     * From MTimerHandler
+     * HandleTimerOut. Handling time out event
+     *
+     * @since S60 V4.0
+     * @param aTimeType The timer type
+     */                   
+    IMPORT_C void HandleTimerOut(TInt aTimeType);        
+
+    //from base class MCandidateBuffer        
+    /**
+     * From MCandidateBuffer
+     * Set candidate buffer 
+     *
+     * @since S60 V4.0
+     * @param aCandidateData Candidate data
+     */        
+    IMPORT_C void SetCandidateL(const RPointerArray<HBufC>& aCandidateData);
+    
+protected:
+    /**
+     * Symbian second phrase constructor
+     *
+     * @since S60 V4.0
+     */
+    IMPORT_C void ConstructL();   
+    
+    /**
+     * From CFepUiBaseCtrl
+     * Handle pointer down event
+     *
+     * @since S60 V4.0
+     * @param aPoint The point position relative the layout
+     * @return The control which handles the event.     
+     */                                        
+    IMPORT_C virtual CFepUiBaseCtrl* HandlePointerDownEventL(const TPoint& aPoint);
+
+    /**
+     * From CFepUiBaseCtrl
+     * Handle pointer move event
+     *
+     * @since S60 V4.0
+     * @param aPoint The point position relative the layout
+     * @return The control which handles the event.     
+     */                  
+    IMPORT_C virtual CFepUiBaseCtrl* HandlePointerMoveEventL(const TPoint& aPoint);
+        
+    /**
+     * From CFepUiBaseCtrl
+     * Handle pointer up event
+     *
+     * @since S60 V4.0
+     * @param aPoint The point position relative the layout
+     * @return The control which handles the event.     
+     */                  
+    IMPORT_C virtual CFepUiBaseCtrl* HandlePointerUpEventL(const TPoint& aPoint);
+
+    
+private:
+    /**
+     * Constructor
+     *
+     * @since S60 V4.0
+     * @param aRect The rectangle area for this control
+     * @param aCandidateRectNum Number of candidates in one page
+     * @param aUiLayout Ui layout who contains this control.Ownership not transferred
+     * @param aControlId control Id
+     * @param aHideTimer Auto hide timer delay
+     */       
+    IMPORT_C CCandidateWnd(const TRect& aRect,TInt aCandidateRectNum,
+                            CFepUiLayout* aUiLayout, TInt aControlId,
+                               TTimeIntervalMicroSeconds32 aHideTimer);
+
+    /**
+     * 
+     * Draw indication candidate is selected
+     *
+     * @since S60 V4.0
+     * @param aSelection The selection index
+     * @param aPressedFlag The flag indicates whether the pointer is pressed.
+     *        Default value is ETrue, show pressed effect
+     */    
+    void DrawIndication(TInt aSelection, TBool aPressedFlag = ETrue);
+    
+private:
+    /**
+     * Number of candiate rect in one page line
+     */
+    TInt iCandidateRectNum;
+    
+    /**
+     * Selection index. From 0 to iCandiateRectNum - 1
+     */
+    TInt iSelection;
+    
+    /** 
+     * Auto hide flag. When true, the candidate window will hide if no candidate in list 
+     */
+    TBool iAutoHide;
+       
+    /**
+     * Hide timer delay
+     */
+    TTimeIntervalMicroSeconds32  iDelay;
+    
+    /**
+     * Font information 
+     */
+    TFontSpec iFontSpec;
+
+    /**
+     * Candidate rects for each candidate. Valid rect for pen event
+     */
+    RArray<TRect> iCandidateRectList;
+    
+    /**
+     * Candidate text drawing rects for each candidate.
+     */
+    RArray<TRect> iCandidateTextRectList;    
+    
+    /**
+     * Candidate data
+     */
+    RPointerArray<HBufC> iCandidateList;
+    
+    /**
+     * Baseline for candidate drawing
+     */
+    TInt iBaseline;
+    
+    /**
+     * Hide timer
+     * Ownd
+     */
+    CLayoutTimer* iHideTimer;
+     
+     /** 
+      * Font object used to draw candiates
+      * Ownd
+      */
+     CFont* iFont;
+
+    /**
+     *  Flag ownership flag. ETrue if CFont object is owned by this control.
+     */
+    TBool iFontOwnership;
+
+    /**
+     * Indicate whether the pointer has leaved a candidate cell
+     */    
+    TBool iPointerLeftCandidate;
+    
+    /**
+     * Reserved item1
+     */
+     TInt iReserved1;
+     
+    /**
+     * Reserved item2
+     */
+     TInt iReserved2;    
+    };
+#include "peninputlayoutcandidatewnd.inl"    
+#endif //C_CCANDIDATEWND_H
+//end of CCandidateWindow