diff -r 6ceef9a83b1a -r 6defe5d1bd39 textinput/peninputfingerhwrar/src/peninputfingerhwrarlayout.cpp --- a/textinput/peninputfingerhwrar/src/peninputfingerhwrarlayout.cpp Mon Mar 15 12:42:02 2010 +0200 +++ b/textinput/peninputfingerhwrar/src/peninputfingerhwrarlayout.cpp Wed Mar 31 22:08:20 2010 +0300 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2005-2008 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2009-2010 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" @@ -96,10 +96,13 @@ //create state manager CreateStateManagerL(); - + + //create the arabic window control CreateHwrWindowL(); - + + //retrieve the settings LoadAndPublishDefaultL(); + //set screen layout extent SetRect( TRect( TPoint( 0, 0 ), ScreenSize() ) ); } @@ -133,7 +136,7 @@ return KErrNone; } - TInt ret = KErrUnknown; + TInt ret = KErrNone; switch ( aCmd ) { case ECmdPenInputEditorNumericKeyMap: @@ -146,77 +149,69 @@ TInt len = *( TInt* )( aData - KIntSize ); TPtrC16 keymapRes( (TUint16*)aData, len / 2 ); iDataStore->SetCustomNumberModeL( keymapRes ); - ret = KErrNone; } break; case ECmdPenInputPermittedRange: { TInt ranges = *(TInt*)aData; iDataStore->SetPermittedRanges( ranges ); - ret = KErrNone; } break; case ECmdPenInputLanguage: { TInt language = *( TInt* )aData; iDataStore->SetLanguageL( language ); - ret = KErrNone; } break; case ECmdPenInputPermittedCase: { TInt cs = *( TInt* )aData; iDataStore->SetPermittedCases( cs ); - ret = KErrNone; } break; case ECmdPenInputCase: { TInt cs = *( TInt* )aData; iDataStore->SetCase( cs ); - ret = KErrNone; } break; case ECmdPenInputWindowOpen: { LayoutOwner()->Hide( EFalse ); RootControl()->UpdateValidRegion( NULL, EFalse ); - + + // tell the engine the hwr writing area TRect hwrRect = iHwrWnd->WritingBoxRect(); TSize hwrSize = hwrRect.Size(); iDataStore->SetInputAreaSize(hwrSize); iDataStore->SetScreenSize(hwrSize); + + // tell the HWR window to handle the window open command + iHwrWnd->HandleWindowOpenCommandL(); + + // switch to standby state ChangeCurStateToStandby(); - - iDataStore->GetKeyboardType(); - iDataStore->SetKeyboardToQwerty(); - ret = KErrNone; } break; case ECmdPenInputWindowClose: { - iDataStore->ResetKeyboardType(); LayoutOwner()->Hide( ETrue ); - ret = KErrNone; } break; case ECmdPenInputSetTextAlignment: { - iHwrWnd->SetTextAlignmentL( *aData, ELangArabic ); - ret = KErrNone; + iHwrWnd->SetTextAlignmentL( *aData, ELangArabic ); } break; case ECmdPenInputSetPromptText: { iHwrWnd->SetPromptTextL( aData ); - ret = KErrNone; } break; case ECmdPenInputDimArrowKeys: { TBool IsDimArrowKeys = *aData; iHwrWnd->DimArrowKeys( IsDimArrowKeys ); - ret = KErrNone; } break; case ECmdPenInputCharacterPreview: @@ -231,6 +226,7 @@ } break; default: + ret = KErrUnknown; break; } @@ -261,6 +257,10 @@ if ( iHwrWnd ) { TRAPD( err, iHwrWnd->SetEditorTextL( aData ) ); + if(err != KErrNone) + { + return err; + } // // implement the feature: the candiates will be filtered according to the char after the cursor // @@ -279,7 +279,11 @@ return KErrNone; } - iDataStore->SetFirstCandidateType(ECandDefaultFirst); + iDataStore->SetFirstCandidateType(ECandDefaultFirst); + if(iDataStore->PrimaryRange() == ERangeEnglish) + { + return KErrNone; + } TUint16 charBeforeCursor = 0; if(iHwrWnd->GetCharBeforeCursor(aData.iCurSel.LowerPos()-1, charBeforeCursor)) @@ -301,7 +305,7 @@ iDataStore->SetFirstCandidateType(candtype); } - return err; + return KErrNone; } return KErrNone; @@ -351,14 +355,7 @@ // void CPeninputFingerHwrArLayout::OnDeActivate() { - // cancel writing - iHwrWnd->CancelWriting(); - - // close the symbol table if it's showing up - iHwrWnd->CloseSymbolTable(); - - // close the candidate list if it's showing up - iHwrWnd->CloseCandidateList(); + ChangeCurStateToStandby(); CFepUiLayout::OnDeActivate(); } @@ -442,7 +439,6 @@ case EHwrEventOutsideEvent: { ChangeCurStateToStandby(); - iHwrWnd->CloseSymbolTable(); } break; @@ -533,11 +529,6 @@ self->SetWritingSpeed( newValue ); } break; - case KSettingsPenWidth: - { - self->SetBoxPenSize( TSize( newValue, newValue ) ); - } - break; case KSettingsPenColor: { self->SetBoxPenColor( newValue ); @@ -570,7 +561,10 @@ iRepositorySetting->Get( KSettingsWritingSpeed, newValue ); SetWritingSpeed( newValue ); - + + iRepositorySetting->Get(KSettingsPenInputGuideLine,newValue); + SetGuideLineOn(newValue); + iRepositorySetting->Get( KSettingsPenWidth, newValue ); SetBoxPenSize( TSize( newValue, newValue ) ); @@ -668,15 +662,8 @@ { case EHwrCtrlIdClose: { - // Go to standby when button up before character timeout - if ( iDataStore->StartCharacter()) - { - iDataStore->SetStartCharacter(EFalse); - iHwrWnd->CancelWriting(); - ChangeCurStateToStandby(); - iHwrWnd->CloseCandidateList(); - } - + // Go to standby before closing layout + ChangeCurStateToStandby(); SignalOwner( ESignalLayoutClosed ); } break; @@ -688,24 +675,9 @@ break; case EHwrCtrlIdSymbolButton: { - // Go to standby when button up before character timeout - if ( iDataStore->StartCharacter()) - { - iDataStore->SetStartCharacter(EFalse); - iHwrWnd->CancelWriting(); - ChangeCurStateToStandby(); - iHwrWnd->CloseCandidateList(); - } - - if(iHwrWnd->IsSymbolTableShowingUp()) - { - iHwrWnd->CloseSymbolTable(); - } - else - { - ChangeCurStateToStandby(); - iHwrWnd->OpenSymbolTable(); - } + // Go to standby before opening symbol table + ChangeCurStateToStandby(); + iHwrWnd->OpenSymbolTable(); } break; case EHwrCtrlId3Page1Btn: @@ -801,19 +773,16 @@ iHwrWnd->CancelWriting(); if (iHwrWnd->IsCandidateShowup()) { - // goto standby and clear screen - iDataStore->SetStartCharacter(EFalse); + // goto standby and clear screen ChangeCurStateToStandby(); - iHwrWnd->CloseCandidateList(); } else { SubmitCharToFep( EKeyBackspace ); iStateMgr->HandleEventL( EHwrEventKeyBack, KNullDesC ); - if(iDataStore->StartCharacter()) + if(iIsStrokeOfDrawingCharacerStarted) { ChangeCurStateToStandby(); - iHwrWnd->CloseCandidateList();; } } } @@ -872,8 +841,6 @@ iStateMgr->HandleEventL( EHwrEventCandidateSelected, aData ); ChangeCurStateToStandby(); - - iHwrWnd->CloseCandidateList();; } @@ -885,10 +852,6 @@ { // Go to standby ChangeCurStateToStandby(); - if(iHwrWnd->IsCandidateShowup()) - { - iHwrWnd->CloseCandidateList(); - } } // --------------------------------------------------------------------------- @@ -909,7 +872,8 @@ } // remember the start writing position. - iDataStore->SetStartCharacter(ETrue); + iIsStrokeOfDrawingCharacerStarted = ETrue; + iStateMgr->HandleEventL( EEventHwrStrokeStarted, KNullDesC ); } @@ -931,13 +895,13 @@ // void CPeninputFingerHwrArLayout::OnHwrCharacterFinishedL() { - iDataStore->SetStartCharacter( EFalse ); - + iIsStrokeOfDrawingCharacerStarted = EFalse; + RArray points = iHwrWnd->StrokeList(); TPtrC ptr; ptr.Set( reinterpret_cast( &points ), sizeof(&points) ); iStateMgr->HandleEventL( EEventHwrCharacterTimerOut, ptr ); - + iHwrWnd->OpenCandidateList(); } @@ -1051,7 +1015,22 @@ // void CPeninputFingerHwrArLayout::ChangeCurStateToStandby() { + iIsStrokeOfDrawingCharacerStarted = EFalse; iHwrWnd->CancelWriting(); + + // close the candidate list if it's currently showing up + if(iHwrWnd->IsCandidateShowup()) + { + iHwrWnd->CloseCandidateList(); + } + + // close the symbol table + if(iHwrWnd->IsSymbolTableShowingUp()) + { + iHwrWnd->CloseSymbolTable(); + } + + // set the state to be standby iStateMgr->SetState( CPeninputFingerHwrArStateManagerBase::EStateStandBy ); }