diff -r 6defe5d1bd39 -r 4eb1ae11334f textinput/peninputgenericitut/src/peninputgenericitutwindowmanager.cpp --- a/textinput/peninputgenericitut/src/peninputgenericitutwindowmanager.cpp Wed Mar 31 22:08:20 2010 +0300 +++ b/textinput/peninputgenericitut/src/peninputgenericitutwindowmanager.cpp Wed Apr 14 16:18:34 2010 +0300 @@ -48,6 +48,18 @@ _LIT(KEmptyString, ""); const TInt KPeriodicTimerIntervalSec(2500000); /* Teleca change end, 18.05.2009 ssal */ + +const TInt KSCTPreventTime = 1000 * 1000; + +TInt PreventSCTTimerCallback( TAny* aData ) + { + CGenericItutWindowManager* windowMgr = + static_cast( aData ); + windowMgr->SetAllowHandleRawKeyEventFlag( ETrue ); + windowMgr->StopPreventSCTTimer(); + return 0; + } + CGenericItutWindowManager* CGenericItutWindowManager::NewL(CGenericItutUiLayout* aLayoutOwner, CGenericItutDataMgr* aDataMgr) { @@ -63,7 +75,9 @@ CGenericItutDataMgr* aDataMgr) :iLayoutOwner(aLayoutOwner), iDataMgr(aDataMgr), - iLastRawKeyDown(EStdKeyNull) + iLastRawKeyDown(EStdKeyNull), + iAllowHandleRawKeyEvent( ETrue ), + iPreventCSTTimer( NULL ) { iInEditWordQueryDlg = EFalse; @@ -79,6 +93,9 @@ } delete iInfoTimer; /* Teleca change end, 18.05.2009 ssal */ + + iPreventCSTTimer->Cancel(); + delete iPreventCSTTimer; } void CGenericItutWindowManager::SetPropertyL(MItutPropertySubscriber::TItutProperty aPropertyName, @@ -94,6 +111,8 @@ /* Teleca change begin, 18.05.2009 ssal */ iInfoTimer = CPeriodic::NewL(CActive::EPriorityStandard); /* Teleca change end, 18.05.2009 ssal */ + + iPreventCSTTimer = CPeriodic::NewL( CActive::EPriorityStandard ); } void CGenericItutWindowManager::SimulateRawEvent(TInt aScanCode, TRawEvent::TType aType) @@ -125,20 +144,27 @@ { case EEventRawKeyDownEvent: { - const TKeyEvent *key = reinterpret_cast(aEventData.Ptr()); - SimulateRawEvent(key->iScanCode,TRawEvent::EKeyDown); - SetLastRawKeyDown(key->iScanCode, ETrue, aCtrl); + if ( iAllowHandleRawKeyEvent ) + { + const TKeyEvent *key = reinterpret_cast(aEventData.Ptr()); + SimulateRawEvent(key->iScanCode,TRawEvent::EKeyDown); + SetLastRawKeyDown(key->iScanCode, ETrue, aCtrl); + } } break; case EEventRawKeyUpEvent: { - const TKeyEvent *key = reinterpret_cast(aEventData.Ptr()); - SimulateRawEvent(key->iScanCode,TRawEvent::EKeyUp); - SetLastRawKeyDown(key->iScanCode, EFalse, aCtrl); + if ( iAllowHandleRawKeyEvent ) + { + const TKeyEvent *key = reinterpret_cast(aEventData.Ptr()); + SimulateRawEvent(key->iScanCode,TRawEvent::EKeyUp); + SetLastRawKeyDown(key->iScanCode, EFalse, aCtrl); + } } break; case EItutCmdEnterSpellMode: { + StartPreventSCTTimer(); iLayoutOwner->SignalOwner(ESignalEnterSpellMode); } break; @@ -224,7 +250,10 @@ if (event->iCommand == EItutCmdPredictItemSelected) ReportItemSelected(ESignalSelectMatchSelectionText, event->iIndex, ETrue); else if (event->iCommand == EItutCmdEnterSpellMode) + { + StartPreventSCTTimer(); iLayoutOwner->SignalOwner(ESignalEnterSpellMode); + } } else if (aCtrl->ControlId() == ECtrlIdEditorMenu) { @@ -305,7 +334,7 @@ break; case ECmdPenInputFingerMatchIndicator: { - if ( IsPortraitWest() && ( !iDataMgr->IsChineseSpellMode())) + if ( iDataMgr->IsPortraitWest() && ( !iDataMgr->IsChineseSpellMode())) { iWindow->UpdateIndiBubbleL( aData ); } @@ -438,10 +467,6 @@ return iLayoutOwner; } -TBool CGenericItutWindowManager::IsPortraitWest() - { - return !iDataMgr->IsChinese() && !iDataMgr->IsLandScape(); - } void CGenericItutWindowManager::HandleAppInfoChangeL(const TDesC& aInfo) { CGenericItutUiLayout * itutLayoutOwner; @@ -452,7 +477,7 @@ CGenericItutUiMgrBase::EStateSpelling && !iInEditWordQueryDlg) { - if ( IsPortraitWest() && (!iDataMgr->IsChineseSpellMode())) + if ( iDataMgr->IsPortraitWest() && (!iDataMgr->IsChineseSpellMode())) { iWindow->Icf()->HideBubble(); iWindow->SetIndiWithTextFlag( ETrue ); @@ -479,7 +504,7 @@ } else { - if ((!IsPortraitWest()) || iDataMgr->IsChineseSpellMode()) + if ((!iDataMgr->IsPortraitWest()) || iDataMgr->IsChineseSpellMode()) { iWindow->Icf()->HideBubble(); } @@ -701,7 +726,31 @@ manager->HideByteWarningBubble(); return KErrNone; } - + +TBool CGenericItutWindowManager::IsAllowHandleRawKeyEvent() + { + return iAllowHandleRawKeyEvent; + } + +void CGenericItutWindowManager::SetAllowHandleRawKeyEventFlag( TBool aFlag ) + { + iAllowHandleRawKeyEvent = aFlag; + } + +void CGenericItutWindowManager::StartPreventSCTTimer() + { + iAllowHandleRawKeyEvent = EFalse; + + TTimeIntervalMicroSeconds32 t = KSCTPreventTime; + iPreventCSTTimer->Start( t, t, + TCallBack(PreventSCTTimerCallback, this)); + } + +void CGenericItutWindowManager::StopPreventSCTTimer() + { + iPreventCSTTimer->Cancel(); + } + void CGenericItutWindowManager::HideByteWarningBubble() { if (!iInfoTimer) @@ -715,4 +764,9 @@ iWindow->Icf()->HideInfoBubble(); } } + +void CGenericItutWindowManager::CreateKoreanSpecificCtrlsIfNeededL() + { + iWindow->CreateKoreanSpecificCtrlsIfNeededL(); + } // End Of File