fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/inc/AknFepUIAvkonCtrlContainerChinese.h
changeset 0 eb1f2e154e89
child 50 5a1685599b76
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/inc/AknFepUIAvkonCtrlContainerChinese.h	Tue Feb 02 01:02:04 2010 +0200
@@ -0,0 +1,344 @@
+/*
+* Copyright (c) 2002-2004 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:           
+*       Provides the CAknFepUICtrlContainerChinese definition.
+*
+*/
+
+
+
+
+
+
+
+
+
+
+
+#ifndef __AKN_FEP_UI_AVKON_CONTAINER_CHINESE_H__
+#define __AKN_FEP_UI_AVKON_CONTAINER_CHINESE_H__
+
+#include <AknFepUiCtrlContainerChinese.h>
+#include <coecntrl.h>
+#include <AknUtils.h>
+
+class CAknsFrameBackgroundControlContext;
+class CAknFepUICtrlInputPane;
+class CAknFepUICtrlCandidatePane;
+class CAknFepUICtrlPinyinPopup;
+class CAknFepUICtrlPinyinEEP;
+class MAknFepManagerUIInterface;
+class CAknFepUiLayoutDataMgr;
+
+class MAknFepUICtrlPinyinPopupSizeChangedObserver
+    {
+public:
+    /// this is called when the selection popup changes size
+    virtual void SelectionPopupSizeChanged(TInt aNumLines) = 0;
+
+    /// this is called when the popup is enabled
+    virtual void SelectionPopupEnabled(TBool aEnabled) = 0;
+    };
+
+NONSHARABLE_CLASS(CAknFepUICtrlContainerChinese)
+    : 
+    public CCoeControl, 
+    public MAknFepUICtrlPinyinPopupSizeChangedObserver,
+    public MAknFepUICtrlContainerChinese
+{
+public:
+    /**
+     * first phase construction
+     */
+    static CAknFepUICtrlContainerChinese* NewL();
+
+    /**
+     * destructor
+     */
+    ~CAknFepUICtrlContainerChinese();
+
+    /**
+     * get the input pane
+     *
+     * @return pointer to the input pane, ownership is not passed
+     */
+    MAknFepUICtrlInputPane* InputPane() const;
+
+    /**
+     * get the candidate pane
+     *
+     * @return pointer to the candidate pane, ownership is not passed
+     */
+    MAknFepUICtrlCandidatePane* CandidatePane() const;
+
+    /**
+     * get the phrase pinyin popup window 
+     *
+     * @return pointer to the phrase popup window, ownership is not passed
+     */
+    MAknFepUICtrlPinyinPopup* PinyinPopupWindow() const;
+
+    /**
+     * 
+     * get the pinyin phrase creation popup window 
+     * 
+     * @return pointer to the pinyin phrase popup window, ownership is not passed
+    */
+    MAknFepUICtrlEditPane* EditPaneWindow() const;    
+    
+    /**
+     * Is the control displayed on the screen?
+     *
+     * @return if not enabled, returns EFalse
+     *
+     */
+    TBool IsEnabled() const;
+	 /**
+     * Enables the display of the control. Sets the control's 
+     * window postion and visibility, but only if the value has
+     * changed (so it's ok to call it excessively). 
+     *
+     * @param aEnable if ETrue, makes visible
+     *                          if EFalse, makes non-visible
+     *
+     */
+    void Enable(TBool aEnable);
+
+    /**
+     * Arrange the constituent panes into the correct proportions for 
+     * the required layout. 
+     *
+     * @param aPaneLayout the required layout
+     *
+     */
+    void SetLayout(TPaneLayout aPaneLayout);
+ 
+
+    /**
+     * Set the Highlight to the desired control.
+     *
+     * @param aValue if aValue is ETrue set the focus to the Candidate Pane.
+     *                          if aValue is EFalse set focus to the Chinese Input Pane 
+     */
+    void FocusCandidatePane(TBool aValue);
+
+    /**
+     * enable/disable the rendering of the Horizontal Scroll Arrows. 
+     *
+     * @param aValue if ETrue, enable the arrows
+     *                          if EFalse, disable the arrrows
+     */
+    void ShowHorizontalScrollArrows(TBool aValue);
+    
+    /**
+     * enable/disable the rendering of the Vertical Scroll Arrows. 
+     *
+     * @param aValue if ETrue, enable the arrows
+     *                          if EFalse, disable the arrrows
+     */
+    void ShowVerticalScrollArrows(TBool aValue);
+
+    /**
+     * Call this method if the fep is being displayed for a control that is 
+     * contained in a popup window (i.e. a Query). It changes the layout 
+     * of the container.
+     *
+     * @param aValue if ETrue, use the layout for display with a query
+     *                          if EFalse, use the normal layout
+     */
+    void SetIsShownWithPopupWindows(TBool aValue);
+
+     /**
+     * This function sets cursor position.
+     *
+     * @param aCurPos containing the cursor position 
+     * @param aHeight containing font height
+     */
+    void SetContainerPosition(TPoint aCurPos,TInt aHeight);
+    
+    /**
+     * Set Candidate and pinyin popup invisible
+     *
+     */
+    void SetControlInVisible( TBool aVisible ); 
+    
+    /**
+     * Set the state to phrase creation
+     */
+    void PhraseCreation( TBool aPhraseCreation );
+    
+    /**
+     * Is the state is in phrase creation
+     *
+     * @return if not enabled, return EFalse
+     */
+    TInt& IsPhraseCreation();
+    
+    /**
+     * Set FepMan
+     *
+     * @return if not enabled, return EFalse
+     */
+    void SetFepMan( MAknFepManagerUIInterface* aFepMan );
+
+public: // from CCoeControl
+
+    /**
+     * size changed
+     */
+    virtual void SizeChanged();
+
+    /**
+     * count component controls
+     *
+     * @return number of contained controls
+     */
+    TInt CountComponentControls() const;
+
+    /**
+     * Component control
+     *
+     * @param aIndex the control to return, must be between 0 and the number of controls
+     * @return pointer to contained control, ownership is not passed
+     * 
+     */
+    CCoeControl* ComponentControl(TInt aIndex) const;
+
+    /**
+     * draw
+     *
+     * @param aRect rectangle
+     *
+     */
+    virtual void Draw(const TRect& aRect) const;
+
+    virtual void HandleResourceChange(TInt aType); 
+	
+protected: // From CCoeControl
+    TTypeUid::Ptr MopSupplyObject(TTypeUid aId);
+
+public: // from MAknFepUICtrlPinyinPopupSizeChangedObserver
+
+    /**
+     * called when the popup window changes size, so that it can be 
+     * laid out correctly
+     *
+     * @param aNumLines the number of visible lines
+     */
+    void SelectionPopupSizeChanged(TInt aNumLines);
+
+    /**
+     * the popup has been enabled or disabled, so change layout where necessary 
+     *
+     * @param aEnabled ETrue if popup has been enabled
+     *                              EFalse if popup has been disabled
+     */
+    void SelectionPopupEnabled(TBool aEnabled);
+protected:
+
+    /**
+     * second phase construction
+     */
+    void ConstructL();
+
+    /**
+     * constructor
+     */
+    CAknFepUICtrlContainerChinese();
+
+    /**
+     * layout this control relative to the control pane (aka the CBA).
+     */
+    void LayoutContainer();
+    /**
+     * layout the rectangles
+     */
+    void LayoutRects();
+	/**
+     * layout entry pane
+     */
+	void LayoutInputPane();
+    /**
+     * layout contained controls
+     */
+    void LayoutContainedControls();
+
+    /**
+     * layout the popup window
+     */
+    void LayoutPinyinPopupWindow();
+    
+    /**
+     * layout the EEP window
+     */
+    void LayoutPinyinEEPWindow();
+
+    /**
+     * set control vilisibilty, according to the current pane layout
+     */
+    void SetControlVisibility();
+
+    /**
+     * return the layout as an index that can be passed to the 
+     * layout dll 
+     *
+     * @return index into layout macro
+     */
+    TInt ConvertLayoutToIndex() const;
+
+    /**
+     * layout the background frames
+     */
+	void LayoutFrames();
+
+    /**
+     * layout the background frames
+	 *
+	 * @param aOuterRect filled with outer rect coords
+	 * @param aInnerRect filled with inner rect coords
+	 *
+     */
+	void CalculateFrameRects(TRect& aOuterRect, TRect& aInnerRect) const;    
+
+private:
+    CAknFepUiLayoutDataMgr* iLafDataMgr;
+    CAknFepUICtrlInputPane* iInputPane;
+    CAknFepUICtrlCandidatePane* iCandidatePane;
+	CAknFepUICtrlPinyinPopup* iPinyinPopupWindow;
+	CAknFepUICtrlPinyinEEP* iEditPane;
+	CAknsFrameBackgroundControlContext* iBgContext; 
+
+private:
+	TBool iEnabled;
+	TPaneLayout iPaneLayout;
+    TBool iIsShownWithPopupWindows;
+	// input pane
+	TAknLayoutRect iRectCoverMainPaneInput;
+    TAknLayoutRect iRectFirstShadowInput;
+    TAknLayoutRect iRectOutlineFrameInput;
+    TAknLayoutRect iRectInsideAreaInput;
+    TAknLayoutRect iHorizLine; //line between input pane and candidate pane
+    TAknLayoutRect iEEPFirstHorizLine; //line between input pane and EEP pane
+    TAknLayoutRect iEEPSecondHorizLine;////line between input pane and candidate pane when EEP exist
+    TPoint iContainerPosition;
+    TBool isPCLPosed;
+    TBool iPhraseCreationLaf;
+    
+    TInt iPhraseCreation;
+    MAknFepManagerUIInterface* iFepMan;
+};
+#endif  // __AKN_FEP_UI_AVKON_CONTAINER_CHINESE_H__
+
+// End of file
+