textinput/peninputhwrfscn/inc/peninputhwrfscncontrolbar.h
branchRCL_3
changeset 44 ecbabf52600f
parent 0 eb1f2e154e89
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/textinput/peninputhwrfscn/inc/peninputhwrfscncontrolbar.h	Wed Sep 01 12:23:33 2010 +0100
@@ -0,0 +1,629 @@
+/*
+* 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:  Implementation for chinese peninput full screen hwr
+*
+*/
+
+
+#ifndef __PENINPUTHWRFSCNCONTROLBAR_H__
+#define __PENINPUTHWRFSCNCONTROLBAR_H__
+
+#include <aknfeppeninputenums.h>
+
+
+#include "peninputhwrfscnbasepanel.h"
+#include "peninputbutton.h"
+#include "peninputrepeatbutton.h"
+#include "peninputmultiimagebutton.h"
+#include "peninputlayoutlatchbutton.h"
+#include "peninputhwrfscnfunctionpanel.h"
+#include "peninputlayoutctrlgroup.h"
+
+class CPeninputLayoutInputmodelChoice;
+class CAknFepCtrlCommonButton;
+/**
+* Class CPeninputHwrfscnControlBar
+*
+* Define the control bar panel and contain controlbar buttongroup and function panel
+*
+* @lib peninputhwrfscn.lib
+* @since S60 v5.0
+*/
+class CPeninputHwrfscnControlBar : public CPeninputHwrfscnBasePanel
+	{
+public:
+    /**
+    * The factory function
+    *
+    * @since Series 60 5.0
+    * @param aLayout The Full screen layout
+    * @return Pointer to created CPeninputHwrfscnControlBar object
+    */
+	static CPeninputHwrfscnControlBar* NewL( CPeninputHwrfscnLayout* aLayout );
+
+    /**
+    * The destructor function
+    *
+    * @since Series 60 5.0
+    */
+    ~CPeninputHwrfscnControlBar();
+
+public:// From base class
+
+    /**
+    * From CPeninputHwrfscnBasePanel
+    * Show controls
+    *
+    * @since Series 60 5.0
+    * @param aVisible Show or hide
+    */
+	void Show( TBool aVisible );
+
+    /**
+    * From CPeninputHwrfscnBasePanel
+    * Draw
+    *
+    * @since Series 60 5.0
+    */
+	virtual void Draw();
+
+    /**
+    * Handle control's event
+    *
+    * @since Series 60 5.0
+    * @param aEventType Event type
+    * @param aCtrl Event source
+    * @param aEventData event data
+    */
+	virtual void HandleControlEvent( TInt aEventType, 
+	    CFepUiBaseCtrl* aCtrl, 
+	    const TDesC& aEventData );
+
+    /**
+    * Handle layout command
+    *
+    * @since Series 60 5.0
+    * @param aCommand command type
+    * @param aData Event data
+    */
+	virtual void HandleCommand( TInt aCommand, TUint8* aData );
+
+    /**
+    * From CPeninputHwrfscnBasePanel
+    * Check if the property could be changed before changing it.
+    *
+    * @since S60 v5.0
+    * @param aProperty One of @see TPeninputHwrfscnProperty changed
+    * @return TBool ETrue if the property needed to be changed, EFalse otherwise
+    */
+    virtual TBool BeforePropertyChangedL( 
+        MPeninputHwrfscnPropertySubscriber::TPeninputHwrfscnProperty aProptery);
+
+	/**
+    * From CPeninputHwrfscnBasePanel
+	* Notify the property subscriber the property changed.
+	*
+	* @since S60 v5.0
+	* @param aProperty One of @see TPeninputHwrfscnProperty changed
+	*/
+    virtual void PropertyChangedL(
+        MPeninputHwrfscnPropertySubscriber::TPeninputHwrfscnProperty aProptery);
+
+
+    /**
+    * From CPeninputHwrfscnBasePanel
+    * Handle size changed.
+    *
+    * @since S60 v5.0
+    */
+    void SizeChanged();
+    
+    /**
+    * 
+    * Handle skin changed.
+    *
+    * @since S60 v5.0
+    */    
+    void HandleSkinChanged();
+    
+    /**
+    * 
+    * Set enable setting button.
+    *
+    * @since S60 v5.0
+    * @param aEnable
+    */    
+    void SetEnableSettingBtn(TBool aEnable);
+
+private:
+    /**
+    * The latch picture index
+    */
+    enum TLatchPicIndex
+        {
+        ELatchPicError = -1,
+        ELatchPicMoreFunc = 0,
+        ELatchPicChineseButton,
+        ELatchPicEnglishButton,
+        ELatchPicNumberButton,
+        ELatchPicCount        
+        };
+    
+    /**
+    * Save the latched and unlatche pictures pointers
+    */
+    struct TLatchedPic
+        {
+        CFbsBitmap* iSvgLatchedBMP;
+        CFbsBitmap* iSvgUnLatchedBMP;
+        };
+                
+private:
+   /**
+    * The constructor
+    *
+    * @since Series 60 5.0
+    * @param aLayout The layout pointer.
+    */
+    CPeninputHwrfscnControlBar( CPeninputHwrfscnLayout* aLayout );
+
+    /**
+    * 2nd phase constructor
+    *
+    * @since Series 60 5.0
+    */
+	void ConstructL();
+
+    /**
+    * From CPeninputHwrfscnBasePanel
+    * Handle laf (Look and feel) changed
+    *
+    * @since S60 v5.0
+    */
+    void LafChanged();
+
+    /**
+    * Handle control's button up event
+    *
+    * @since Series 60 5.0
+    * @param aEventType Event type
+    * @param aCtrl Event source
+    * @param aEventData event data
+    */
+    void OnControlEvent_ButtonUp(
+        TInt aEventType, 
+        CFepUiBaseCtrl* aCtrl, 
+	    const TDesC& aEventData );
+
+    /**
+    * Handle control's button down event
+    *
+    * @since Series 60 5.0
+    * @param aEventType Event type
+    * @param aCtrl Event source
+    * @param aEventData event data
+    */
+    void OnControlEvent_ButtonDown(
+        TInt aEventType, 
+        CFepUiBaseCtrl* aCtrl, 
+        const TDesC& aEventData );
+
+    /**
+    * Create close button group
+    *
+    * @since Series 60 5.0
+    */
+    void CreateCloseBtnL( );
+
+    /**
+    * Create option button group
+    *
+    * @since Series 60 5.0
+    */
+    void CreateOptionBtnL( );
+    
+    /**
+    * Create vkb switcher button group
+    *
+    * @since Series 60 5.0
+    */
+    void CreateVkbSwitcherBtnL( );
+    
+    /**
+    * Create Range switch button group
+    *
+    * @since Series 60 5.0
+    */
+    void CreateRangeSwitchBtnGroupL();
+
+    /**
+    * Create Range switch cover button group
+    *
+    * @since Series 60 5.0
+    */
+    void CreateRangeSwitchCoverBtnGroupL();
+
+    /**
+    * Create more function button
+    *
+    * @since Series 60 5.0
+    */
+    void CreateMoreFuncBtnL();
+
+    /**
+    * Create more function panel
+    *
+    * @since Series 60 5.0
+    */
+    void CreateMoreFuncPanelL();
+
+    /**
+    * Create backspace function button
+    *
+    * @since Series 60 5.0
+    */
+    void CreateBackSpaceBtnL();
+
+    /**
+    * Create latched button
+    *
+    * @since Series 60 5.0
+    * @param aRect button rectangle
+    * @param aCtrlId control ID
+    * @param aLatchedPicID latched picture ID
+    * @param aUnLatchedID unlatched picture ID
+    * @return newly created button
+    */
+    CAknFepCtrlCommonButton* CreateLatchedBtnLC( const TRect aRect,
+        TInt aCtrlId,
+        TInt aLatchedPicID,
+        TInt aUnLatchedID );
+
+    /**
+    * Create latched button
+    *
+    * @since Series 60 5.0
+    * @param aRect button rectangle
+    * @param aCtrlId control ID
+    * @param aResID resource ID
+    * @return newly created button
+    */
+    CAknFepCtrlCommonButton* CreateNormalBtnLC( const TRect aRect, 
+        TInt aCtrlId, 
+        TInt aResID );
+
+    /**
+    * Close Range switch list
+    *
+    * @since Series 60 5.0
+    */
+    void CloseRangeSwitchList();
+   
+   /**
+    * Hide cover range swith buttons
+    *
+    * @since Series 60 5.0
+    */
+    void HideCoverRangeSwitchBtns();
+    
+    /**
+    * Hide range swith buttons
+    *
+    * @since Series 60 5.0
+    */
+    void HideRangeSwitchBtns( TBool aHide );
+    
+    /**
+    * Set active cover range button
+    *
+    * @since Series 60 5.0
+    */
+    void SetActiveCoverRangeBtn();
+    
+    /**
+    * Remove all buttons on range and cover range list
+    *
+    * @since Series 60 5.0
+    */
+    void RemoveAllSwitchBtns();
+    
+    /**
+    * Set the range switch buttons to be latched
+    *
+    * @since Series 60 5.0
+    */
+    void ShowRangeSwitchBtnsLatched();
+    
+    /**
+    * Open Range switch list
+    *
+    * @since Series 60 5.0
+    */
+    void OpenRangeSwitchList();
+
+    /**
+    * Switch more function list
+    * 
+    * @since Series 60 5.0
+    * @param aShowNow ETrue if the function panel need be shown or EFalse otherwise
+    */
+    void ShowMoreFuncList( TBool aShowNow );
+
+    /**
+    * Click is in the Range switch group
+    *
+    * @since Series 60 5.0
+    * @param aCtrl event source control
+    */
+    TBool ClickIsInRangeSwitchGrp( CFepUiBaseCtrl* aCtrl );
+
+    /**
+    * Update Range swtich list
+    *
+    * @since Series 60 5.0
+    */
+    void UpdateRangeSwitchL();
+
+    /**
+    * Update convered Range swtich list
+    *
+    * @since Series 60 5.0
+    */
+    void UpdateCoverRangeSwitchL();
+    
+    /**
+    * Update convered Range swtich without mark picture
+    *
+    * @since Series 60 5.0
+    */
+    void UpdateWithoutMarkL();
+    
+    /**
+    * Update convered Range swtich with mark picture
+    *
+    * @since Series 60 5.0
+    */
+    void UpdateWithMarkL();
+    
+    /**
+    * Get current active Range
+    *
+    * @since Series 60 5.0
+    */
+    TInt ActiveRangeIndex();
+
+    /**
+    * Update current active Range list
+    *
+    * @since Series 60 5.0
+    */
+    void UpdateCurrentActiveRangeList();
+
+    /**
+    * Update current active Range
+    *
+    * @since Series 60 5.0
+    */
+    void UpdateCurrentActiveRange(); 
+
+    /**
+    * Get event type by the control ID
+    *
+    * @since Series 60 5.0
+    * @param aCtrlId control ID
+    * @return Event type
+    */
+    TInt EventTypeByCtrlId(TInt aCtrlId);
+
+	/**
+	* Get Latched pic pointer based on the control ID
+	*
+	* @since Series 60 5.0
+	* @param aCtrlId control ID
+	* @param aIndex The latched picture index
+	*/
+    void GetLatchedIndexByCtrlID( TInt aCtrlID, TLatchPicIndex& aIndex );
+
+	/**
+	* Read LAF information
+	*
+	* @since Series 60 5.0
+	*/
+    void ReadLAFInfo();
+
+	/**
+	* Reset Cover Range switch button size
+	*
+	* @since Series 60 5.0
+	*/
+	void ResetCoverRangeSwitchSize();
+
+	/**
+	* Reset Range switch button size
+	*
+	* @since Series 60 5.0
+	*/
+	void ResetRangeSwitchSize();
+
+	/**
+	* Reset More function button size
+	*
+	* @since Series 60 5.0
+	*/
+	void ResetMoreFuncBtnSize();
+
+	/**
+	* Reset back space button size
+	*
+	* @since Series 60 5.0
+	*/
+	void ResetBackSpaceBtnSize();
+	
+	/**
+	* Reset close, option, vkbswitcher button size
+	*
+	* @since Series 60 5.0
+	*/
+	void ResetControlBarBtnSize( );
+
+	/**
+	* Get more cover Range switch button rectangle
+	*
+	* @since Series 60 5.0
+	* @return cover Range switch button rectangle
+	*/
+	TRect CoverRangeSwitchRect();
+
+	/**
+	* Get more Range switch buttons rectangle
+	*
+	* @since Series 60 5.0
+	* @return Range switch buttons rectangle
+	*/
+	TRect RangeSwitchBtnRect(TInt aIndex);
+
+	/**
+	* Get more function button rectangle
+	*
+	* @since Series 60 5.0
+	* @return more function button rectangle
+	*/
+	TRect MoreFuncBtnRect();
+
+	/**
+	* Get back space button rectangle
+	*
+	* @since Series 60 5.0
+	* @return back space button rectangle
+	*/
+	TRect BackSpaceBtnRect();
+	
+	/**
+	* Get back space button rectangle
+	*
+	* @since Series 60 5.0
+	* @return back space button rectangle
+	*/
+	TRect ControlBarBtnRect( TInt aIndex );
+
+private:
+    enum TPeninputHwrfscnControlBarGrp
+        {
+        //This definition is used for more function btn
+        ECloseBtn = 0,
+        EOptionBtn,
+        EVkbSwitcherBtn,
+        EControlBarBtnCount
+        };
+
+
+private:
+	/**
+	* The function panel pointer
+	* Own
+	*/
+    CPeninputHwrfscnFunctionPanel* iFunctionPanel;
+
+	/**
+	* Back space button
+	* Not own
+	*/
+    CAknFepCtrlRepeatButton* iBackSpaceBtn;
+
+	/**
+	* More function button
+	* Not own
+	*/
+    CAknFepCtrlCommonButton* iMoreFuncBtn;
+
+	/**
+	* Range switch button group
+	* Not own
+	*/
+    CControlGroup* iRangeSwitchBtnGroup;    
+
+	/**
+	* Cover Range switch button group
+	* Not own
+	*/
+    CControlGroup* iCoverRangeSwitchBtnGroup;
+    
+	/**
+	* Close button
+	* Not own
+	*/
+    CAknFepCtrlEventButton* iCloseBtn;
+    
+	/**
+	* Option button
+	* Not own
+	*/
+    CAknFepCtrlEventButton* iOptionBtn;
+    
+	/**
+	* Vkb switcher button
+	* Not own
+	*/
+    CAknFepCtrlEventButton* iVkbSwitcherBtn;   
+
+	/**
+	* Pen input mode switcher (own)
+	*/
+    CPeninputLayoutInputmodelChoice* iInputModeSwitch;
+
+	/**
+	* Range switch list shown or not
+	*/
+    TBool iRangeSwitchExpanded;
+
+	/**
+	* Current active Range
+	*/
+    TAknFepPenInputRange iCurrentActiveRange;
+
+	/**
+	* Current Range list
+	* Own
+	*/
+    RArray<TInt> iCurrentRangeList;
+    
+	/**
+	* Latch pictures
+	*/
+    TLatchedPic iLatchedBtnPic[ELatchPicCount];
+    
+	/**
+	* Button width
+	*/
+    TInt iUnitWidth;
+
+	/**
+	* Button height
+	*/
+    TInt iUnitHeight;
+    
+    /**
+     * background window for close,option,switch button
+     * not own.
+     */
+    CControlGroup* iBkgndWnd1;
+    
+    /**
+     * background window for more,backspace button.
+     * not own.
+     */
+    CControlGroup* iBkgndWnd2;
+	};
+
+#endif //__PENINPUTHWRFSCNCONTROLBAR_H__
\ No newline at end of file