diff -r ebd48d2de13c -r ecbabf52600f fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/inc/AknFepUIAvkonCtrlContainerChinese.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/inc/AknFepUIAvkonCtrlContainerChinese.h Wed Sep 01 12:23:33 2010 +0100 @@ -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 +#include +#include + +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 +