textinput/peninputcommonlayout/src/peninputlayoutwindowext.cpp
changeset 27 694fa80c203c
parent 24 fc42a86c98e3
child 35 0f326f2e628e
--- a/textinput/peninputcommonlayout/src/peninputlayoutwindowext.cpp	Wed Jun 23 04:57:58 2010 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1829 +0,0 @@
-/*
-* Copyright (c) 2002-2005 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:  common layout window for UI interface of VKB and HWR
-*
-*/
-
-
-// System includes
-#include <coemain.h>
-
-#include <AknFepGlobalEnums.h>
-#include <aknfeppeninputenums.h>
-#include <peninputpluginutils.h>
-#include <peninputcmdparam.h>            // Use global signal
-#include <peninputlayoutmultilineicf.h>
-#include <peninputeventbutton.h>
-#include <peninputmultimodebutton.h>
-#include <peninputdragbutton.h>
-#include <peninputlayoutchoicelist.h>
-#include <peninputlayout.h>
-#include <peninputrangebar.h>
-#include <bautils.h>
-#include <AknIconUtils.h>
-#include <AknLayoutDef.h>
-#include <AknUtils.h>
-#include <aknlayoutscalable_avkon.cdl.h>
-#include <AknsUtils.h>
-//#include <peninputcmdparam.h>
-#include <aknFepVietnameseInputTables.h>
-
-// User includes
-#include "peninputdataconverter.h"
-#include "peninputrangebarinfo.h"
-#include "peninputlayoutwindowext.h"
-#include "peninputclientlayoutinfo.h"
-#include "peninputdataprovider.h"
-#include "peninputlayoutcontext.h"
-#include "peninputvkbctrlext.h"
-#include "peninputnumerickeymappingmgr.h"
-
-// Constants
-const TInt KIntLengthForByte = 8;
-const TInt KPeninputLayoutWindowUnitWidth = 12;
-const TInt KInvalidIndex = -1;
-
-//const TInt32 KInvalidResId = -1;
-//const TInt KInvalidImg = -1 ;
-const TUint32 KDefaultTextColor = 0x000000;
-const TUint32 KDefaultShadowTextColor = 0xffffff;
-//const TInt KNotSupportSkin = -1;
-
-const TInt KIntSizeToInt16 = 2;
-const TInt KMaxNumericString = 32;
-
-// ======== MEMBER FUNCTIONS ========
-
-// ------------------------------------------------------------------------
-// CPeninputLayoutWindowExt::CPeninputLayoutWindowExt
-// (other items were commented in a header)
-// ------------------------------------------------------------------------
-//
-EXPORT_C CPeninputLayoutWindowExt::CPeninputLayoutWindowExt( 
-    CFepUiLayout* aUiLayout, MPeninputLayoutContext* aLayoutContext )
-    : CAknFepCtrlBaseWindowExt( aUiLayout, EPeninutWindowCtrlIdBaseWindow ), 
-     iConfigInfo( NULL ), iLayoutContext( aLayoutContext ),
-    iLastUsedTotalColumns( KPeninputLayoutWindowUnitWidth ),
-    iFirstTimeConstruct( ETrue ),
-    iSwitchFontSet(EFalse),
-    iUnitSizeChange(EFalse)
-    { 
-    }
-
-// ---------------------------------------------------------------------------
-// CPeninputLayoutWindowExt::ConstructL
-// (other items were commented in a header)
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CPeninputLayoutWindowExt::ConstructL()
-    {
-    BaseConstructL();  
-
-    if( iLayoutContext->LayoutType() == EPluginInputModeVkb ||
-        iLayoutContext->LayoutType() == EPluginInputModeFSQ )
-        {
-        iVkbLayout = CAknFepCtrlVkbLayout::NewL(); 
-        }
-    else
-        {
-        iVkbLayout = NULL;
-        }
-        
-    CCoeEnv* coeEnv = CCoeEnv::Static();
-    	
-    // Set up resources
-    TFileName resFileName = GetWindowResFileName();
-    BaflUtils::NearestLanguageFile(coeEnv->FsSession(), resFileName );
-    iWinResId = coeEnv->AddResourceFileL( resFileName );
-        
-    //TResourceReader reader;
-    
-    //coeEnv->CreateResourceReaderLC( reader, GetWindowResId() );
-    SetResourceId( GetWindowResId() );
-    ConstructFromResourceL();
-    
-    if (!iKeyMappingMgr)
-        {
-        // if key mapping mgr is not constructed in ConstructFromResourceL, need to 
-        // construct it here
-        TResourceReader resReader;
-        CCoeEnv::Static()->CreateResourceReaderLC(resReader, GetNumKeymappingResId());
-        iKeyMappingMgr = CPeninputNumericKepMappingMgr::NewL(resReader);
-        CleanupStack::PopAndDestroy(1);
-        }
-
-    CreateAllControlsL();
-    SetControlsFont();
-    }
-
-// ---------------------------------------------------------------------------
-// CPeninputLayoutWindowExt::~CPeninputLayoutWindowExt
-// (other items were commented in a header)
-// ---------------------------------------------------------------------------
-//
-EXPORT_C CPeninputLayoutWindowExt::~CPeninputLayoutWindowExt()
-    {
-    delete iConfigInfo;
-    delete iKeyMappingMgr;
-    delete iVkbLayout;    
-    // Delete resource file from CoeEnv
-    CCoeEnv::Static()->DeleteResourceFile( iWinResId );
-    
-    CCoeEnv::Static()->DeleteResourceFile( iConfigResId );
-    
-    delete iToneSet;   
-    }
-
-// ---------------------------------------------------------------------------
-// CPeninputLayoutWindowExt::SizeChanged
-// (other items were commented in a header)
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CPeninputLayoutWindowExt::SizeChanged( TBool /*aLandscapeStyle*/ )
-    {
-    iLangOrSizeChanged = ETrue;    
-    ReadLafForShadow();
-	ResetLastColRow();
-    
-    if ( iConfigInfo )
-        {        
-        ChangeClientSize();        
-        }
-        
-    //ReadLafForShadow( rect );
-    
-    TInt style = EPeninputPositionChangeBrJustify;
-    TBuf<KIntSizeToInt16> bufStyle;
-    bufStyle = ( TUint16* )&style;
-    HandleControlEvent(EPeninputLayoutEventMovePosition, NULL, bufStyle);           
-        
-    iLangOrSizeChanged = EFalse;
-    }
-
-// ---------------------------------------------------------------------------
-// CPeninputLayoutWindowExt::ReadLafForShadow
-// (other items were commented in a header).
-// ---------------------------------------------------------------------------
-//
-void CPeninputLayoutWindowExt::ReadLafForShadow()
-    {
-    TAknWindowLineLayout shadowPane;
-    TAknWindowLineLayout shadowTl;
-    TAknWindowLineLayout shadowBr;
-    TAknLayoutRect shadowRect;
-    TAknLayoutRect shadowTlRect;
-    TAknLayoutRect shadowBrRect;
-
-    shadowPane = AknLayoutScalable_Avkon::bg_popup_fep_shadow_pane(1).LayoutLine();
-    shadowRect.LayoutRect(TRect(), shadowPane);
-
-    shadowTl = AknLayoutScalable_Avkon::bg_popup_fep_shadow_pane_g1().LayoutLine();
-    shadowTlRect.LayoutRect(shadowRect.Rect(), shadowTl);
-
-    shadowBr = AknLayoutScalable_Avkon::bg_popup_fep_shadow_pane_g8().LayoutLine();
-    shadowBrRect.LayoutRect(shadowRect.Rect(), shadowBr);
-    
-    iShadowTlWidth = shadowTlRect.Rect().Size().iWidth;
-    iShadowTlHeight = shadowTlRect.Rect().Size().iHeight;
-    iShadowBrWidth = shadowBrRect.Rect().Size().iWidth;
-    iShadowBrHeight = shadowBrRect.Rect().Size().iHeight;
-    }
-    
-// ---------------------------------------------------------------------------
-// CPeninputLayoutWindowExt::SizeChanged
-// (other items were commented in a header).
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CPeninputLayoutWindowExt::SizeChangedForBaseWindow( TInt /*aTotalColumns*/ )
-    {
-    }
-// ---------------------------------------------------------------------------
-// CPeninputLayoutWindowExt::HandleControlEvent
-// (other items were commented in a header)
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CPeninputLayoutWindowExt::HandleControlEvent( TInt aEventType,
-    CFepUiBaseCtrl* aCtrl, const TDesC& aEventData )
-    {
-    // Call this function in base class
-    CAknFepCtrlBaseWindowExt::HandleControlEvent( aEventType, 
-        aCtrl, aEventData );
-    
-    TInt* data = ( TInt* ) aEventData.Ptr(); 
-    
-    switch ( aEventType )
-        {
-        case EEventButtonUp:
-        	{
-        	// check current range
-		    TInt curRange = CPeninputDataConverter::AnyToInt
-		        ( iLayoutContext->RequestData( EPeninputDataTypeCurrentRange ) );		    
-        	if( aCtrl->ControlId() == EPeninutWindowCtrlIdShiftBtn)
-	        	{
-	        	  if ( ( curRange == ERangeEnglish )  || ( curRange == ERangeAccent ) 
-        			   || ( ConfigInfo()->CaseSensitive() && ( curRange == ERangeNative ) ) )
-	        	  	{
-	        		CAknFepCtrlMultiModeButton* button = 
-					static_cast<CAknFepCtrlMultiModeButton*>( aCtrl );
-		        	TInt realCase = button->GetRealCaseByMode( button->CurrentMode() );	     	       		
-					HandleMergedBtnClicked( realCase );
-	        		}
-		       	else
-		       		{
-		       		HandleShiftAndCapslockBtnClicked();
-		       		TInt shiftStatus = CPeninputDataConverter::AnyToInt
-				        ( iLayoutContext->RequestData( EPeninputDataTypeShiftDown ) );
-				    ChangeMergedButtonStatus( shiftStatus, 0 );
-		       		}				
-	        	}
-
-        	}
-        	break;
-        case EPeninputLayoutEventSwitchLanguage:
-            {
-            TRAP_IGNORE( ChangeInputLanguageL( *data ) );                
-            }
-            break;
-        case EPeninputLayoutEventRange: 
-            {
-            HandleRangeEvent( *data );
-            }
-            break;
-        case EPeninputLayoutEventRangeLoop:
-            {
-            HandleRangeLoopEvent( *data );
-            }
-            break;
-        case EPeninputLayoutEventShift: 
-            {
-            HandleShiftAndCapslockBtnClicked();
-            }
-            break;
-        case EPeninputLayoutEventCapslock:
-            {
-            HandleCapslockBtnClicked();
-            } 
-            break;
-        case EPeninputLayoutEventMovePosition:
-            {
-            TInt style = *( ( TUint16* ) aEventData.Ptr() );
-            ChangeLayoutPosition( style );
-            }
-            break;
-        case EPeninputLayoutEventSetPermittedRange:
-            {
-            if ( *data & ERangeNative )
-                {
-                *data = *data | ERangeAccent | ERangeNativeNumber 
-                    | ERangeMixedText | ERangeMixedNumber;
-                }
-            else if(*data & ERangeEnglish)
-                {
-                *data = *data | ERangeAccent;
-                }
-
-            iLayoutContext->SetData( EPeninputDataTypePermittedRange, data );
-            
-            // Set range of range bar component
-            CFepUiBaseCtrl* bar = 
-                Control( EPeninutWindowCtrlIdRangeBar );
-            if ( bar ) 
-                {
-                CAknFepCtrlRangeBar* rangebar = 
-                    static_cast<CAknFepCtrlRangeBar*>( bar );
-                rangebar->SetPermittedRanges( *data );             
-                }                     
-            }
-            break;  
-        case EPeninputLayoutEventSetPermittedCase:
-            {
-            // Update data:case
-            iLayoutContext->SetData( EPeninputDataTypePermittedCase, data );
-            
-            // Set range of case
-            CFepUiBaseCtrl* bar = 
-                Control( EPeninutWindowCtrlIdRangeBar );
-            if ( bar ) 
-                {
-                CAknFepCtrlRangeBar* rangebar = 
-                    static_cast<CAknFepCtrlRangeBar*>( bar );
-            
-                rangebar->SetPermittedCase( ERangeEnglish, ECaseUpper, 
-                    ( *data & ECaseUpper) != 0 );
-                rangebar->SetPermittedCase( ERangeEnglish, ECaseLower, 
-                    ( *data & ECaseLower) != 0 );
-                rangebar->SetPermittedCase( ERangeEnglish, ECaseText, 
-                    ( *data & ECaseText) != 0 );
-                }
-            }
-            break;
-        case EPeninputLayoutEventSetCase:
-            {
-            DoCaseChange( *data );
-            }
-            break;
-        case EEventSizeChanged:
-            {
-            //if icf editor size changed, we need to inform owner
-            if(aCtrl->ControlId() == EPeninutWindowCtrlIdInputContextField ||  
-               aCtrl->ControlId() == EPeninputWindowCtrlIdMultiLineICF)
-                {
-                iLayoutContext->Sendkey( ESignalLayoutICFLengthChanged, KNullDesC );
-                }
-            }
-            break;
-        default:
-            break;
-        }   
-    }
-
-// ---------------------------------------------------------------------------
-// CPeninputLayoutWindowExt::SetEditorTextL
-// (other items were commented in a header)
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CPeninputLayoutWindowExt::SetEditorTextL( 
-    const TFepInputContextFieldData& aData )
-    {
-    if (Control(EPeninutWindowCtrlIdInputContextField))
-        {
-        static_cast<CFepInputContextField*>( Control(EPeninutWindowCtrlIdInputContextField))->SetTextL( aData );
-        return;
-        }
-    
-    if (Control(EPeninputWindowCtrlIdMultiLineICF))
-        {
-        CFepLayoutMultiLineIcf* multiIcf = 
-            static_cast<CFepLayoutMultiLineIcf*>( Control(EPeninputWindowCtrlIdMultiLineICF));
-            
-        multiIcf->SetTextL( aData );
-      
-        if ( iLayoutContext->LayoutType() == EPluginInputModeVkb || 
-             iLayoutContext->LayoutType() == EPluginInputModeFSQ )
-            {
-            TInt lang = CPeninputDataConverter::AnyToInt
-                    ( iLayoutContext->RequestData( EPeninputDataTypeInputLanguage ) );
-            TInt curRange = CPeninputDataConverter::AnyToInt
-        		    ( iLayoutContext->RequestData( EPeninputDataTypeCurrentRange ) );
-        		        
-            if ( lang == ELangVietnamese && curRange == ERangeEnglish )  
-                {
-                TBuf<1> preData;
-                multiIcf->ExtractText( preData, aData.iCurSel.LowerPos()-1, 1 );
-                iVowelChar = EFalse;
-                
-                if ( KNullDesC() != preData )
-                    {
-                    for (TUint i = 0; i < sizeof(VietVowelList) / sizeof(TText); ++i)
-                        {
-                        TBuf<1> buf;
-                        buf.Append( VietVowelList[i] );
-                        if (preData == buf)
-                            {
-                            iVowelChar = ETrue;
-                            break;
-                            }
-                        }
-                    }
-                CPeninputVkbCtrlExt* vkbCtrl = static_cast<CPeninputVkbCtrlExt*>
-                    ( Control( EPeninutWindowCtrlIdVkbCtrl ) );
-                vkbCtrl->DimKeySet( iToneSet, !iVowelChar );
-                }
-            }
-        }
-    }  
-
-// ---------------------------------------------------------------------------
-// CPeninputLayoutWindowExt::SetEditorTextL
-// (other items were commented in a header)
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CPeninputLayoutWindowExt::SetTextIsSecret( TBool aData )
-    {
-    if ( Control(EPeninutWindowCtrlIdInputContextField))
-        {
-        static_cast<CFepInputContextField*>
-        (Control(EPeninutWindowCtrlIdInputContextField))->SetTextIsSecret( aData );
-        }
-    else if (Control(EPeninputWindowCtrlIdMultiLineICF))
-        {
-        static_cast<CFepLayoutMultiLineIcf*>
-        (Control(EPeninputWindowCtrlIdMultiLineICF))->SetTextIsSecret( aData );
-        }
-    }  
-    
-void CPeninputLayoutWindowExt::SetNumberGrouping( TBool aData )
-    {
-    if (Control(EPeninputWindowCtrlIdMultiLineICF))
-        {
-        static_cast<CFepLayoutMultiLineIcf*>
-        (Control(EPeninputWindowCtrlIdMultiLineICF))->SetNumberGrouping( aData );
-        }
-    }
-    
-
-// ---------------------------------------------------------------------------
-// CPeninputLayoutWindowExt::DoClose
-// (other items were commented in a header)
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TBool CPeninputLayoutWindowExt::DoClose()
-    {
-    // Send EVkbEventWindowClose to layout
-    this->ReportEvent( EPeninputLayoutEventClose, KNullDesC );
-    
-    // Return true which will permit the window close
-    return EFalse;
-    }
-
-    
-// ---------------------------------------------------------------------------
-// Get layout config method. It does a lasy initialization for a instance of
-// CPeninputLayoutWindowExt::ConfigInfo
-// (other items were commented in a header)
-// ---------------------------------------------------------------------------
-//
-EXPORT_C CPeninputLayoutConfig* CPeninputLayoutWindowExt::ConfigInfo() const
-    {
-    return iConfigInfo;
-    }
-
-// ---------------------------------------------------------------------------
-// CPeninputLayoutWindowExt::CheckResourceExist
-// (other items were commented in a header)
-// ---------------------------------------------------------------------------
-//
-TBool CPeninputLayoutWindowExt::CheckResourceExist( const TDesC& aFileName )
-    {
-    RFile file;
-    
-    if ( !aFileName.Length() )
-        {
-        return EFalse;
-        }
-        
-    TInt rs = file.Open( CCoeEnv::Static()->FsSession(), aFileName, EFileRead );
-    
-    if ( rs == KErrNotFound )
-        {
-        return EFalse;  
-        }
-    else
-        {
-        file.Close();
-        
-        return ETrue;
-        }
-    }
-  
-// ---------------------------------------------------------------------------
-// CPeninputLayoutWindowExt::ChangeInputLanguageL
-// (other items were commented in a header)
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CPeninputLayoutWindowExt::ChangeInputLanguageL( TInt aLangID )
-    {
-    // Determine whether a new language id is same as existing one, 
-    if ( ConfigInfo() )
-        {
-        // If language not changed, exit this function
-        if ( ConfigInfo()->Language() == aLangID )
-            {
-            return;
-            }
-        }
-
-    // First check file exist or not
-    TBool found = CheckResourceExist( GetWindowConfigResFileName( aLangID ) );
-    if ( !found )
-        {
-        aLangID = ELangEnglish;        
-        found = CheckResourceExist( GetWindowConfigResFileName( aLangID ) );
-        }
-        
-    if ( found ) 
-        {
-        // Store language
-        iLayoutContext->SetData( EPeninputDataTypeInputLanguage, &aLangID );
-   
-        if ( iLayoutContext->LayoutType() == EPluginInputModeVkb || 
-            iLayoutContext->LayoutType() == EPluginInputModeFSQ )
-            {       
-            CFepUiBaseCtrl* ctrl = 
-                Control( EPeninutWindowCtrlIdVkbCtrl );
-            if ( ctrl )
-                {
-                ( static_cast<CPeninputVkbCtrlExt*>( ctrl ) )->Reset();
-                }
-            } 
-
-        // Re-construct config info 
-        if ( iConfigInfo )
-            {
-            delete iConfigInfo;
-            iConfigInfo = NULL;
-            }
-            
-        if (iConfigResId)
-            {
-            CCoeEnv::Static()->DeleteResourceFile( iConfigResId );
-            }
-            
-        // construct resource utils
-        
-        CCoeEnv* coeEnv = CCoeEnv::Static();
-        
-        // Set up resources
-        TFileName resFileName = GetWindowConfigResFileName( aLangID );
-        BaflUtils::NearestLanguageFile(coeEnv->FsSession(), resFileName );
-        iConfigResId = coeEnv->AddResourceFileL( resFileName );
-        
-        TResourceReader reader;
-
-        coeEnv->CreateResourceReaderLC( reader, GetWindowConfigResId() );  
-        if ( iLayoutContext->LayoutType() == EPluginInputModeVkb || 
-            iLayoutContext->LayoutType() == EPluginInputModeFSQ )
-            {
-            iVkbLayout->Reset(); 
-            }
-        iConfigInfo = CPeninputLayoutConfig::NewL( *iVkbLayout, reader ); 
-        
-        // Pop and destroy reader
-        CleanupStack::PopAndDestroy( 1 ); 
-        	       
-        // Re-construct rangebar
-        ChangeRangeBarL();
-
-	    //Reset range and layoutid
-	    TInt range = -1;
-	    iLayoutContext->SetData( EPeninputDataTypeCurrentRange, &range );
-	    iLayoutContext->SetData( EPeninputDataTypeClientLayout, &range );
-	    ResetLastColRow();
-	    iLangOrSizeChanged = ETrue;
-	    
-	    CFepUiBaseCtrl* icfCtrl = Control( EPeninputWindowCtrlIdMultiLineICF );
-        if ( icfCtrl )
-            {
-            static_cast<CFepLayoutMultiLineIcf*>(icfCtrl)->SetLanguageId( aLangID );
-            }
-		
-	    delete iToneSet;
-	    iToneSet = NULL;
-	        
-	    if ( aLangID == ELangVietnamese )
-            {
-            iToneSet = HBufC::NewL( KNumberOfToneMarks );
-        
-            for (TInt index = 0; index < KNumberOfToneMarks; index ++)
-                {
-                iToneSet->Des().Append( VietToneMatrix[0][index] );
-                }
-            }
-	    }
-    }
-    
-// ---------------------------------------------------------------------------
-// CPeninputLayoutWindowExt::ChangeRangeBarL
-// (other items were commented in a header)
-// ---------------------------------------------------------------------------
-//
-void CPeninputLayoutWindowExt::ChangeRangeBarL()
-    {
-    // Read range bar from config into and reconstruct range button
-    if ( iConfigInfo )
-        {
-        TInt resid = iConfigInfo->RangebarResId();
-        CFepUiBaseCtrl* bar = 
-            Control( EPeninutWindowCtrlIdRangeBar );
-            
-        if ( bar ) 
-            {
-            CAknFepCtrlRangeBar* rangebar = 
-                static_cast<CAknFepCtrlRangeBar*>( bar );
-            
-            CAknFepCtrlRangeBar::TRangeBarActionStyle style = 
-                ( CAknFepCtrlRangeBar::TRangeBarActionStyle )
-                iConfigInfo->RangeBarInfo()->RangeStyle();
-                
-            rangebar->SetActionStyle( style );
-                            
-            TResourceReader reader;
-            
-            CCoeEnv::Static()->CreateResourceReaderLC( reader, resid ); 
-            
-            rangebar->ConstructFromResourceL( reader );
-            
-            // Pop and destroy reader
-            CleanupStack::PopAndDestroy( 1 );
-            }
-        }
-    }
-  
-// ---------------------------------------------------------------------------
-// CPeninputLayoutWindowExt::ChangeRange
-// (other items were commented in a header)
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CPeninputLayoutWindowExt::ChangeRange( TInt aRange, TInt aVkbLayoutId, 
-                                                     TBool aNotify )
-    {
-    TInt curRange = CPeninputDataConverter::AnyToInt
-        ( iLayoutContext->RequestData( EPeninputDataTypeCurrentRange ) );
-    TInt curVkbLayout = CPeninputDataConverter::AnyToInt
-        ( iLayoutContext->RequestData( EPeninputDataTypeVkbLayout ) );
-
-    CFepUiBaseCtrl* bar = 
-        Control( EPeninutWindowCtrlIdRangeBar );
-    CAknFepCtrlRangeBar* rangebar = 
-        static_cast<CAknFepCtrlRangeBar*>( bar );
-        
-    if ( rangebar )
-        {
-        rangebar->ActiveRange( aRange );
-        }
-        
-    if (curRange != aRange || curVkbLayout != aVkbLayoutId || aRange == ERangeAccent)
-        {
-        // Update data:range
-        if (curRange != aRange)
-            iLayoutContext->SetData( EPeninputDataTypeCurrentRange, &aRange );
-            
-        // Change client layout
-        CPeninputRangeBarInfo* rangeBarInfo = iConfigInfo->RangeBarInfo();
-        CPeninputRangeInfo* rangeInfo = rangeBarInfo->FindRange(aRange);
-        
-        __ASSERT_DEBUG(rangeInfo, User::Panic(_L("Commonlayout-Invalid Range"), aRange));
-
-        ChangeClientLayout(rangeInfo->ClientLayoutId());
-        
-        // Notify fep the new range
-        if (aNotify)
-            {
-            TBuf<KIntLengthForByte> buf;
-            CPeninputDataConverter::IntToDesc( aRange, buf );
-            iLayoutContext->Sendkey( ESignalRange, buf );
-            
-	        // When change range mannually, make the entire window visible
-	        TInt style = EPeninputPositionChangeBrJustify;
-	        TBuf<KIntSizeToInt16> bufStyle;
-	        bufStyle = ( TUint16* )&style;
-	        HandleControlEvent(EPeninputLayoutEventMovePosition, NULL, bufStyle);           
-            }
-
-        // Change vkb layout
-        if ( iLayoutContext->LayoutType() == EPluginInputModeVkb ||
-            iLayoutContext->LayoutType() == EPluginInputModeFSQ )
-            {
-            if ( ( aRange == ERangeEnglish ) || ( aRange == ERangeAccent ) 
-                || ( aRange == ERangeNativeNumber )
-                || ( ConfigInfo()->CaseSensitive() 
-                && ( aRange == ERangeNative ) ) )
-                {
-                // Change shift and capslock button status according to the current case
-                TInt curCase = CPeninputDataConverter::AnyToInt
-                    ( iLayoutContext->RequestData( EPeninputDataTypeCase ) );
-                TInt shfit;  
-                TInt capslock;  
-                
-                CPeninputDataConverter::ShiftCapslockByCase( curCase, 
-                    shfit, capslock );      
-
-                iLayoutContext->SetData( EPeninputDataTypeShiftDown, &shfit );
-                //ChangeButtonStatus( shfit, EPeninutWindowCtrlIdShiftBtn );
-                iLayoutContext->SetData( EPeninputDataTypeCapslockDown, &capslock );
-                //ChangeButtonStatus( capslock, EPeninutWindowCtrlIdCapslockBtn );                
-                ChangeMergedButtonStatus( shfit, capslock );
-                
-                TInt caseid = CaseByShiftCapslockStatus();
-                TInt vkblayoutid = 
-                    ConfigInfo()->ShiftCapsSingleVkbLayoutId( aRange, caseid );
-                                
-                if ( aRange == ERangeAccent ) 
-                    {
-                    TInt curAccentIndex = CPeninputDataConverter::AnyToInt
-                        ( iLayoutContext->RequestData( EPeninputDataTypeCurrentAccent ) );
-                    vkblayoutid = vkblayoutid + curAccentIndex * 2;
-                    }      
-                    
-                // Change vkb layout
-                ChangeVkbLayout( vkblayoutid );
-                }
-            else
-                {
-                TInt flag = 0;
-                
-                iLayoutContext->SetData( EPeninputDataTypeShiftDown, &flag );
-                //ChangeButtonStatus( 0, EPeninutWindowCtrlIdShiftBtn );
-                iLayoutContext->SetData( EPeninputDataTypeCapslockDown, &flag );
-                //ChangeButtonStatus( 0, EPeninutWindowCtrlIdCapslockBtn );
-                ChangeMergedButtonStatus( 0, 0 );
-     
-                // Change vkb layout
-                if ( aVkbLayoutId )
-                    {
-                    ChangeVkbLayout( aVkbLayoutId );                   
-                    }
-                else
-                    {
-                    ChangeVkbLayout( rangeInfo->VkbLayoutId() );  
-                    }                
-                }
-            }
-            
-        }
-        
-    if ( ( iLayoutContext->LayoutType() == EPluginInputModeVkb ||
-        iLayoutContext->LayoutType() == EPluginInputModeFSQ )
-          && ( curRange == ERangeNumber || curRange == ERangeNativeNumber )
-          && ( curRange == aRange ) )
-        {
-        // Dimmed some keys if needed  
-        DimKeys();                 
-        }                        
-    }
-
-// ---------------------------------------------------------------------------
-// CPeninputLayoutWindowExt::ChangeClientLayout
-// (other items were commented in a header)
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CPeninputLayoutWindowExt::ChangeClientLayout( 
-    TInt aClientLayoutId )
-    {
-    TInt curClientId = CPeninputDataConverter::AnyToInt
-        ( iLayoutContext->RequestData( EPeninputDataTypeClientLayout ) );
-
-    if ( curClientId != aClientLayoutId )
-        {
-        CPeninputClientLayoutInfo* clientLayout = 
-            ConfigInfo()->FindClientLayoutInfo( aClientLayoutId );
-            
-        __ASSERT_DEBUG( clientLayout, User::Panic(_L("Commonlayout-Invalid ClientLayout"), aClientLayoutId));
-
-        SetLafLayOut( clientLayout->Rows(), clientLayout->Columns() );
-        
-        //SizeChangedForBaseWindow( clientLayout->Columns() );
-
-        // Re-Orginize all controls according to the configuration
-        ReorganizeControls( aClientLayoutId, ETrue );
-      
-        // Update data:client layout id
-        iLayoutContext->SetData( EPeninputDataTypeClientLayout, 
-                                 &aClientLayoutId );
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// CPeninputLayoutWindowExt::ChangeVkbLayout
-// (other items were commented in a header)
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CPeninputLayoutWindowExt::ChangeVkbLayout( TInt aVkbLayoutId )
-    {
-    TInt latchedFlag = CPeninputDataConverter::AnyToInt(
-                       iLayoutContext->RequestData(EAkninputDataTypeLatchedSet));
-    // If the DeadKey is latched, cancel it and then change the VKB layout
-    if(latchedFlag)
-        {
-        RPointerArray<CPeninputVkbLayoutInfo> vkbListInfo;
-        RPointerArray<CPeninputVkbKeyInfo> keyInfoList;
-        
-        vkbListInfo = iVkbLayout->VkbLayoutInfoList();
-        TInt vkbListNum = vkbListInfo.Count();
-        
-        CVirtualKey* pKey;
-        TBool deadKeyChange = EFalse;
-        // Find the latched DeadKey in all the Vkb layout
-        for(TInt i = 0; i < vkbListNum; i++)
-            {
-            // Get key info list in one VKB layout
-            keyInfoList = vkbListInfo[i]->KeyInfoList();
-            TInt keyListNum = keyInfoList.Count();
-            for(TInt j = 0; j < keyListNum; j++)
-                {
-                pKey = keyInfoList[j]->Key();
-                if(pKey->Latched())
-                    {
-                    // Unlatch the DeadKey
-                    pKey->SetLatched(EFalse);
-                    
-                    // Set the DeadKey state
-                    iLayoutContext->SetData(EAkninputDataTypeLatchedSet, &deadKeyChange);
-                    deadKeyChange = ETrue;
-                    break;
-                    } 
-                }
-            if(deadKeyChange)
-                {
-                break;
-                }
-            }
-        }
-    
-    TInt curVkbId = CPeninputDataConverter::AnyToInt
-        ( iLayoutContext->RequestData( EPeninputDataTypeVkbLayout ) );
-                           
-    if ( ( curVkbId != aVkbLayoutId ) || ( iLangOrSizeChanged ) )
-        {
-        iLangOrSizeChanged = EFalse;
-        // Update data : vkb layout id
-        iLayoutContext->SetData( EPeninputDataTypeVkbLayout, &aVkbLayoutId );
-
-        iVkbLayout->ChangeVkbLayout( aVkbLayoutId );        
-        SetVkbLayoutSize();
-        
-        TInt curClientId = CPeninputDataConverter::AnyToInt 
-           ( iLayoutContext->RequestData( EPeninputDataTypeClientLayout ) );
-        CPeninputControlInfo* vkbInfo = iConfigInfo->FindClientLayoutInfo 
-            ( curClientId )->FindControlInfo( EPeninutWindowCtrlIdVkbCtrl );
-    
-        TRect rect;
-        CPeninputVkbCtrlExt* vkbCtrl = static_cast<CPeninputVkbCtrlExt*>
-            ( Control(EPeninutWindowCtrlIdVkbCtrl));
-      
-          
-        CPeninputVkbLayoutInfo* vkblayout = 
-            ConfigInfo()->FindVkbLayoutInfo( aVkbLayoutId );  
-      
-        if ( vkbCtrl && vkblayout )
-            {
-            DimKeys(); 
-            
-            // Make the true draw
-            UpdateArea( vkbCtrl->Rect(),  EFalse ); 
-            }     
-        }        
-    }
-
-// --------------------------------------------------------------------------
-// CPeninputLayoutWindowExt::HandleRangeEvent
-// (other items were commented in a header)
-// --------------------------------------------------------------------------
-//
-EXPORT_C void CPeninputLayoutWindowExt::HandleRangeEvent( TInt aRange )
-    {                                 
-    TInt curRange = CPeninputDataConverter::AnyToInt 
-        ( iLayoutContext->RequestData( EPeninputDataTypeCurrentRange ) );
-  
-    CPeninputRangeBarInfo* rangeBar = iConfigInfo->RangeBarInfo();
-    if ( !rangeBar )
-        {
-        return;
-        }
-
-    CPeninputRangeInfo* rangeInfo = rangeBar->FindRange( aRange );
-    
-    if ( !rangeInfo )
-        {
-        return;
-        }
-      
-    TInt responseStyle = rangeInfo->ResponseStyle();
-    if ( responseStyle == EPeninputRangeResponseNoAction )
-        {
-        return; 
-        }
-    
-    if (curRange != aRange && responseStyle == EPeninputRangeResponseSwitchRange)
-        {
-        TInt index = KInvalidIndex;
-
-        if ( aRange == ERangeAccent )
-            {
-            index = 0;
-            }
-        iLayoutContext->SetData( EPeninputDataTypeCurrentAccent, &index );
-
-        ChangeRange( aRange );     
-        }
-    else if ( responseStyle == EPeninputRangeResponsePopupChoiceItem )
-        {
-        PopupChoiceList();
-        }
-    }
-
-// --------------------------------------------------------------------------
-// CPeninputLayoutWindowExt::HandleRangeLoopEvent
-// (other items were commented in a header)
-// --------------------------------------------------------------------------
-//
-EXPORT_C void CPeninputLayoutWindowExt::HandleRangeLoopEvent( TInt aLoop )
-    {
-    TInt curRange = CPeninputDataConverter::AnyToInt
-        ( iLayoutContext->RequestData( EPeninputDataTypeCurrentRange ) );
-                
-    CFepUiBaseCtrl* ctrl = Control( EPeninutWindowCtrlIdRangeBar );
-    CAknFepCtrlRangeBar* rangebar = static_cast<CAknFepCtrlRangeBar*>( ctrl );
-  
-    if ( rangebar )
-        {
-        TRAP_IGNORE( rangebar->SetCaseL( curRange, aLoop ) );
-      
-        if ( ( curRange == ERangeEnglish ) || ( ConfigInfo()->CaseSensitive()
-            && ( curRange == ERangeNative ) ) )
-            {
-            TInt curCase = rangebar->GetCase( curRange );
-
-            // Store case in the data manager, the engine will 
-            // get notice at the same time
-            iLayoutContext->SetData( EPeninputDataTypeCase, &curCase );
-          
-            // Notify fep the new case
-            TBuf<KIntLengthForByte> buf;
-            CPeninputDataConverter::IntToDesc( curCase, buf );
-            iLayoutContext->Sendkey( ESignalCaseMode, buf );
-            }    
-        }
-    }
-
-// --------------------------------------------------------------------------
-// CPeninputLayoutWindowExt::CaseByShiftCapslockStatus
-// (other items were commented in a header)
-// --------------------------------------------------------------------------
-//
-EXPORT_C TInt CPeninputLayoutWindowExt::CaseByShiftCapslockStatus()
-    {
-    TInt shiftStatus = CPeninputDataConverter::AnyToInt 
-        ( iLayoutContext->RequestData( EPeninputDataTypeShiftDown ) );
-    TInt capslockStatus = CPeninputDataConverter::AnyToInt 
-        ( iLayoutContext->RequestData( EPeninputDataTypeCapslockDown ) );
-        
-    return ( capslockStatus * 2 + shiftStatus );
-    }
-    
-// ---------------------------------------------------------------------------
-// CPeninputLayoutWindow::HandleShiftBtnClicked
-// (other items were commented in a header)
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CPeninputLayoutWindowExt::HandleMergedBtnClicked( TInt aCase )
-	{
-	switch( aCase )
-		{
-		case ECaseLower:
-		    {
-			HandleCapslockBtnClicked();
-		    }
-		    break;
-		case ECaseUpper:
-			{
-			HandleShiftBtnClicked();
-			}
-			break;
-		case ECaseText:
-//		case ECaseInverseText:
-			{
-			// Current case is Text, equals shift button
-			//HandleCapslockBtnClicked();			
-			HandleShiftAndCapslockBtnClicked();
-			}
-			break;	
-		default:
-			break;
-		}
-		
-	}
-
-// ---------------------------------------------------------------------------
-// CPeninputLayoutWindowExt::HandleShiftBtnClicked
-// (other items were commented in a header)
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CPeninputLayoutWindowExt::HandleShiftBtnClicked()
-    {
-    TInt curRange = CPeninputDataConverter::AnyToInt
-        ( iLayoutContext->RequestData( EPeninputDataTypeCurrentRange ) );
-    
-    TInt shiftStatus = CPeninputDataConverter::AnyToInt
-        ( iLayoutContext->RequestData( EPeninputDataTypeShiftDown ) );
-    TInt capslockStatus = CPeninputDataConverter::AnyToInt
-        ( iLayoutContext->RequestData( EPeninputDataTypeCapslockDown ) );
-         
-    // Update data
-    if ( iLayoutContext->IsCapsLockPermitted() )
-    	{
-    	if ( curRange == ERangeEnglish || curRange == ERangeAccent 
-	        || ( ConfigInfo()->CaseSensitive() && curRange == ERangeNative ) )
-		    {
-	        capslockStatus = !capslockStatus;
-	        ChangeMergedButtonStatus( shiftStatus, capslockStatus );
-	        iLayoutContext->SetData( EPeninputDataTypeCapslockDown, &capslockStatus );   
-		    }
-    	}
-    else
-    	{
-    	if ( iLayoutContext->IsShiftPermitted() )
-    		{
-    		shiftStatus = !shiftStatus;
-	        ChangeMergedButtonStatus( shiftStatus, capslockStatus );
-	        iLayoutContext->SetData( EPeninputDataTypeShiftDown, &shiftStatus );
-    		}
-    	}	
-  
-    // Update vkb layout
-    TInt  caseid = CaseByShiftCapslockStatus();
-    
-    TInt vkbLayout = iConfigInfo->ShiftCapsSingleVkbLayoutId( curRange, 
-                                                              caseid );
-                                               
-    TInt responseStyle = 
-        iConfigInfo->RangeBarInfo()->FindRange( curRange )->ResponseStyle();
-    if ( ( curRange == ERangeAccent ) 
-        && ( responseStyle == EPeninputRangeResponsePopupChoiceItem ) )
-        {
-        TInt curAccentIndex = CPeninputDataConverter::AnyToInt
-            ( iLayoutContext->RequestData( EPeninputDataTypeCurrentAccent ) );
-        vkbLayout = vkbLayout + curAccentIndex * 2;
-        }
-        
-    ChangeVkbLayout( vkbLayout );
-    
-    // Synchronize case if needed    
-    if ( ( curRange == ERangeEnglish )  || ( curRange == ERangeAccent ) 
-        || ( ConfigInfo()->CaseSensitive() && ( curRange == ERangeNative ) ) )
-        {
-        // Notify fep the new case
-        TBuf<KIntLengthForByte> buf;
-        TInt fepcase = CPeninputDataConverter::FepCaseByCaseId( caseid );
-        iLayoutContext->SetData( EPeninputDataTypeCase, &fepcase );
-        CPeninputDataConverter::IntToDesc( fepcase, buf );
-        iLayoutContext->Sendkey( ESignalCaseMode, buf );
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// CPeninputLayoutWindowExt::HandleCapslockBtnClicked
-// (other items were commented in a header)
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CPeninputLayoutWindowExt::HandleCapslockBtnClicked()
-    {
-    TInt curRange = CPeninputDataConverter::AnyToInt
-        ( iLayoutContext->RequestData( EPeninputDataTypeCurrentRange ) );
-
-    TInt capslockStatus = CPeninputDataConverter::AnyToInt
-        ( iLayoutContext->RequestData( EPeninputDataTypeCapslockDown ) );
-    TInt shiftStatus = CPeninputDataConverter::AnyToInt
-        ( iLayoutContext->RequestData( EPeninputDataTypeShiftDown ) );
-        
-    if ( iLayoutContext->IsShiftPermitted() )
-    	{
-    	if ( curRange == ERangeEnglish || curRange == ERangeAccent || 
-            ( ConfigInfo()->CaseSensitive() && curRange == ERangeNative ) )
-	        {
-	        shiftStatus = !shiftStatus;
-	        ChangeMergedButtonStatus( shiftStatus, capslockStatus );
-	        iLayoutContext->SetData( EPeninputDataTypeShiftDown, &shiftStatus );   
-	        }
-    	}
-    else
-    	{
-    	if ( iLayoutContext->IsCapsLockPermitted() )
-    		{
-    		capslockStatus = !capslockStatus;
-	        ChangeMergedButtonStatus( shiftStatus, capslockStatus );
-	        iLayoutContext->SetData( EPeninputDataTypeCapslockDown, &capslockStatus );
-    		}
-    	}
-            
-    // Update vkb layout
-    TInt  caseid = CaseByShiftCapslockStatus(); 
-    TInt vkbLayout = iConfigInfo->ShiftCapsSingleVkbLayoutId( curRange, 
-                                                              caseid );
-                                             
-    TInt responseStyle = 
-        iConfigInfo->RangeBarInfo()->FindRange( curRange )->ResponseStyle();
-    if ( ( curRange == ERangeAccent ) 
-        && ( responseStyle == EPeninputRangeResponsePopupChoiceItem ) )
-        {
-        TInt curAccentIndex = CPeninputDataConverter::AnyToInt
-            ( iLayoutContext->RequestData( EPeninputDataTypeCurrentAccent ) );
-        vkbLayout = vkbLayout + curAccentIndex * 2;
-        }
-            
-    ChangeVkbLayout( vkbLayout );
-    
-    // Synchronize case if needed
-    if ( ( curRange == ERangeEnglish )  || ( curRange == ERangeAccent ) 
-        || ( ConfigInfo()->CaseSensitive() && ( curRange == ERangeNative ) ) )
-        {
-        // Notify fep the new case
-        TBuf<KIntLengthForByte> buf;
-        TInt fepcase = CPeninputDataConverter::FepCaseByCaseId( caseid );
-        iLayoutContext->SetData( EPeninputDataTypeCase, &fepcase );
-        CPeninputDataConverter::IntToDesc( fepcase, buf );
-        iLayoutContext->Sendkey( ESignalCaseMode, buf );
-        }
-    }
-    
-EXPORT_C void CPeninputLayoutWindowExt::HandleShiftAndCapslockBtnClicked()
-    {
-    TInt curRange = CPeninputDataConverter::AnyToInt
-        ( iLayoutContext->RequestData( EPeninputDataTypeCurrentRange ) );
-    
-    TInt shiftStatus = CPeninputDataConverter::AnyToInt
-        ( iLayoutContext->RequestData( EPeninputDataTypeShiftDown ) );
-    TInt capslockStatus = CPeninputDataConverter::AnyToInt
-        ( iLayoutContext->RequestData( EPeninputDataTypeCapslockDown ) );
-     
-    if ( shiftStatus )
-        {
-        shiftStatus = 0;
-        }
-    else
-        {
-        shiftStatus = 1;
-        }
-        
-    // Update data
-    iLayoutContext->SetData( EPeninputDataTypeShiftDown, &shiftStatus );
-        
-    if ( iLayoutContext->IsCapsLockPermitted() )
-    	{
-    	if ( curRange == ERangeEnglish || curRange == ERangeAccent 
-	        || ( ConfigInfo()->CaseSensitive() && curRange == ERangeNative ) )
-		    {
-	        capslockStatus = !capslockStatus;
-	        ChangeMergedButtonStatus( shiftStatus, capslockStatus );
-	        iLayoutContext->SetData( EPeninputDataTypeCapslockDown, &capslockStatus );   
-		    }
-    	}
-    else
-    	{
-    	if ( iLayoutContext->IsShiftPermitted() )
-    		{
-    		shiftStatus = !shiftStatus;
-	        ChangeMergedButtonStatus( shiftStatus, capslockStatus );
-	        iLayoutContext->SetData( EPeninputDataTypeShiftDown, &shiftStatus );
-    		}
-    	}
-	
-    // Update vkb layout
-    TInt  caseid = CaseByShiftCapslockStatus();
-    
-    TInt vkbLayout = iConfigInfo->ShiftCapsSingleVkbLayoutId( curRange, 
-                                                              caseid );
-                                               
-    TInt responseStyle = 
-        iConfigInfo->RangeBarInfo()->FindRange( curRange )->ResponseStyle();
-    if ( ( curRange == ERangeAccent ) 
-        && ( responseStyle == EPeninputRangeResponsePopupChoiceItem ) )
-        {
-        TInt curAccentIndex = CPeninputDataConverter::AnyToInt
-            ( iLayoutContext->RequestData( EPeninputDataTypeCurrentAccent ) );
-        vkbLayout = vkbLayout + curAccentIndex * 2;
-        }
-        
-    ChangeVkbLayout( vkbLayout );
-    
-    // Synchronize case if needed    
-    if ( ( curRange == ERangeEnglish )  || ( curRange == ERangeAccent ) 
-        || ( ConfigInfo()->CaseSensitive() && ( curRange == ERangeNative ) ) )
-        {
-        // Notify fep the new case
-        TBuf<KIntLengthForByte> buf;
-        TInt fepcase = CPeninputDataConverter::FepCaseByCaseId( caseid );
-        iLayoutContext->SetData( EPeninputDataTypeCase, &fepcase );
-        CPeninputDataConverter::IntToDesc( fepcase, buf );
-        iLayoutContext->Sendkey( ESignalCaseMode, buf );
-        }
-    
-    
-    }
-
-// ---------------------------------------------------------------------------
-// CPeninputLayoutWindowExt::DimKeys
-// (other items were commented in a header)
-// ---------------------------------------------------------------------------
-//
-void CPeninputLayoutWindowExt::DimKeys()
-    {
-    TRAP_IGNORE(DimKeysL());
-    }
-void CPeninputLayoutWindowExt::DimKeysL()
-    {
-    CPeninputVkbCtrlExt* vkbCtrl = static_cast<CPeninputVkbCtrlExt*>
-        ( Control( EPeninutWindowCtrlIdVkbCtrl ) );
-    vkbCtrl->CancelDims();
-    TInt currentRange = CPeninputDataConverter::AnyToInt 
-        ( iLayoutContext->RequestData( EPeninputDataTypeCurrentRange ) );
-    TInt permitRange = CPeninputDataConverter::AnyToInt
-        ( iLayoutContext->RequestData( EPeninputDataTypePermittedRange ) ); 
-    TInt keyMapping = CPeninputDataConverter::AnyToInt 
-        ( iLayoutContext->RequestData( EPeninputDataTypeNumericKeymap ) );
-    TInt inputLang = CPeninputDataConverter::AnyToInt
-        ( iLayoutContext->RequestData( EPeninputDataTypeInputLanguage ) );
-         
-    if ( currentRange == ERangeNumber && 
-            (permitRange == ERangeNumber || 
-                    permitRange == ERangeNativeNumber || 
-                    permitRange == (ERangeNumber | ERangeNativeNumber)) )
-        {
-        HBufC* rs = NULL;
-        if ( keyMapping == EKeymapFromResource )
-            {
-            HBufC* customRes = 
-                           (HBufC*) iLayoutContext->RequestData(EAknFepDataTypeUseDefinedResource);
-            _LIT(KTenNumbers,"0123456789");
-            rs = HBufC::NewL(KTenNumbers().Length() + customRes->Length());
-            rs->Des().Copy(*customRes);
-            rs->Des().Append(KTenNumbers);
-            }
-        else
-            {
-            TRAP_IGNORE( rs = iKeyMappingMgr->KeyMappingStringL( keyMapping ); );
-            }
-        
-        if( rs )
-            {
-            vkbCtrl->DimKeys( rs );
-            delete rs;
-            }
-        }
-    else if ( currentRange == ERangeNativeNumber && 
-            (permitRange == ERangeNumber || 
-                    permitRange == ERangeNativeNumber || 
-                    permitRange == (ERangeNumber | ERangeNativeNumber)) )
-        {
-        HBufC* rs = NULL;
-        TRAP_IGNORE( rs = GetKeyMappingStringL( keyMapping, inputLang ) );
-        if( rs )
-            {
-            vkbCtrl->DimKeys( rs );
-            delete rs;
-            }
-        }
-    
-    else if ( (currentRange == ERangeNative || currentRange == ERangeEnglish) && CPeninputDataConverter::AnyToInt
-        ( iLayoutContext->RequestData( EPeninputDataTypeInputLanguage ) ) == ELangVietnamese )
-        {
-        vkbCtrl->DimKeySet( iToneSet, !iVowelChar );
-        }
-        
-    vkbCtrl->Draw();
-    }
-
-// ---------------------------------------------------------------------------
-// CPeninputLayoutWindowExt::AddControlL
-// (other items were commented in a header)
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CPeninputLayoutWindowExt::AddNotOwnedControl( 
-    CFepUiBaseCtrl* aControl )
-    {
-    //do nothing if we already has the control.
-    if ( KErrNotFound != ControlList().Find( aControl ) )
-        {
-        return;
-        }
-    
-    if ( aControl )
-        {
-        ( const_cast<RPointerArray<CFepUiBaseCtrl>&>
-            ( ControlList() ) ).Append( aControl );
-        }
-    } 
-// ---------------------------------------------------------------------------
-// CPeninputLayoutWindowExt::ChangeButtonStatus
-// (other items were commented in a header)
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CPeninputLayoutWindowExt::ChangeButtonStatus( const TInt aIsDown, 
-    const TInt aControlId )
-    {
-    CAknFepCtrlEventButton* button = 
-        static_cast<CAknFepCtrlEventButton*>
-        (ControlById( aControlId ) );
-
-    if ( button )
-        {
-        button->SetHighlight( aIsDown == 0 ? EFalse : ETrue );
-        } 
-    }
-
-// ---------------------------------------------------------------------------
-// CPeninputLayoutWindow::ChangeButtonStatus
-// (other items were commented in a header)
-// ---------------------------------------------------------------------------
-// 
-EXPORT_C void CPeninputLayoutWindowExt::ChangeMergedButtonStatus( 
-											const TInt aIsShiftCase, 
-    								 		const TInt aIsCapslockCase )
-	{
-	CAknFepCtrlMultiModeButton* button = 
-		static_cast<CAknFepCtrlMultiModeButton*>
-        (ControlById( EPeninutWindowCtrlIdShiftBtn ) );
-    
-    if( !button )
-        {
-        return;
-        }
-    switch ( aIsCapslockCase * 2 + aIsShiftCase )
-        {
-        case 1: // text case        
-            {
-            TRAP_IGNORE( button->SetCurrentModeL( EBtnBmpActive, 1 ) );			
-	    	button->SetHighlight( ETrue );
-            }
-            break; 
-        case 2: // upper case
-            {
-            TRAP_IGNORE( button->SetCurrentModeL( EBtnBmpActive, 2 ) );	
-            button->SetHighlight( ETrue );
-            }
-        	break;
-        default:
-            {
-            TRAP_IGNORE( button->SetCurrentModeL( EBtnBmpActive, 0 ) );	
-        	button->SetHighlight( EFalse );
-            }
-            break;
-	    }
-	}    								 	
-// ---------------------------------------------------------------------------
-// CPeninputLayoutWindowExt::ChangeLayoutPosition
-// (other items were commented in a header)
-// ---------------------------------------------------------------------------
-//               
-EXPORT_C void CPeninputLayoutWindowExt::ChangeLayoutPosition( TInt aJustifyStyle )
-    {        
-    if ( iLayoutContext->LayoutType() == EPluginInputModeFSQ )
-        {
-        TopLeftJustify();
-        return;
-        }
-    switch ( aJustifyStyle )
-        {
-        case EPeninputPositionChangeBrJustify:
-            {
-            BottomRightJustify();
-            }         
-            break;
-        case EPeninputPositionChangeDataQuery:
-            {
-            //BottomRightJustify();
-            DataQueryJustify();
-            }
-            break;
-        default:
-            {
-            TopLeftJustify();
-            }
-            break;
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// CPeninputLayoutWindowExt::SetWindowRect
-// (other items were commented in a header)
-// ---------------------------------------------------------------------------
-//      
-EXPORT_C void CPeninputLayoutWindowExt::SetWindowRect( const TRect& aRect )
-    {
-    //we should know the layout size now
-    if(iLayoutContext->LayoutType() == EPluginInputModeFSQ)
-        {
-        SetRect( aRect );
-        UiLayout()->SetRect(aRect);
-        }
-    else
-        {
-	    TRect rect = aRect;
-
-
-	    TRect shadowRect = TRect( TPoint(), 
-	                              TSize( aRect.Width() + iShadowBrWidth + iShadowTlWidth,
-	                                     aRect.Height() + iShadowTlHeight + iShadowBrHeight)
-	                            );
-	                            
-	    rect.Move( TPoint(iShadowTlWidth, iShadowTlHeight) - rect.iTl );
-	    
-	    SetRect( rect );  
-	    RootControl()->SetRect( rect );
-	    UiLayout()->SetShadowRect( shadowRect );  	
-	    }
-    }
-    
-
-// -----------------------------------------------------------------------------
-// CPeninputLayoutWindowExt::SetSwitchBtnFont
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void CPeninputLayoutWindowExt::SetSwitchBtnFont(CAknFepCtrlEventButton& aSwitchBtn)
-    {
-    // read switch font laf info only when need
-    if (CPeninputDataConverter::AnyToInt(
-        iLayoutContext->RequestData(EAkninputDataTypeSizeChanging)) ||(!iSwitchFontSet))
-    	{
-        TAknTextLineLayout langSwitch;
-        TAknTextLineLayout langSwitchShadow;
-
-        switch( iLayoutContext->LayoutType() )
-            {
-            case EPluginInputModeVkb:
-            case EPluginInputModeFSQ:
-                {
-                langSwitch = 
-                    AknLayoutScalable_Avkon::cell_vkb_side_pane_t1().LayoutLine();
-                langSwitchShadow = 
-                    AknLayoutScalable_Avkon::cell_vkb_side_pane_t1_copy1().LayoutLine();
-                }
-                break;
-            case EPluginInputModeHwr:
-                {
-                langSwitch = 
-                    AknLayoutScalable_Avkon::cell_hwr_side_pane_t1().LayoutLine();
-                langSwitchShadow = 
-                    AknLayoutScalable_Avkon::cell_hwr_side_pane_t1_copy1().LayoutLine();
-                }
-                break;
-            default:
-                {
-                return;
-                }
-            }
-        
-        iSwitchFont = langSwitch.iFont;
-        iSwitchShadowFont = langSwitchShadow.iFont;
-    	}
-    
-    aSwitchBtn.SetFont(AknLayoutUtils::FontFromId(iSwitchFont, NULL));
-    aSwitchBtn.SetShadowFont(AknLayoutUtils::FontFromId(iSwitchShadowFont, NULL));
-    iSwitchFontSet = ETrue;
-    }
-
-// ---------------------------------------------------------------------------
-// CPeninputLayoutWindowExt::TopLeftJustify
-// (other items were commented in a header)
-// ---------------------------------------------------------------------------
-//   
-EXPORT_C void CPeninputLayoutWindowExt::SetSwitchBtnTextColor(CAknFepCtrlEventButton& aSwitchBtn)
-    {
-    TRgb textColor;
-    TInt error = AknsUtils::GetCachedColor(AknsUtils::SkinInstance(),
-                                           textColor,
-                                           KAknsIIDQsnTextColors,
-                                           EAknsCIQsnTextColorsCG59);
-
-    if (error != KErrNone)
-        {
-    	textColor = TRgb(KDefaultTextColor);
-        }
-        
-    aSwitchBtn.SetFontColor( textColor );   
-    
-    TRgb shadowTextColor;    
-    error = AknsUtils::GetCachedColor(AknsUtils::SkinInstance(),
-                                      shadowTextColor,
-                                      KAknsIIDQsnTextColors,
-                                      EAknsCIQsnTextColorsCG62);
-                                      
-    if (error != KErrNone)
-        {
-    	shadowTextColor = TRgb(KDefaultShadowTextColor);
-        }
-    
-    aSwitchBtn.SetShadowFontColor( shadowTextColor );
-    }
-    
-// ---------------------------------------------------------------------------
-// CPeninputLayoutWindowExt::TopLeftJustify
-// (other items were commented in a header)
-// ---------------------------------------------------------------------------
-//   
-void CPeninputLayoutWindowExt::TopLeftJustify()
-    {
-    // Read position from datamgr 
-    TSize layoutSize = UiLayout()->Rect().Size();
-    
-    TPoint tl = UiLayout()->Position();
-    
-    TPoint oldBr = tl + layoutSize;
-    
-    if ( tl.iX < 0 )
-        {
-        tl.iX = 0;
-        }
-    
-    if ( tl.iY < 0 )
-        {
-        tl.iY = 0;  
-        }
-        
-    TPoint br = tl + layoutSize;          
-
-    if ( br != oldBr )
-        {
-        //Write the new position into CenRep
-        TInt x = 0;
-        TInt y = 0;
-        x = 0x0000FFFF & br.iX;
-        y = 0xFFFF0000 & ( br.iY << 16 );
-        TInt pos = x | y;
-        iLayoutContext->SetData( EPeninputDataTypeWindowPosition, &pos );
-        }
-        
-    UiLayout()->LayoutOwner()->SetPosition( tl );
-    }
-
-// ---------------------------------------------------------------------------
-// CPeninputLayoutWindowExt::BottomRightJustify
-// (other items were commented in a header).
-// ---------------------------------------------------------------------------
-//    
-void CPeninputLayoutWindowExt::BottomRightJustify()
-    {
-    // Read position from datamgr 
-    TSize layoutSize( UiLayout()->Rect().Size() );
-
-    TPoint oldbr;
-    TPoint br;
-    TPoint tl;
-
-    TSize screenSize = *( ( TSize* ) iLayoutContext->RequestData
-                            ( EPeninputDataTypeScreenSize ) );
-    
-    TInt windowPosition = CPeninputDataConverter::AnyToInt
-        ( iLayoutContext->RequestData( EPeninputDataTypeWindowPosition ) );
-
-    oldbr.iX = windowPosition & 0x0000FFFF;
-    oldbr.iY = ( windowPosition & 0xFFFF0000 ) >> 16;
-    
-    br = oldbr;
-        
-    // Check the top left point is in screen
-    if (br.iX > screenSize.iWidth)
-        {
-    	br.iX = screenSize.iWidth;
-        }
-    if( br.iY > screenSize.iHeight )
-        {
-    	br.iY = screenSize.iHeight;
-        }
-
-    tl.iX = br.iX - layoutSize.iWidth;
-    tl.iY = br.iY - layoutSize.iHeight;
-    
-    if ( tl.iX < 0 )
-        {
-        tl.iX = 0;
-        br.iX = layoutSize.iWidth;
-        }
-
-    if ( tl.iY < 0 )
-        {
-        tl.iY = 0;  
-        br.iY = layoutSize.iHeight;
-        }
-        
-    if ( oldbr != br )
-        {
-        //Write the new position into CenRep
-        TInt x = 0;
-        TInt y = 0;
-        x = 0x0000FFFF & br.iX;
-        y = 0xFFFF0000 & ( br.iY << 16 );
-        TInt pos = x | y;
-        iLayoutContext->SetData( EPeninputDataTypeWindowPosition, &pos );
-        }
-        
-    UiLayout()->LayoutOwner()->SetPosition( tl );
-    }
-
-// ---------------------------------------------------------------------------
-// CPeninputLayoutWindowExt::DataQueryJustify
-// (other items were commented in a header)
-// ---------------------------------------------------------------------------
-//   
-void CPeninputLayoutWindowExt::DataQueryJustify()
-    {
-    TRect* dataQueryRect = ( TRect* )( iLayoutContext->RequestData
-        ( EPeninputDataTypeDataQueryDlgRect) );
-    
-    TRect rect = TRect( UiLayout()->Position(), UiLayout()->Rect().Size() );
-    
-	CCoeEnv* coeEnv = CCoeEnv::Static();
-    TPixelsTwipsAndRotation ptSize;     
-    coeEnv->ScreenDevice()->GetDefaultScreenSizeAndRotation(ptSize);    
-
-	// Landscape mode: move window to the br of the screen
-    if (ptSize.iPixelSize.iWidth > ptSize.iPixelSize.iHeight)
-    	{
-    	rect.SetRect(ptSize.iPixelSize.iWidth - rect.Width(), 
-    			     ptSize.iPixelSize.iHeight/2 - rect.Height()/2,
-    			     ptSize.iPixelSize.iWidth, 
-    			     ptSize.iPixelSize.iHeight/2 + rect.Height()/2);
-    	}
-	// Portrait mode: dodge the dataquery   	
-    else if ( rect.Intersects( *dataQueryRect ) )
-        {
-        TInt Y = dataQueryRect->iTl.iY;
-        TInt height = rect.iBr.iY - rect.iTl.iY;
-        rect.iTl.iY = Y - height;
-        rect.iBr.iY = Y;
-        
-        if( rect.iTl.iY <0 )
-            {
-            rect.iTl.iY = 0;
-            rect.iBr.iY = height;
-            }
-        }
-
-    //Write the new position into CenRep
-    TInt x = 0;
-    TInt y = 0;
-    x = 0x0000FFFF & rect.iBr.iX;
-    y = 0xFFFF0000 & ( rect.iBr.iY << 16 );
-    TInt pos = x | y;
-    iLayoutContext->SetData( EPeninputDataTypeWindowPosition, &pos );          
-
-    //Set the layout position
-    UiLayout()->LayoutOwner()->SetPosition( rect.iTl );
-    }
-
-TBool CPeninputLayoutWindowExt::CreateCustomControlL( TInt16 /*aControlId*/, TInt32 /*aImageId*/ )
-	{
-	return EFalse;	
-	}
-    
-// ---------------------------------------------------------------------------
-// CPeninputLayoutWindowExt::Draw
-// (other items were commented in a header)
-// ---------------------------------------------------------------------------
-// 
-EXPORT_C void CPeninputLayoutWindowExt::Draw()
-    {    
-    // Draw shadow
-    CAknFepCtrlBaseWindowExt::Draw();
-    UpdateArea(UiLayout()->Rect(), EFalse);   
-    }
-       
-// ---------------------------------------------------------------------------
-// CPeninputLayoutWindowExt::GetKeyMappingStringL
-// (other items were commented in a header)
-// ---------------------------------------------------------------------------
-//     
-HBufC* CPeninputLayoutWindowExt::GetKeyMappingStringL(TInt aKeyMapping,
-    const TInt aLang )
-    {
-    HBufC* rs = NULL;
-    if ( aKeyMapping == EKeymapFromResource )
-        {
-        HBufC* customRes = (HBufC*) iLayoutContext->RequestData(EAknFepDataTypeUseDefinedResource);
-        _LIT(KTenNumbers,"0123456789");
-        TBuf<KMaxNumericString> numbers;
-        if( aLang == ELangArabic )
-            {
-            numbers.Format( _L("%c%c%c%c%c%c%c%c%c%c"),
-                0x0660, 0x0661, 0x0662,
-                0x0663, 0x0664, 0x0665,
-                0x0666, 0x0667, 0x0668, 0x0669 );
-            }
-        else if( aLang == ELangUrdu || aLang == ELangFarsi )
-            {
-            numbers.Format( _L("%c%c%c%c%c%c%c%c%c%c"),
-                0x06F0, 0x06F1, 0x06F2,
-                0x06F3, 0x06F4, 0x06F5,
-                0x06F6, 0x06F7, 0x06F8, 0x06F9 );
-            }
-        else if( aLang == ELangHindi )
-            {
-            numbers.Format( _L("%c%c%c%c%c%c%c%c%c%c"),
-                0x0966, 0x0967, 0x0968,
-                0x0969, 0x096a, 0x096b,
-                0x096c, 0x096d, 0x096e, 0x096f );
-            }
-        else if( aLang == ELangThai )
-            {
-            numbers.Format( _L("%c%c%c%c%c%c%c%c%c%c"),
-                0x0E50, 0x0E51, 0x0E52,
-                0x0E53, 0x0E54, 0x0E55,
-                0x0E56, 0x0E57, 0x0E58, 0x0E59 );        
-            }
-        else
-            {
-            numbers = KTenNumbers;
-            }
-            
-        rs = HBufC::NewL(numbers.Length() + customRes->Length());
-        rs->Des().Copy(*customRes);
-        rs->Des().Append(numbers);
-        }
-    else
-        {
-        rs = iKeyMappingMgr->KeyMappingStringL( aKeyMapping, aLang );
-        }
-        
-    return rs;     
-    }
-       
-// ---------------------------------------------------------------------------
-// CPeninputLayoutWindowExt::SetEnableSwitchToHwr
-// (other items were commented in a header)
-// ---------------------------------------------------------------------------
-//     
-EXPORT_C void CPeninputLayoutWindowExt::SetEnableSwitchToHwr(TBool aEnable)
-    {
-    CAknFepCtrlEventButton* switchToHwrBtn = static_cast<CAknFepCtrlEventButton*>
-        ( Control( EPeninutWindowCtrlIdSwitchToHwrBtn ) );
-
-    if ( aEnable )    
-        {
-        switchToHwrBtn->SetDimmed(EFalse);
-        }
-    else
-        {
-        switchToHwrBtn->SetDimmed(ETrue);
-        switchToHwrBtn->SetActive(EFalse);
-        } 
-    }
-
-// ---------------------------------------------------------------------------
-// CPeninputLayoutWindowExt::SetEnableSettingBtn
-// (other items were commented in a header)
-// ---------------------------------------------------------------------------
-//     
-EXPORT_C void CPeninputLayoutWindowExt::SetEnableSettingBtn(TBool aEnable)
-    {
-    CAknFepCtrlEventButton* optionBtn = static_cast<CAknFepCtrlEventButton*>
-        (Control( EPeninutWindowCtrlIdOptionBtn ) );
-            
-    if ( aEnable )    
-        {
-        optionBtn->SetDimmed(EFalse);
-        }
-    else
-        {
-        optionBtn->SetDimmed(ETrue);
-        optionBtn->SetActive(EFalse);
-        } 
-    }
-        
-// ---------------------------------------------------------------------------
-// CPeninputLayoutWindowExt::ReconfigUnitSize
-// (other items were commented in a header)
-// ---------------------------------------------------------------------------
-//     
-EXPORT_C TBool CPeninputLayoutWindowExt::ReconfigUnitSize(TInt /*aClientLayoutId*/)
-    {
-    return EFalse;
-    }
-    
-EXPORT_C void CPeninputLayoutWindowExt::SetLafLayOut(TInt /*aRows*/, TInt /*aColumns*/)
-    {
-    
-    }
-
-EXPORT_C void CPeninputLayoutWindowExt::SetVkbLayoutSize()
-    {
-    
-    }
-EXPORT_C void CPeninputLayoutWindowExt::OnInputLanguageChange()
-    {
-    if ( iLayoutContext->LayoutType() == EPluginInputModeVkb )
-        {       
-        CFepUiBaseCtrl* ctrl = 
-            Control( EPeninutWindowCtrlIdVkbCtrl );
-        if ( ctrl )
-            {
-            ( static_cast<CPeninputVkbCtrlExt*>( ctrl ) )->Reset();
-            }
-        } 
-    }
-    
-void CPeninputLayoutWindowExt::AddCustomControlGroupL(CFepUiBaseCtrl* aCtrl)
-	{
-	AddControlL(aCtrl);
-	}
-
-void CPeninputLayoutWindowExt::ResetLastColRow()
-	{
-    iLastUsedTotalColumns = 0;
-    iLastUsedTotalRows = 0;
-	}
-
-
-EXPORT_C void CPeninputLayoutWindowExt::SetTextAlignmentL( TInt aAlignment )	
-	{
-	CFepLayoutMultiLineIcf* icf = 
-	    static_cast<CFepLayoutMultiLineIcf*>( Control(EPeninputWindowCtrlIdMultiLineICF));
-	    
-	if ( icf && ConfigInfo()->Language() != ELangNone )
-		{
-		icf->SetTextAlignmentL( aAlignment, ConfigInfo()->Language() );
-		}
-	}
-	
-//End Of File