textinput/peninputcommonctrlsjp/inc/peninputjapanesepredictivewnd.h
branchRCL_3
changeset 21 ecbabf52600f
parent 0 eb1f2e154e89
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/textinput/peninputcommonctrlsjp/inc/peninputjapanesepredictivewnd.h	Wed Sep 01 12:23:33 2010 +0100
@@ -0,0 +1,323 @@
+/*
+* Copyright (c) 2002-2007 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:  Predictive Window
+*
+*/
+
+#ifndef C_CPENINPUTJAPANESEPREDICTIVEWND_H
+#define C_CPENINPUTJAPANESEPREDICTIVEWND_H
+
+#include <eiklbo.h>
+#include <peninputlayoutpopupwnd.h>
+#include "peninputjapanesepredictivelistboxmodel.h"
+                // TypeDef:CPredictivePopupLineInfoArray,CPredictivePopupElementArray
+
+class CPeninputJapanesePredictiveListBox;
+class CTextListBoxModel;
+class CAknFepCtrlEventButton;
+
+class CPeninputJapanesePredictiveWnd: public CFepLayoutPopupWnd,
+                     public MEikListBoxObserver,
+                     public MEventObserver
+    {
+    public: // Constructors and destructor
+
+    enum TPeninputUICtrlScroll
+        {
+        EScrollNone,
+        EScrollLeft,
+        EScrollRight,
+        EScrollUp,
+        EScrollDown
+        };
+        /**
+        * Two-phased constructor.
+        */
+        IMPORT_C static CPeninputJapanesePredictiveWnd* NewL(CFepUiLayout* aUiLayout,
+                                                          TInt aControlId, const CCoeControl* aParent);
+
+        /**
+        * Destructor.
+        */
+        virtual ~CPeninputJapanesePredictiveWnd();
+
+        //from base control CFepUiBaseCtrl
+        /**
+         * From CFepUiBaseCtrl
+         * Set control's rectangle
+         *
+         * @since S60 V4.0
+         * @param aRect The new control area
+         */
+        IMPORT_C virtual void SetRect(const TRect& aRect);
+
+        /**
+         * From CFepUiBaseCtrl
+         * Set control's rectangle
+         *
+         * @since S60 V4.0
+         * @param aFlag ETrue if want to hide the control.
+         */
+         virtual void Hide(TBool aFlag);
+
+        /**
+        * set scroll up/down button
+        * @since 2.6
+        * @param aScrollUpBtn
+        * @param aScrollDownBtn
+        */
+        void SetButtons(CAknFepCtrlEventButton* aScrollUpBtn, CAknFepCtrlEventButton* aScrollDownBtn);
+
+        /**
+        * Specify the cursor position of a pop-up list
+        * @since 2.6
+        * @param aItemIndex  The index of the cursor position
+        */
+        void SetCurrentItemIndex(TInt aItemIndex) const;
+
+        /**
+         * From MEventObserver
+         * Handle control event
+         *
+         * @since S60 v3.2
+         * @param aEventType The event type
+         * @param aCtrl The control who sends the event
+         * @param aEventData The event data
+         * @return None
+         */
+        void HandleControlEvent( TInt aEventType,
+                                     CFepUiBaseCtrl* aCtrl,
+                                     const TDesC& aEventData );
+
+        /**
+        * From MAknFepUICtrlPredictivePaneInterface
+        * Show candidate list popup window
+        * @since 2.6
+        * @param aItems     array of candidate list
+        * @param aIndex     selecting number when displaying
+        * 
+        */
+        void ShowPopupL(const CDesCArrayFlat* aItems, TInt aIndex);
+
+        /**
+        * From MAknFepUICtrlPredictivePaneInterface
+        * Hide candidate list popup window
+        * @since 2.6
+        * @param aItems     array of candidate list
+        * 
+        */
+        void HidePopup();
+
+        /**
+        * Return a selected candidate item number currently
+        * @since 2.6
+        */
+        TInt CurrentItemIndexOfCandidate() const;
+
+        /**
+        * @param aData Carry information of key pressed
+        * @since 2.6
+        * 
+        */
+        void MoveTo(TPeninputUICtrlScroll aDirection);
+
+        /**
+        * Update Size
+        * @param aWidth
+        * @param aUnitWidth
+        * @param aUnitHeight
+        */
+        void SizeChanged(TInt aWidth, TInt aUnitWidth, TInt aUnitHeight);
+
+        /**
+         * Get item whose region contains the point.
+         *
+         * @since S60 V4.0
+         * @param aPoint The point position the layout
+         * @return The index of choice item. -1 if no item contains
+         *         the point
+         */
+         TInt HitTest(const TPoint& aPoint);
+
+        /**
+         * Handle pointer down event
+         *
+         * @since S60 V4.0
+         * @param aPoint The point position relative the layout
+         * @return The control which handles the event.
+         */
+        virtual CFepUiBaseCtrl* HandlePointerDownEventL(const TPoint& aPoint);
+
+        /**
+         * Handle pointer move event
+         *
+         * @since S60 V4.0
+         * @param aPoint The point position relative the layout
+         * @return The control which handles the event.
+         */
+        virtual CFepUiBaseCtrl* HandlePointerMoveEventL(const TPoint& aPoint);
+
+        /**
+         * Handle pointer up event
+         *
+         * @since S60 V4.0
+         * @param aPoint The point position relative the layout
+         * @return The control which handles the event.
+         */
+        virtual CFepUiBaseCtrl* HandlePointerUpEventL(const TPoint& aPoint);
+
+        // from MEikListBoxObserver 
+        virtual void HandleListBoxEventL(CEikListBox* aListBox, TListBoxEvent aEventType);
+
+        /**
+        * Set linecount
+        *
+        */
+        void SetLineCount(TInt aLineCount);
+
+        /**
+        * called when listbox updated
+        * @param aRect  Rectangle in which the Cone framework believes drawing
+        *               is needed
+        */
+        void ReDraw();
+
+        /**
+         * Cancel repeat
+         *
+         * @since S60 v3.2
+         * @return None
+         */
+        void CancelRepeat();
+
+        /**
+        * @return  listbox control
+        * @since 2.6
+        */
+        CPeninputJapanesePredictiveListBox* ListBox() const;
+
+    /**
+     * From CFepUiBaseCtrl
+     * DeActivate popup window
+     *
+     * @since S60 V4.0
+     */ 
+    void OnDeActivate();
+
+    protected:
+
+        /**
+         * Constructor.
+         *
+         * @since S60 V4.0
+         * @param aUiLayout Ui layout who contains this control.Ownership not transferred
+         * @param aControlId control Id
+         */                  
+        CPeninputJapanesePredictiveWnd(CFepUiLayout* aUiLayout,
+                                      TInt aControlId);
+
+    private:
+        /**
+        * Symbian 2nd phase constructor can leave.
+        */
+        void ConstructL(const CCoeControl* aParent);
+
+        /**
+        * Setup array with line information in candidate list
+        * @since 2.6
+        * @param aItems                     array with candidate string
+        * @param aMaxDisplayWidthInPixel    maximum width in pixel
+        * @param aFontId                    font id
+        */
+        void CreatePredictivePopupLineInfoArrayL(const CDesCArrayFlat* aItems,
+                                            const TInt aMaxDisplayWidthInPixel,
+                                            const TInt aFontId);
+
+        /**
+        * Append to array with line information
+        * @since 2.6
+        * @param aLineText      string to show in a line
+        * @param aElementArray  array with element information
+        */
+        void PredictivePopupAppendLineL(const TPtr& aLineText,
+                                   CPredictivePopupElementArray* aElementArray);
+
+        /**
+        * Create arrary with string to show in a line
+        * @since 2.6
+        * @param aLineArray     arrary with line information
+        * @return   string array
+        */
+        void CreateListTextArrayL(const CPredictivePopupLineInfoArray& aLineArray);
+
+        /**
+        * Called by the framework to draw the control
+        */
+        void Draw();
+
+        /**
+        * called when prediction pane is not active
+        */
+        void ClearList();
+
+        /**
+        * activateButtons or disactivate
+        */
+        void ActivateButtons(TBool aActive) const;
+
+    private:
+        /**
+        * listbox
+        * Own
+        */    
+        CPeninputJapanesePredictiveListBox* iListBox;
+
+        /**
+        * LineInfoArray
+        * Own
+        */    
+        CPredictivePopupLineInfoArray* iLineInfoArray;
+
+        /**
+        * ListTextArray
+        * Own
+        */    
+        CDesCArrayFlat* iListTextArray;
+
+        /**
+        * scroll up button
+        * Not Own
+        */    
+        CAknFepCtrlEventButton* iScrollUpBtn;
+
+        /**
+        * scroll down button
+        * Not Own
+        */    
+        CAknFepCtrlEventButton* iScrollDownBtn;
+
+        /**
+        * The unit width
+        */
+        TInt iUnitWidth;
+
+        /**
+        * The unit height
+        */
+        TInt iUnitHeight;
+    };
+
+#endif //C_CPENINPUTJAPANESEPREDICTIVEWND_H
+
+// End Of File