textinput/peninputcommonlayout/src/peninputcommonlayout.cpp
changeset 40 2cb9bae34d17
parent 31 f1bdd6b078d1
child 49 37f5d84451bd
--- a/textinput/peninputcommonlayout/src/peninputcommonlayout.cpp	Tue Jul 06 14:38:41 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,653 +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 framework
-*
-*/
-
-
-// System includes
-#include <aknfeppeninputenums.h>    // Command from fep or IME to plugin
-#include <AknFepGlobalEnums.h>      // Define EPluginInputModeHwr
-#include <peninputcmd.h>            // Use global signal
-#include <peninputlayoutchoicelist.h>
-#include <peninputlayoutbutton.h>
-#include <peninputdragbutton.h>
-#include <coemain.h>
-
-// User includes
-#include "peninputuistatebase.h"
-#include "peninputdataconverter.h"
-#include "peninputcommonlayout.h"
-#include "peninputlayoutwindow.h"
-#include "peninputdatamgr.h"
-#include "peninputuistatemgr.h"
-#include "peninputrangebarinfo.h"	
-
-// Constants
-const TInt KPeninputCommonLayoutBufLen = 8;
-const TInt KIntSizeToInt16 = 2;
-
-// ======== MEMBER FUNCTIONS ========
-
-// ---------------------------------------------------------------------------
-// CPeninputCommonLayout::CPeninputCommonLayout
-// (other items were commented in a header)
-// ---------------------------------------------------------------------------
-//
-EXPORT_C CPeninputCommonLayout::CPeninputCommonLayout( MLayoutOwner* aLayoutOwner )
-    : CFepUiLayout( aLayoutOwner )
-    {
-    }
-
-// ---------------------------------------------------------------------------
-// CPeninputCommonLayout::ConstructL
-// (other items were commented in a header)
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CPeninputCommonLayout::ConstructL( const TAny* aInitData )
-    {
-    BaseConstructL();
-
-    TPixelsTwipsAndRotation ptSize;
-    
-    CCoeEnv::Static()->ScreenDevice()->GetDefaultScreenSizeAndRotation( ptSize );
-            
-    SetScreenSize(ptSize.iPixelSize);    
-    
-    // This method must be called first, because it will initialize 
-    // language from CenRep
-    CreateDataMgrL(aInitData);
-
-    TBool sizeChanging = ETrue;
-    if ( iDataMgr )
-        {
-        // Store screen mode, and get new window position
-        iDataMgr->SetData( EPeninputDataTypeScreenMode, ( TAny* ) &ptSize );
-        
-        // Store justify style
-        iDataMgr->SetData(EAkninputDataTypeSizeChanging, &sizeChanging);
-        }
-
-    iUiStateMgr = CPeninputUiStateMgr::NewL( this );
-
-    CreateLayoutWindowL();
-
-    if ( iLayoutWindow )
-        {
-        iLayoutWindow->Hide(ETrue);
-        AddControlL( iLayoutWindow );
-        
-        // Config layout self using the whole screen
-        //SetRect(TRect(TPoint(0, 0), ptSize.iPixelSize ));
-
-        // Call the function in window to read config info
-        //ChangeInputLanguage( *( (TInt*)iDataMgr->RequestData(EPeninputDataTypeInputLanguage)));
-
-        iLayoutWindow->SizeChanged( ETrue );
-        EnableLayoutMoving( static_cast<CDragBar*>( iLayoutWindow->MoveButton() ) );
-        }
-    
-    if (iDataMgr)
-    	{
-    	sizeChanging = EFalse;
-    	iDataMgr->SetData(EAkninputDataTypeSizeChanging, &sizeChanging);
-    	}
-    }
-
-// ---------------------------------------------------------------------------
-// CPeninputCommonLayout::~CPeninputCommonLayout
-// (other items were commented in a header)
-// ---------------------------------------------------------------------------
-//
-EXPORT_C CPeninputCommonLayout::~CPeninputCommonLayout()
-    {       
-    delete iUiStateMgr;
-    delete iDataMgr;
-    
-    }
-
-// ---------------------------------------------------------------------------
-// CPeninputCommonLayout::UiStateMgr
-// (other items were commented in a header)
-// ---------------------------------------------------------------------------
-//
-EXPORT_C MPeninputUiStateMgr* CPeninputCommonLayout::UiStateMgr() const
-    {
-    return iUiStateMgr;
-    }
-
-// ---------------------------------------------------------------------------
-// CPeninputCommonLayout::LayoutWindow
-// (other items were commented in a header)
-// ---------------------------------------------------------------------------
-//
-EXPORT_C CPeninputLayoutWindow* CPeninputCommonLayout::LayoutWindow() const
-    {
-    return NULL;
-    }
-
-// ---------------------------------------------------------------------------
-// CPeninputCommonLayout::HandleCommand
-// (other items were commented in a header)
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TInt CPeninputCommonLayout::HandleCommand( TInt aCmd, 
-                                                    TUint8* aData )
-    {
-    // Handle command from fep or IME to this layout
-    TUint* data = ( TUint* ) aData;
-    TBuf<KPeninputCommonLayoutBufLen> buf;
-    TBuf<KIntSizeToInt16> bufStyle;
-    TInt style;
-    TInt ret = KErrNone;
-    
-    switch ( aCmd )
-        {
-        case ECmdPenInputPermittedRange:
-            CPeninputDataConverter::IntToDesc( *data, buf );
-            SendEventToWindow( EPeninputLayoutEventSetPermittedRange, NULL, 
-                               buf );        
-            break;
-        case ECmdPenInputPermittedCase:
-            {
-            CPeninputDataConverter::IntToDesc( *data, buf );
-            SendEventToWindow( EPeninputLayoutEventSetPermittedCase, NULL, 
-                               buf );             
-            }
-            break;
-        case ECmdPenInputEditorNumericKeyMap:
-            {
-            iDataMgr->SetData( EPeninputDataTypeNumericKeymap, data );
-            }
-            break;
-        case ECmdPenInputCase:
-            {
-            CPeninputDataConverter::IntToDesc( *data, buf );
-            SendEventToWindow( EPeninputLayoutEventSetCase, NULL, 
-                               buf );
-            }
-            break;
-        case ECmdPenInputLanguage:
-            {
-            ChangeInputLanguage(*data);
-            }            
-            break;
-        case ECmdPenInputRange:
-            {
-            ChangeRange( TranslateRange(*data) );
-            }
-            break;
-        case ECmdPenInputEnableSettingBtn:
-            {
-            SetEnableSettingBtn(*data);
-            }
-            break;
-        case ECmdPenInputIsSecretText:
-            {
-            iLayoutWindow->SetTextIsSecret( *aData );
-            }
-            break;
-        case ECmdPenInputIsNumberGrouping:
-            {
-            iLayoutWindow->SetNumberGrouping( *aData );
-            }
-            break;    
-        case ECmdPenInputWindowOpen:
-            {
-            if ( *data == EPenInputOpenManually )
-                {
-                style = EPeninputPositionChangeBrJustify;
-                bufStyle = ( TUint16* )&style;
-                SendEventToWindow(EPeninputLayoutEventMovePosition, NULL, bufStyle );  
-                }
-            iLayoutWindow->Hide(EFalse);
-            LayoutOwner()->Hide( EFalse );
-            }
-            break;
-        case ECmdPenInputWindowClose:
-            {
-            iLayoutWindow->Hide(ETrue);            
-            LayoutOwner()->Hide( ETrue );
-
-            SendEventToWindow( EPeninputLayoutEventCloseWindow, NULL );
-            }
-            break;
-        case ECmdPenInputSetWindowPos:
-            {
-            // Only VKB need to move position automatically
-            if ( LayoutType() == EPluginInputModeVkb )
-                {
-                // Data is a TRect
-                iDataMgr->SetData( EPeninputDataTypeDataQueryDlgRect, 
-                                   (TRect*) aData );
-                                   
-                // Store justify style
-                style = EPeninputPositionChangeDataQuery;
-                bufStyle = ( TUint16* )&style;
-                SendEventToWindow(EPeninputLayoutEventMovePosition, NULL, bufStyle);
-                }
-            }
-            break;
-        case ECmdPenInputEditorCustomNumericKeyMap:
-            {
-            iDataMgr->SetData(EAknFepDataTypeUseDefinedResource, aData);
-            }
-            break;    
-        case ECmdPenInputSetTextAlignment:
-        	{
-		    TRAP_IGNORE(iLayoutWindow->SetTextAlignmentL( *data ));
-        	}
-        	break;
-        default:
-            {
-            ret = CFepUiLayout::HandleCommand( aCmd, aData );
-            }
-            break;
-        }
-
-    return ret;
-    }
-
-// ---------------------------------------------------------------------------
-// CPeninputCommonLayout::SizeChanged
-// (other items were commented in a header)
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TInt CPeninputCommonLayout::SizeChanged( const TAny* /*aData*/ )
-    {
-    TBool sizeChanging = ETrue;
-    iDataMgr->SetData(EAkninputDataTypeSizeChanging, &sizeChanging);
-
-    // Handle size changed event
-    TPixelsTwipsAndRotation ptSize;  
-       
-    CCoeEnv::Static()->ScreenDevice()->GetDefaultScreenSizeAndRotation( ptSize );
-    //SetScreenSize(ptSize.iPixelSize);
-
-    // Store screen mode, and get new window position
-    iDataMgr->SetData( EPeninputDataTypeScreenMode, ( TAny* )&ptSize );
-
-     // The following need to implement
-    iLayoutWindow->SizeChanged( ETrue );
-
-    sizeChanging = EFalse;
-    iDataMgr->SetData(EAkninputDataTypeSizeChanging, &sizeChanging);
-
-    return KErrNone;
-    }
-
-// ---------------------------------------------------------------------------
-// CPeninputCommonLayout::HandleControlEvent
-// (other items were commented in a header)
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CPeninputCommonLayout::HandleControlEvent(
-    TInt aEventType, CFepUiBaseCtrl* aCtrl, const TDesC& aEventData )
-    {
-    // Handle event from control
-    TInt* data = ( TInt* ) aEventData.Ptr();
-
-    // Buffer for data conversion
-    TBuf<KPeninputCommonLayoutBufLen> buf;
-
-    switch ( aEventType )
-        {
-        case EPeninputLayoutEventClose:
-            {
-            SignalOwner( ESignalLayoutClosed );
-            }
-            break;
-        case EPeninputLayoutEventOption:
-            {
-            SignalOwner( ESignalLaunchOptionMenu );
-            }
-            break;
-        case EPeninputLayoutEventSwitchLanguage:
-            {
-            SignalOwner( ESignalLaunchLanguageMenu );
-            }
-            break;
-        // When drag end, store the position data
-        case EEventDraggingEnd:
-            {
-            TInt x = 0;
-            TInt y = 0;
-            x = 0x0000FFFF & ( Position().iX + Rect().Width() );
-            y = 0xFFFF0000 & ( ( Position().iY + Rect().Height() ) << 16 );
-            TInt position = x | y;
-            if ( position )
-                {
-                iDataMgr->SetData( EPeninputDataTypeWindowPosition, &position );
-                }
-            }
-            break;
-        default:
-            {
-            if ( iUiStateMgr->CurrentUiState() )
-                {
-                if ( !iUiStateMgr->CurrentUiState()->HandleControlEvent
-                    ( aEventType, aEventData ) )
-                    {
-                    SendEventToWindow( aEventType, aCtrl, aEventData );
-                    }                    
-                }
-            }
-            break;       
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// CPeninputCommonLayout::OnAppEditorTextComing
-// (other items were commented in a header)
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TInt CPeninputCommonLayout::OnAppEditorTextComing(
-    const TFepInputContextFieldData& aData )
-    {
-    // Handle edit text coming
-    if ( iLayoutWindow )
-        {
-        TRAPD( err, iLayoutWindow->SetEditorTextL( aData ) );
-        return err;
-        }
-    
-    return KErrNone;
-    }
-
-// ---------------------------------------------------------------------------
-// CPeninputCommonLayout::HandleRawKeyEventL
-// (other items were commented in a header)
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TBool CPeninputCommonLayout::HandleRawKeyEventL(
-    const TRawEvent& aKeyEvent )
-    { 
-    return iUiStateMgr->CurrentUiState()->HandleKeyEventL( aKeyEvent );
-    }
-
-// ---------------------------------------------------------------------------
-// CPeninputCommonLayout::SendEventToWindow
-// (other items were commented in a header)
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CPeninputCommonLayout::SendEventToWindow( 
-    TInt aEventType, CFepUiBaseCtrl* aCtrl, const TDesC& aEventData )
-    {
-    iLayoutWindow->HandleControlEvent( aEventType, aCtrl, aEventData );
-    }
-
-// ---------------------------------------------------------------------------
-// CPeninputCommonLayout::SendEventToLayout
-// (other items were commented in a header)
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CPeninputCommonLayout::SendEventToLayout( 
-    TInt aEventType, CFepUiBaseCtrl* aCtrl, const TDesC& aEventData )
-    {
-    HandleControlEvent( aEventType, aCtrl, aEventData );
-    }
-
-// ---------------------------------------------------------------------------
-// CPeninputCommonLayout::Sendkey
-// (other items were commented in a header)
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CPeninputCommonLayout::Sendkey( TInt aEventType, 
-                                              const TDesC& aEventData )
-    {
-    SignalOwner( aEventType, aEventData ); 
-    }
-
-// ---------------------------------------------------------------------------
-// CPeninputCommonLayout::IsShiftPermitted
-// (other items were commented in a header).
-// ---------------------------------------------------------------------------
-//           
-EXPORT_C TBool CPeninputCommonLayout::IsShiftPermitted()
-    {
-    return iDataMgr->IsShiftPermitted();
-    }
-    
-// ---------------------------------------------------------------------------
-// CPeninputCommonLayout::IsCapsLockPermitted
-// (other items were commented in a header).
-// ---------------------------------------------------------------------------
-//  
-EXPORT_C TBool CPeninputCommonLayout::IsCapsLockPermitted()
-    {
-    return iDataMgr->IsCapsLockPermitted();
-    }
-    
-// ---------------------------------------------------------------------------
-// CPeninputCommonLayout::RequestData
-// (other items were commented in a header)
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TAny* CPeninputCommonLayout::RequestData( 
-    TPeninputDataType aDataType )
-    {
-    return iDataMgr->RequestData( aDataType );
-    }
-
-// ---------------------------------------------------------------------------
-// CPeninputCommonLayout::SetData
-// (other items were commented in a header)
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CPeninputCommonLayout::SetData( TPeninputDataType aDataType, 
-                                              TAny* aData )
-    {
-    iDataMgr->SetData( aDataType, aData );
-    }
-                
-// ---------------------------------------------------------------------------
-// CPeninputCommonLayout::SetData
-// (other items were commented in a header)
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TBool CPeninputCommonLayout::IsValidDestination( const TRect& aRect,
-                                                          CDragBar* aDragBar,
-                                                          TBool& aVInfo,
-                                                          TBool& aHInfo,
-                                                          TBool aFlag )
-    {
-    // Validate move button destination 
-    if ( !aDragBar )
-        {
-        return EFalse;
-        }
-        
-    TRect rect = aRect;
-    
-    if ( aFlag )
-        {
-        // Layout is moving
-        aHInfo = aVInfo = EFalse;
-        TRect dragbarRect( aRect.iTl, aDragBar->Rect().Size() );
-        
-        if ( dragbarRect.iTl.iX >= 0 
-             && dragbarRect.iBr.iX < ScreenSize().iWidth )
-            {
-            aHInfo = ETrue;
-            }
-            
-        if ( dragbarRect.iTl.iY >= 0 
-             && dragbarRect.iBr.iY < ScreenSize().iHeight )
-            {
-            aVInfo = ETrue;
-            }
-        
-        return ( aHInfo && aVInfo );
-        }
-    else
-        {
-        if ( aDragBar )
-            {
-            rect.SetSize( aDragBar->Rect().Size() );
-            }
-            
-        TBool tlInvalid = !Rect().Contains( rect.iTl );
-        TBool brInvalid = !Rect().Contains( rect.iBr );
-
-        if ( tlInvalid && !brInvalid )
-            {
-            if ( rect.iTl.iX >= Rect().iTl.iX 
-                 && rect.iTl.iX <= Rect().iBr.iX )
-                {
-                aHInfo = ETrue;
-                }
-            else if ( rect.iTl.iY >= Rect().iTl.iY 
-                      && rect.iTl.iY <= Rect().iBr.iY )
-                {
-                aVInfo = ETrue;
-                }
-            }
-        else if ( !tlInvalid && brInvalid )
-            {
-            if ( rect.iBr.iX >= Rect().iTl.iX 
-                 && rect.iBr.iX <= Rect().iBr.iX )
-                {
-                aHInfo = ETrue;
-                }
-            else if ( rect.iBr.iY >= Rect().iTl.iY 
-                      && rect.iBr.iY <= Rect().iBr.iY )
-                {
-                aVInfo = ETrue;
-                }
-            }
-
-        return !( tlInvalid || brInvalid );
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// CPeninputCommonLayout::TranslateRange
-// (other items were commented in a header)
-// ---------------------------------------------------------------------------
-//
-TInt CPeninputCommonLayout::TranslateRange(TInt aRange)
-    {
-    TInt newRange = aRange;
-    	     
-    if ( aRange == ERangeNative)
-        {
-        if ( iLayoutWindow
-             && iLayoutWindow->ConfigInfo()
-             && iLayoutWindow->ConfigInfo()->RangeBarInfo()->FindRange( ERangeNative ) )
-            {
-            newRange = ERangeNative;    
-            }
-        else
-            {
-            newRange = ERangeEnglish;    
-            }
-        }
-    else if ( aRange == ERangeEnglish)
-        {
-        if ( iLayoutWindow
-             && iLayoutWindow->ConfigInfo()
-             && iLayoutWindow->ConfigInfo()->RangeBarInfo()->FindRange( ERangeEnglish ) )
-            {
-            newRange = ERangeEnglish;    
-            }
-        else
-            {
-            newRange = ERangeNative;    
-            }
-        }
-                
-    return newRange;    
-    }
-
-// ---------------------------------------------------------------------------
-// CPeninputCommonLayout::Init
-// (other items were commented in a header)
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TRect CPeninputCommonLayout::Init()
-    {
-    TRect r = CFepUiLayout::Init();
-    //wxy -- No need to set position here
-    //LayoutOwner()->SetPosition( Rect().iTl );
-    //r = TRect( Position(), r.Size() );
-
-    return r;
-    }
-
-// ---------------------------------------------------------------------------
-// CPeninputCommonLayout::SaveKey
-// (other items were commented in a header)
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CPeninputCommonLayout::SaveKey( TInt aKey, TInt aValue )
-    {
-    iDataMgr->SaveKey( aKey, aValue );
-    }
-
-// ---------------------------------------------------------------------------
-// CPeninputCommonLayout::ChangeInputLanguage
-// (other items were commented in a header)
-// ---------------------------------------------------------------------------
-//
-void CPeninputCommonLayout::ChangeInputLanguage( TInt aLangID )
-    {
-    // Call ChangeInputLanguage function in iLayoutWindow
-    TRAP_IGNORE( iLayoutWindow->ChangeInputLanguageL( aLangID ) );
-    }
-
-// ---------------------------------------------------------------------------
-// CPeninputCommonLayout::ChangeLanguage
-// (other items were commented in a header).
-// ---------------------------------------------------------------------------
-//
-void CPeninputCommonLayout::ChangeRange( TInt aRange )
-    {
-    iLayoutWindow->ChangeRange( aRange, 0 , EFalse);
-    }
-
-// ---------------------------------------------------------------------------
-// CPeninputCommonLayout::SetEnableSwitchToHwr
-// (other items were commented in a header).
-// ---------------------------------------------------------------------------
-//
-void CPeninputCommonLayout::SetEnableSwitchToHwr( TBool aEnable )
-    {
-    iLayoutWindow->SetEnableSwitchToHwr( aEnable );
-    }   
-
-// ---------------------------------------------------------------------------
-// CPeninputCommonLayout::SetEnableSettingBtn
-// (other items were commented in a header).
-// ---------------------------------------------------------------------------
-//
-void CPeninputCommonLayout::SetEnableSettingBtn( TBool aEnable )
-    {
-    iLayoutWindow->SetEnableSettingBtn( aEnable );
-    }  
-
-EXPORT_C TInt CPeninputCommonLayout::PenInputType()
-    {
-    return LayoutType();
-    }
-
-EXPORT_C void CPeninputCommonLayout::SetPositionFromOutside(const TPoint& aNewPos)
-    {
-    LayoutOwner()->SetPosition(aNewPos);
-    TInt x = 0x0000FFFF & aNewPos.iX;
-    TInt y = 0xFFFF0000 & ( aNewPos.iY << 16 );
-    TInt position = x | y;
-    
-    SetData( EPeninputDataTypeWindowPosition, (TAny*)&position );
-    }
-